Title: [236791] trunk/Source/_javascript_Core
- Revision
- 236791
- Author
- [email protected]
- Date
- 2018-10-03 05:05:47 -0700 (Wed, 03 Oct 2018)
Log Message
[JSC] Add a C++ callable overload of objectConstructorSeal
https://bugs.webkit.org/show_bug.cgi?id=190137
Patch by Koby Boyango <[email protected]> on 2018-10-03
Reviewed by Yusuke Suzuki.
* runtime/ObjectConstructor.cpp:
* runtime/ObjectConstructor.h:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (236790 => 236791)
--- trunk/Source/_javascript_Core/ChangeLog 2018-10-03 11:03:48 UTC (rev 236790)
+++ trunk/Source/_javascript_Core/ChangeLog 2018-10-03 12:05:47 UTC (rev 236791)
@@ -1,3 +1,13 @@
+2018-10-03 Koby Boyango <[email protected]>
+
+ [JSC] Add a C++ callable overload of objectConstructorSeal
+ https://bugs.webkit.org/show_bug.cgi?id=190137
+
+ Reviewed by Yusuke Suzuki.
+
+ * runtime/ObjectConstructor.cpp:
+ * runtime/ObjectConstructor.h:
+
2018-10-02 Dominik Infuehr <[email protected]>
Fix Disassembler-output on ARM Thumb2
Modified: trunk/Source/_javascript_Core/runtime/ObjectConstructor.cpp (236790 => 236791)
--- trunk/Source/_javascript_Core/runtime/ObjectConstructor.cpp 2018-10-03 11:03:48 UTC (rev 236790)
+++ trunk/Source/_javascript_Core/runtime/ObjectConstructor.cpp 2018-10-03 12:05:47 UTC (rev 236791)
@@ -766,32 +766,37 @@
return true;
}
-EncodedJSValue JSC_HOST_CALL objectConstructorSeal(ExecState* exec)
+JSObject* objectConstructorSeal(ExecState* exec, JSObject* object)
{
VM& vm = exec->vm();
auto scope = DECLARE_THROW_SCOPE(vm);
- // 1. If Type(O) is not Object, return O.
- JSValue obj = exec->argument(0);
- if (!obj.isObject())
- return JSValue::encode(obj);
- JSObject* object = asObject(obj);
-
if (jsDynamicCast<JSFinalObject*>(vm, object) && !hasIndexedProperties(object->indexingType())) {
object->seal(vm);
- return JSValue::encode(obj);
+ return object;
}
bool success = setIntegrityLevel<IntegrityLevel::Sealed>(exec, vm, object);
- RETURN_IF_EXCEPTION(scope, encodedJSValue());
- if (UNLIKELY(!success)) {
- throwTypeError(exec, scope, "Unable to prevent extension in Object.seal"_s);
- return encodedJSValue();
- }
+ RETURN_IF_EXCEPTION(scope, nullptr);
+ if (UNLIKELY(!success))
+ return throwTypeError(exec, scope, "Unable to prevent extension in Object.seal"_s);
- return JSValue::encode(obj);
+ return object;
}
+EncodedJSValue JSC_HOST_CALL objectConstructorSeal(ExecState* exec)
+{
+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ // 1. If Type(O) is not Object, return O.
+ JSValue obj = exec->argument(0);
+ if (!obj.isObject())
+ return JSValue::encode(obj);
+
+ RELEASE_AND_RETURN(scope, JSValue::encode(objectConstructorSeal(exec, asObject(obj))));
+}
+
JSObject* objectConstructorFreeze(ExecState* exec, JSObject* object)
{
VM& vm = exec->vm();
Modified: trunk/Source/_javascript_Core/runtime/ObjectConstructor.h (236790 => 236791)
--- trunk/Source/_javascript_Core/runtime/ObjectConstructor.h 2018-10-03 11:03:48 UTC (rev 236790)
+++ trunk/Source/_javascript_Core/runtime/ObjectConstructor.h 2018-10-03 12:05:47 UTC (rev 236791)
@@ -118,6 +118,7 @@
JS_EXPORT_PRIVATE JSObject* objectConstructorFreeze(ExecState*, JSObject*);
+JS_EXPORT_PRIVATE JSObject* objectConstructorSeal(ExecState*, JSObject*);
JSValue objectConstructorGetOwnPropertyDescriptor(ExecState*, JSObject*, const Identifier&);
JSValue objectConstructorGetOwnPropertyDescriptors(ExecState*, JSObject*);
JSArray* ownPropertyKeys(ExecState*, JSObject*, PropertyNameMode, DontEnumPropertiesMode);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes