Merge branch 'openjdk' into 8u152_1
diff --git a/.hgtags b/.hgtags
index 574308e..aac38dc 100644
--- a/.hgtags
+++ b/.hgtags
@@ -611,6 +611,10 @@
 a010893ca6ee93c1a4832d1c484be6a119ca7ae4 jdk8u102-b13
 0948e61a3722ea7519323dffcce4f26430fe2881 jdk8u102-b14
 908d77c3a01687e99fb426cff41cf000f3f28e68 jdk8u102-b31
+4510fa72a613e8bd8b02f7519362de60907ca652 jdk8u102-b32
+36e3c21b5fcaaa138da59d3b1e72239a2c8b13f6 jdk8u102-b33
+de8a9d055c88ae9373a7be118231b7ccfc662ccb jdk8u102-b34
+8ee63d04b05cd961d6319d852fc0fc47a025ba28 jdk8u102-b35
 9bd5aadd8e739d4ad4bb2e30741cdbe9ae2bae66 jdk8u111-b00
 61e68e59fede0e4700e62b4899ef4553ecbe6bae jdk8u111-b01
 3c500f61258def21887e4026c37353745ce81ab5 jdk8u111-b02
@@ -642,6 +646,21 @@
 b0aa9a71f5fbcb0d58fa009fd9bd3ea0897b315e jdk8u112-b14
 adc75eca17418a42357776339b390533a94541d6 jdk8u112-b15
 d1f2cab06d35f6b7ac29f5c3eebd74a74a01b8fb jdk8u112-b16
+d4beac03b1230ff8c96af79dcd10c56bdc475ebb jdk8u112-b31
+1a484cc1d2ed0540543b0af4ebb8ad83bcb1c667 jdk8u121-b00
+8f5fafa7e43b0b2472b077ea8f9b241976e1ea82 jdk8u121-b01
+33bf988e6f1a2a2fa1dcec66da79a5411df6dcd5 jdk8u121-b02
+112c17eb13c7c1952b9ccb377185268f77edc97e jdk8u121-b03
+31dad6c4e1be1b0ec7e4365932bb783c643b7c53 jdk8u121-b04
+465b06ac76296f329049a34d33d1ec00c800511b jdk8u121-b05
+c8fe62b47c8f065029c710e35aa61562b6550da1 jdk8u121-b06
+a32b4f984a18a7f9f6b412bf91c1a382df40d5ab jdk8u121-b07
+937cd79f7cfb27134f4ae24ad9f57bd1d9ed0f83 jdk8u121-b08
+3b222c098080d9fba2ad028b64e0edfef4d9dfcd jdk8u121-b09
+23970322bf063b36c0aefe103540618bb64a82af jdk8u121-b10
+fe53d09bdd8f4309ce3f79e9dc4c512639de2610 jdk8u121-b11
+89c0a71eeb4ae2011e7ed10f36e79b5184c7827b jdk8u121-b12
+fd548ea7e156aba26836084b838df5e90b90b6ba jdk8u121-b13
 18eb73eb84c5395b3efcafa43ce224565eca02b3 jdk8u122-b00
 9e615ea961fe5732813ed7b273606e7337ea2234 jdk8u122-b01
 2f0b11882cb7ddb10e35682ab9e8343919a71c54 jdk8u122-b02
@@ -653,3 +672,4 @@
 3c3b4e793e7c6255a840844db077ef466940035c jdk8u122-b04
 30dc0c72f3d0aff34b6d421208b18f384d05d761 jdk8u132-b00
 91d33aea2714e63796eeab0e63e38c9d2568c00c jdk8u152-b00
+50dac2fd8689dbb820d887ce3919708d5d042891 jdk8u152-b01
diff --git a/src/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java b/src/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java
index 7eb23a9..8de9197 100644
--- a/src/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java
+++ b/src/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java
@@ -175,6 +175,8 @@
             final int index = getIndex((Number)key);
             if (index > -1) {
                 return ((JSObject)jsobj).getSlot(index);
+            } else {
+                return ((JSObject)jsobj).getMember(JSType.toString(key));
             }
         } else if (isString(key)) {
             final String name = key.toString();
@@ -192,7 +194,12 @@
         if (key instanceof Integer) {
             ((JSObject)jsobj).setSlot((Integer)key, value);
         } else if (key instanceof Number) {
-            ((JSObject)jsobj).setSlot(getIndex((Number)key), value);
+            final int index = getIndex((Number)key);
+            if (index > -1) {
+                ((JSObject)jsobj).setSlot(index, value);
+            } else {
+                ((JSObject)jsobj).setMember(JSType.toString(key), value);
+            }
         } else if (isString(key)) {
             ((JSObject)jsobj).setMember(key.toString(), value);
         }
diff --git a/test/script/basic/JDK-8176511.js b/test/script/basic/JDK-8176511.js
new file mode 100644
index 0000000..08fbd55
--- /dev/null
+++ b/test/script/basic/JDK-8176511.js
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * 
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ * 
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ * 
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * 
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * JDK-8176511: JSObject property access is broken for numeric keys outside the int range
+ *
+ * @test
+ * @run
+ */
+
+
+var reassignWithNewGlobal = loadWithNewGlobal({
+    script: '(function (o, i) { o[i] = o[i]; })', name: 'internal.js'
+
+});
+
+function test(i) {
+    var o = {};
+    o[i] = true;
+    var before = JSON.stringify(o);
+    reassignWithNewGlobal(o, i);
+    var after = JSON.stringify(o);
+    Assert.assertEquals(before, after);
+}
+
+test(-2147483649);
+test(-2147483648);
+test(2147483647);
+test(2147483648);
+