]> git.saurik.com Git - cycript.git/commitdiff
If possible, use the new debug synchronous GC API.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 20 Jan 2014 12:43:48 +0000 (04:43 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 20 Jan 2014 13:43:25 +0000 (05:43 -0800)
Execute.cpp

index a71d29f29ef9268aeeb67eb1845eb95ae2801318..0f7b61b71d3560f14ab1ab39497a85a136fcdf84 100644 (file)
@@ -342,9 +342,10 @@ static JSValueRef $cyq(JSContextRef context, JSObjectRef object, JSObjectRef _th
     return CYCastJSValue(context, name);
 } CYCatch(NULL) }
 
+static void (*JSSynchronousGarbageCollectForDebugging$)(JSContextRef);
 
 void CYGarbageCollect(JSContextRef context) {
-    JSGarbageCollect(context);
+    (JSSynchronousGarbageCollectForDebugging$ ?: &JSGarbageCollect)(context);
 }
 
 static JSValueRef Cycript_gc_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
@@ -1445,6 +1446,7 @@ void CYInitializeDynamic() {
     else return;
 
     JSObjectMakeArray$ = reinterpret_cast<JSObjectRef (*)(JSContextRef, size_t, const JSValueRef[], JSValueRef *)>(dlsym(RTLD_DEFAULT, "JSObjectMakeArray"));
+    JSSynchronousGarbageCollectForDebugging$ = reinterpret_cast<void (*)(JSContextRef)>(dlsym(RTLD_DEFAULT, "JSSynchronousGarbageCollectForDebugging"));
 
     JSClassDefinition definition;