[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/khtml/ecma
From:       Maks Orlovich <maksim () kde ! org>
Date:       2010-06-10 15:56:44
Message-ID: 20100610160346.85847AC8CF () svn ! kde ! org
[Download RAW message or body]

SVN commit 1136735 by orlovich:

Don't rely on having an interpreter to mark scriptable ops.


 M  +0 -2      kjs_binding.cpp  
 M  +15 -1     kjs_scriptable.cpp  


--- trunk/KDE/kdelibs/khtml/ecma/kjs_binding.cpp #1136734:1136735
@@ -113,8 +113,6 @@
         obj->mark();
     ++it;
   }
-
-  ScriptableOperations::self()->mark();
 }
 
 KParts::ReadOnlyPart* ScriptInterpreter::part() const {
--- trunk/KDE/kdelibs/khtml/ecma/kjs_scriptable.cpp #1136734:1136735
@@ -461,10 +461,24 @@
     return s_importedFunctions;
 }
 
+// A little helper for marking exportedObjects. We need this since we have
+// an unclear runtime with respect to interpreter.
+class ScriptableOperationsMarker: public JSObject
+{
+public:
+    virtual void mark() {
+        JSObject::mark();
+        ScriptableOperations::self()->mark();
+    }
+};
+
 QHash<JSObject*, int>* ScriptableOperations::exportedObjects()
 {
-    if (!s_exportedObjects)
+    if (!s_exportedObjects) {
         s_exportedObjects = new QHash<JSObject*, int>;
+
+        gcProtect(new ScriptableOperationsMarker());
+    }
     return s_exportedObjects;
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic