Assert JSValues can fit into a pointer when API casting
authorkeith_miller@apple.com <keith_miller@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 3 Nov 2018 01:52:35 +0000 (01:52 +0000)
committerkeith_miller@apple.com <keith_miller@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 3 Nov 2018 01:52:35 +0000 (01:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191220

Reviewed by Michael Saboff.

* API/APICast.h:
(toJS):
(toJSForGC):
(toRef):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237764 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/API/APICast.h
Source/JavaScriptCore/ChangeLog

index 59202c6..0c9c7e9 100644 (file)
@@ -79,6 +79,7 @@ inline JSC::JSValue toJS(JSC::ExecState* exec, JSValueRef v)
     else
         result = jsCell;
 #else
+    static_assert(sizeof(OpaqueJSValue*) == sizeof(JSC::JSValue), "JSValue needs to fit into a boxed pointer");
     JSC::JSValue result = JSC::JSValue::decode(reinterpret_cast<JSC::EncodedJSValue>(const_cast<OpaqueJSValue*>(v)));
 #endif
     if (!result)
@@ -97,6 +98,7 @@ inline JSC::JSValue toJSForGC(JSC::ExecState* exec, JSValueRef v)
         return JSC::JSValue();
     JSC::JSValue result = jsCell;
 #else
+    static_assert(sizeof(OpaqueJSValue*) == sizeof(JSC::JSValue), "JSValue needs to fit into a boxed pointer");
     JSC::JSValue result = JSC::JSValue::decode(reinterpret_cast<JSC::EncodedJSValue>(const_cast<OpaqueJSValue*>(v)));
 #endif
     if (result && result.isCell())
@@ -138,6 +140,7 @@ inline JSValueRef toRef(JSC::ExecState* exec, JSC::JSValue v)
         return reinterpret_cast<JSValueRef>(JSC::jsAPIValueWrapper(exec, v).asCell());
     return reinterpret_cast<JSValueRef>(v.asCell());
 #else
+    static_assert(sizeof(OpaqueJSValue*) == sizeof(JSC::JSValue), "JSValue needs to fit into a boxed pointer");
     UNUSED_PARAM(exec);
     return reinterpret_cast<JSValueRef>(JSC::JSValue::encode(v));
 #endif
index e492b9c..cd60700 100644 (file)
@@ -1,3 +1,15 @@
+2018-11-02  Keith Miller  <keith_miller@apple.com>
+
+        Assert JSValues can fit into a pointer when API casting
+        https://bugs.webkit.org/show_bug.cgi?id=191220
+
+        Reviewed by Michael Saboff.
+
+        * API/APICast.h:
+        (toJS):
+        (toJSForGC):
+        (toRef):
+
 2018-11-02  Michael Saboff  <msaboff@apple.com>
 
         Rolling in r237753 with unreviewed build fix.