From: Lars Knoll Date: Sat, 9 Mar 2013 22:18:25 +0000 (+0100) Subject: Fix v8::Persistent X-Git-Tag: upstream/5.2.1~669^2~659^2~116 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7ac91e56720c70726d81875a94c5b88d7afd3cac;p=platform%2Fupstream%2Fqtdeclarative.git Fix v8::Persistent Implement it in a similar way as PersistentValue Change-Id: If4adba61a8bfedce657f07ee24662c3b13384fd9 Reviewed-by: Simon Hausmann --- diff --git a/src/v4/qv4v8.cpp b/src/v4/qv4v8.cpp index bed2bf1..0bf4f13 100644 --- a/src/v4/qv4v8.cpp +++ b/src/v4/qv4v8.cpp @@ -69,18 +69,29 @@ namespace v8 { #define ValuePtr(obj) reinterpret_cast(obj) #define ConstValuePtr(obj) reinterpret_cast(obj) -void gcProtect(void *handle) +void *gcProtect(void *handle) { Q_D(handle); - if (VM::Managed *m = d->asManaged()) + if (VM::Managed *m = d->asManaged()) { currentEngine()->memoryManager->protect(m); + return currentEngine()->memoryManager; + } +} + +void gcProtect(void *memoryManager, void *handle) +{ + Q_D(handle); + if (VM::Managed *m = d->asManaged()) + if (memoryManager) + static_cast(memoryManager)->protect(m); } -void gcUnprotect(void *handle) +void gcUnprotect(void *memoryManager, void *handle) { Q_D(handle); if (VM::Managed *m = d->asManaged()) - currentEngine()->memoryManager->unprotect(m); + if (memoryManager) + static_cast(memoryManager)->unprotect(m); } struct V8AccessorGetter: FunctionObject { @@ -177,6 +188,7 @@ Local