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

Reply via email to