1792 final String name = desc.getNameToken(CallSiteDescriptor.NAME_OPERAND); |
1792 final String name = desc.getNameToken(CallSiteDescriptor.NAME_OPERAND); |
1793 if (NashornCallSiteDescriptor.isStrict(desc)) { |
1793 if (NashornCallSiteDescriptor.isStrict(desc)) { |
1794 typeError(Context.getGlobal(), strictErrorMessage, name, ScriptRuntime.safeToString((this))); |
1794 typeError(Context.getGlobal(), strictErrorMessage, name, ScriptRuntime.safeToString((this))); |
1795 } |
1795 } |
1796 assert canBeFastScope || !NashornCallSiteDescriptor.isFastScope(desc); |
1796 assert canBeFastScope || !NashornCallSiteDescriptor.isFastScope(desc); |
1797 final PropertyMap map = getMap(); |
1797 final PropertyMap myMap = getMap(); |
1798 return new GuardedInvocation(Lookup.EMPTY_SETTER, map.getProtoGetSwitchPoint(name), NashornGuards.getMapGuard(map)); |
1798 return new GuardedInvocation(Lookup.EMPTY_SETTER, myMap.getProtoGetSwitchPoint(name), NashornGuards.getMapGuard(myMap)); |
1799 } |
1799 } |
1800 |
1800 |
1801 @SuppressWarnings("unused") |
1801 @SuppressWarnings("unused") |
1802 private static void setEmbed(final CallSiteDescriptor desc, final PropertyMap oldMap, final PropertyMap newMap, final MethodHandle setter, final int i, final Object self, final Object value) throws Throwable { |
1802 private static void setEmbed(final CallSiteDescriptor desc, final PropertyMap oldMap, final PropertyMap newMap, final MethodHandle setter, final int i, final Object self, final Object value) throws Throwable { |
1803 final ScriptObject obj = (ScriptObject)self; |
1803 final ScriptObject obj = (ScriptObject)self; |
1804 if(obj.trySetEmbedOrSpill(desc, oldMap, newMap, value)) { |
1804 if (obj.trySetEmbedOrSpill(desc, oldMap, newMap, value)) { |
1805 obj.useEmbed(i); |
1805 obj.useEmbed(i); |
1806 setter.invokeExact(self, value); |
1806 setter.invokeExact(self, value); |
1807 } |
1807 } |
1808 } |
1808 } |
1809 |
1809 |
1810 @SuppressWarnings("unused") |
1810 @SuppressWarnings("unused") |
1811 private static void setSpill(final CallSiteDescriptor desc, final PropertyMap oldMap, final PropertyMap newMap, final int index, final Object self, final Object value) { |
1811 private static void setSpill(final CallSiteDescriptor desc, final PropertyMap oldMap, final PropertyMap newMap, final int index, final Object self, final Object value) { |
1812 final ScriptObject obj = (ScriptObject)self; |
1812 final ScriptObject obj = (ScriptObject)self; |
1813 if(obj.trySetEmbedOrSpill(desc, oldMap, newMap, value)) { |
1813 if (obj.trySetEmbedOrSpill(desc, oldMap, newMap, value)) { |
1814 obj.spill[index] = value; |
1814 obj.spill[index] = value; |
1815 } |
1815 } |
1816 } |
1816 } |
1817 |
1817 |
1818 private boolean trySetEmbedOrSpill(final CallSiteDescriptor desc, final PropertyMap oldMap, final PropertyMap newMap, final Object value) { |
1818 private boolean trySetEmbedOrSpill(final CallSiteDescriptor desc, final PropertyMap oldMap, final PropertyMap newMap, final Object value) { |