changeset 1660:0fe957cacc1e

Merge
author asaha
date Sun, 20 Sep 2015 23:03:28 -0700
parents 9b9565054f13 (current diff) 126df6b4ff17 (diff)
children b8987f466586
files .hgtags
diffstat 2 files changed, 31 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Mon Aug 31 14:50:39 2015 -0700
+++ b/.hgtags	Sun Sep 20 23:03:28 2015 -0700
@@ -341,6 +341,7 @@
 34a64e22b81bd78cf29603a80ff1f4cfc1694df8 jdk8u31-b31
 d2b5784a3452a4fd9d1ccfefe93ee2d36662842c jdk8u31-b32
 c6dd08613a440ed8d0f1b14b85911d6f3826e1d4 jdk8u31-b33
+e92af20b58190a0fa46c2c93636368866e274b39 jdk8u31-b34
 f2925491b61b22ac42f8c30ee9c6723ffa401a4c jdk8u40-b00
 62468d841b842769d875bd97d10370585c296eb7 jdk8u40-b01
 b476c69c820ac1e05071f4de5abab8e2dff80e87 jdk8u40-b02
@@ -412,6 +413,8 @@
 4cbc78843829b3f6de43b3c056565834008419a6 jdk8u51-b15
 f01ca5e6b907d1fc2c17068fb28a74411e833f16 jdk8u51-b16
 4e5f9de7a3dfd0c4e15714863007ac591e9dffea jdk8u51-b31
+009644f58d73263eec2582a84a1e9b63975c5387 jdk8u51-b32
+eac4b87f86dde817023a07dcb701dc5d986b705f jdk8u51-b33
 6ec61d2494283fbaca6df227f1a5b45487dc1ca7 jdk8u60-b00
 af290f203369ecf8e67b89c4a3a8df0bf535230e jdk8u60-b01
 39e0c14d45c3fee93a29993f1415b3393d03483f jdk8u60-b02
@@ -440,6 +443,8 @@
 371f3f83f773ec97491d994bbcce834f0a2cca74 jdk8u60-b25
 58791cd01bc9aa973d8845ce63403b90d357b5ac jdk8u60-b26
 72a33aed7dccf570f4e05ea1121522a88ac190b2 jdk8u60-b27
+fc0045a6aaeee45f5d2505a2f7a07ec6cd6f56bc jdk8u60-b31
+2d161c9248ca7bf5779cf33c45768e26c1161eb4 jdk8u60-b32
 afc8b472a5f3d54734be29aa9c4f617191fc9246 jdk8u52-b06
 8cd2d9bea168694db5f090b30ba5973e1656385b jdk8u52-b07
 afc8b472a5f3d54734be29aa9c4f617191fc9246 jdk8u65-b00
@@ -455,6 +460,8 @@
 be2856f5c3e4ced88259759201fbb3d5c0e4db94 jdk8u65-b10
 6a809be8e2057b290871707aeaadf79679afbf90 jdk8u65-b11
 b9bc29802d24cf3e82f0b435c82d567e27373aa6 jdk8u65-b12
+5ad3832ac8d01656ec28d03f81042f2672360219 jdk8u65-b13
+1448629ede5316a04b15f66667a8cfc4bd1b5009 jdk8u65-b14
 9ed906919b5d92067edcdd966a3f413fca0f70ab jdk8u66-b00
 c0f0613d1b1119afc9446eb187a2a7b5f534f050 jdk8u66-b01
 16220ab541af04fe79d9143fb62854f7acf46eca jdk8u66-b02
@@ -464,4 +471,6 @@
 998d6b5b976ba8db410b9f8cccf1cc927280b542 jdk8u66-b10
 46022f24d619e56ff41a432a5211bd9560d3e237 jdk8u66-b11
 2bdd08a9cc8ca594723e412cc9479f4f7351959f jdk8u66-b12
+cd562acc692c5ea4d5e3ea5164757f1b7e00e274 jdk8u66-b13
+165ed6982da8dc7dc5562d5b4a8f07dba55c7448 jdk8u66-b14
 a7ac4116ee88aa86fec5ac66901302e11f578172 jdk8u71-b00
--- a/src/jdk/nashorn/internal/runtime/UserAccessorProperty.java	Mon Aug 31 14:50:39 2015 -0700
+++ b/src/jdk/nashorn/internal/runtime/UserAccessorProperty.java	Sun Sep 20 23:03:28 2015 -0700
@@ -24,7 +24,6 @@
  */
 
 package jdk.nashorn.internal.runtime;
-
 import static jdk.nashorn.internal.lookup.Lookup.MH;
 import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
@@ -34,6 +33,7 @@
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
 import java.lang.invoke.MethodType;
+import java.util.concurrent.Callable;
 import jdk.nashorn.internal.lookup.Lookup;
 import jdk.nashorn.internal.runtime.linker.Bootstrap;
 import jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor;
@@ -80,6 +80,15 @@
     private final static MethodHandle INVOKE_LONG_SETTER = findOwnMH_S("invokeLongSetter", void.class, Accessors.class, MethodHandle.class, String.class, Object.class, long.class);
     private final static MethodHandle INVOKE_NUMBER_SETTER = findOwnMH_S("invokeNumberSetter", void.class, Accessors.class, MethodHandle.class, String.class, Object.class, double.class);
 
+    private static final Object OBJECT_GETTER_INVOKER_KEY = new Object();
+    private static MethodHandle getObjectGetterInvoker() {
+        return Context.getGlobal().getDynamicInvoker(OBJECT_GETTER_INVOKER_KEY, new Callable<MethodHandle>() {
+            @Override
+            public MethodHandle call() throws Exception {
+                return getINVOKE_UA_GETTER(Object.class, INVALID_PROGRAM_POINT);
+            }
+        });
+    }
 
     static MethodHandle getINVOKE_UA_GETTER(final Class<?> returnType, final int programPoint) {
         if (UnwarrantedOptimismException.isValid(programPoint)) {
@@ -90,6 +99,16 @@
         }
     }
 
+    private static final Object OBJECT_SETTER_INVOKER_KEY = new Object();
+    private static MethodHandle getObjectSetterInvoker() {
+        return Context.getGlobal().getDynamicInvoker(OBJECT_SETTER_INVOKER_KEY, new Callable<MethodHandle>() {
+            @Override
+            public MethodHandle call() throws Exception {
+                return getINVOKE_UA_SETTER(Object.class);
+            }
+        });
+    }
+
     static MethodHandle getINVOKE_UA_SETTER(final Class<?> valueType) {
         return Bootstrap.createDynamicInvoker("dyn:call", void.class, Object.class, Object.class, valueType);
     }
@@ -181,7 +200,7 @@
     @Override
     public Object getObjectValue(final ScriptObject self, final ScriptObject owner) {
         try {
-            return invokeObjectGetter(getAccessors((owner != null) ? owner : self), getINVOKE_UA_GETTER(Object.class, INVALID_PROGRAM_POINT), self);
+            return invokeObjectGetter(getAccessors((owner != null) ? owner : self), getObjectGetterInvoker(), self);
         } catch (final Error | RuntimeException t) {
             throw t;
         } catch (final Throwable t) {
@@ -207,7 +226,7 @@
     @Override
     public void setValue(final ScriptObject self, final ScriptObject owner, final Object value, final boolean strict) {
         try {
-            invokeObjectSetter(getAccessors((owner != null) ? owner : self), getINVOKE_UA_SETTER(Object.class), strict ? getKey() : null, self, value);
+            invokeObjectSetter(getAccessors((owner != null) ? owner : self), getObjectSetterInvoker(), strict ? getKey() : null, self, value);
         } catch (final Error | RuntimeException t) {
             throw t;
         } catch (final Throwable t) {