Make static_asserts in APICast into bitwise_cast
authorkeith_miller@apple.com <keith_miller@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Nov 2018 19:21:36 +0000 (19:21 +0000)
committerkeith_miller@apple.com <keith_miller@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Nov 2018 19:21:36 +0000 (19:21 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191272

Reviewed by Filip Pizlo.

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

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

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

index 0c9c7e9..3b55911 100644 (file)
@@ -79,8 +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)));
+    JSC::JSValue result = bitwise_cast<JSC::JSValue>(v);
 #endif
     if (!result)
         return JSC::jsNull();
@@ -98,8 +97,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)));
+    JSC::JSValue result = bitwise_cast<JSC::JSValue>(v);
 #endif
     if (result && result.isCell())
         RELEASE_ASSERT(result.asCell()->methodTable(exec->vm()));
@@ -140,9 +138,8 @@ 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));
+    return bitwise_cast<JSValueRef>(v);
 #endif
 }
 
index ac49085..2d6a60b 100644 (file)
@@ -1,3 +1,15 @@
+2018-11-05  Keith Miller  <keith_miller@apple.com>
+
+        Make static_asserts in APICast into bitwise_cast
+        https://bugs.webkit.org/show_bug.cgi?id=191272
+
+        Reviewed by Filip Pizlo.
+
+        * API/APICast.h:
+        (toJS):
+        (toJSForGC):
+        (toRef):
+
 2018-11-05  Dominik Infuehr  <dinfuehr@igalia.com>
 
         Enable LLInt on ARMv7/Linux