Modified: branches/safari-604.4.7.1-branch/Source/_javascript_Core/ChangeLog (224476 => 224477)
--- branches/safari-604.4.7.1-branch/Source/_javascript_Core/ChangeLog 2017-11-06 03:59:43 UTC (rev 224476)
+++ branches/safari-604.4.7.1-branch/Source/_javascript_Core/ChangeLog 2017-11-06 04:10:13 UTC (rev 224477)
@@ -1,5 +1,9 @@
2017-11-05 Jason Marcell <[email protected]>
+ Revert r224473. rdar://problem/35296413
+
+2017-11-05 Jason Marcell <[email protected]>
+
Cherry-pick r224416. rdar://problem/35296413
2017-11-03 Keith Miller <[email protected]>
Modified: branches/safari-604.4.7.1-branch/Source/_javascript_Core/runtime/JSObject.cpp (224476 => 224477)
--- branches/safari-604.4.7.1-branch/Source/_javascript_Core/runtime/JSObject.cpp 2017-11-06 03:59:43 UTC (rev 224476)
+++ branches/safari-604.4.7.1-branch/Source/_javascript_Core/runtime/JSObject.cpp 2017-11-06 04:10:13 UTC (rev 224477)
@@ -771,23 +771,17 @@
JSValue gs = obj->getDirect(offset);
if (gs.isGetterSetter()) {
- // We need to make sure that we decide to cache this property before we potentially execute aribitrary JS.
+ bool result = callSetter(exec, slot.thisValue(), gs, value, slot.isStrictMode() ? StrictMode : NotStrictMode);
if (!structure()->isDictionary())
slot.setCacheableSetter(obj, offset);
-
- bool result = callSetter(exec, slot.thisValue(), gs, value, slot.isStrictMode() ? StrictMode : NotStrictMode);
- RETURN_IF_EXCEPTION(scope, false);
return result;
}
if (gs.isCustomGetterSetter()) {
- // We need to make sure that we decide to cache this property before we potentially execute aribitrary JS.
+ bool result = callCustomSetter(exec, gs, attributes & CustomAccessor, obj, slot.thisValue(), value);
if (attributes & CustomAccessor)
slot.setCustomAccessor(obj, jsCast<CustomGetterSetter*>(gs.asCell())->setter());
else
slot.setCustomValue(obj, jsCast<CustomGetterSetter*>(gs.asCell())->setter());
-
- bool result = callCustomSetter(exec, gs, attributes & PropertyAttribute::CustomAccessor, obj, slot.thisValue(), value);
- RETURN_IF_EXCEPTION(scope, false);
return result;
}
ASSERT(!(attributes & Accessor));
Modified: branches/safari-604.4.7.1-branch/Source/_javascript_Core/runtime/Lookup.h (224476 => 224477)
--- branches/safari-604.4.7.1-branch/Source/_javascript_Core/runtime/Lookup.h 2017-11-06 03:59:43 UTC (rev 224476)
+++ branches/safari-604.4.7.1-branch/Source/_javascript_Core/runtime/Lookup.h 2017-11-06 04:10:13 UTC (rev 224477)
@@ -284,14 +284,11 @@
ASSERT_WITH_MESSAGE(!(entry->attributes() & DOMJITAttribute), "DOMJITAttribute supports readonly attributes currently.");
bool isAccessor = entry->attributes() & CustomAccessor;
JSValue updateThisValue = entry->attributes() & CustomAccessor ? slot.thisValue() : JSValue(base);
- // We need to make sure that we decide to cache this property before we potentially execute aribitrary JS.
+ bool result = callCustomSetter(exec, entry->propertyPutter(), isAccessor, updateThisValue, value);
if (isAccessor)
slot.setCustomAccessor(base, entry->propertyPutter());
else
slot.setCustomValue(base, entry->propertyPutter());
-
- bool result = callCustomSetter(exec, entry->propertyPutter(), isAccessor, updateThisValue, value);
- RETURN_IF_EXCEPTION(scope, false);
return result;
}