]> git.saurik.com Git - cycript.git/commitdiff
Move number's typeid set to FromFFI from Type_new.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 9 Jan 2016 15:30:44 +0000 (07:30 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 9 Jan 2016 15:30:44 +0000 (07:30 -0800)
Execute.cpp

index 3399c86fb644db7d9022db7729245bb0d0056253..c19dc76cafb49e9d2b59e15ad7ad1407a0c5123b 100644 (file)
@@ -854,10 +854,12 @@ void Function::PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *
 #define CYFromFFI_(Type_) \
 template <> \
 JSValueRef Primitive<Type_>::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const { \
-    return CYCastJSValue(context, *reinterpret_cast<Type_ *>(data)); \
+    JSValueRef value(CYCastJSValue(context, *reinterpret_cast<Type_ *>(data))); \
+    JSObjectRef typed(_jsccall(JSObjectCallAsConstructor, context, CYGetCachedObject(context, CYJSString("Number")), 1, &value)); \
+    CYSetProperty(context, typed, cyt_s, CYMakeType(context, *this), kJSPropertyAttributeDontEnum); \
+    return typed; \
 }
 
-CYFromFFI_(bool)
 CYFromFFI_(wchar_t)
 CYFromFFI_(float)
 CYFromFFI_(double)
@@ -880,6 +882,11 @@ CYFromFFI_(signed __int128)
 CYFromFFI_(unsigned __int128)
 #endif
 
+template <>
+JSValueRef Primitive<bool>::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const {
+    return CYCastJSValue(context, *reinterpret_cast<bool *>(data));
+}
+
 template <>
 JSValueRef Primitive<char>::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const {
     uint16_t string(uint8_t(*reinterpret_cast<char *>(data)));
@@ -1706,13 +1713,6 @@ static JSValueRef Type_callAsFunction(JSContextRef context, JSObjectRef object,
 
     type->PoolFFI(buffer, context, ffi, data, arguments[0]);
     JSValueRef value(type->FromFFI(context, ffi, data, false, buffer));
-
-    if (JSValueGetType(context, value) == kJSTypeNumber) {
-        JSObjectRef typed(_jsccall(JSObjectCallAsConstructor, context, CYGetCachedObject(context, CYJSString("Number")), 1, &value));
-        CYSetProperty(context, typed, cyt_s, object, kJSPropertyAttributeDontEnum);
-        value = typed;
-    }
-
     return value;
 } CYCatch(NULL) }