Reviewed by Geoff.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Apr 2006 10:33:16 +0000 (10:33 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Apr 2006 10:33:16 +0000 (10:33 +0000)
        - fix testkjs to not show false-positive KJS::Node leaks in debug builds

        * kjs/testkjs.cpp:
        (doIt):
        (kjsmain):

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

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/testkjs.cpp

index b277418d4b3e74713327c26dad9f1906b06393ac..be4d8574daf8aad972ac7402f96e81bd5a6dcdd5 100644 (file)
@@ -1,3 +1,13 @@
+2006-04-13  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Geoff.
+        
+        - fix testkjs to not show false-positive KJS::Node leaks in debug builds
+
+        * kjs/testkjs.cpp:
+        (doIt):
+        (kjsmain):
+
 2006-04-11  Geoffrey Garen  <ggaren@apple.com>
 
         Reviewed by Maciej.
index 4a260d49cd2811604d040157f389aa36da447b91..9b77dd5e8fb8a82a3adb84adf514a4351fee30fa 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include "config.h"
+#include "collector.h"
 
 #include "HashTraits.h"
 #include "JSLock.h"
@@ -35,6 +36,8 @@
 #include <sys/time.h>
 #endif
 
+#include "protect.h"
+
 #if PLATFORM(WIN_OS)
 #include <windows.h>
 #endif
@@ -192,6 +195,48 @@ int main(int argc, char** argv)
     return res;
 }
 
+
+bool doIt(int argc, char** argv)
+{
+  bool success = true;
+  GlobalImp* global = new GlobalImp();
+
+  // create interpreter
+  Interpreter interp(global);
+  // add debug() function
+  global->put(interp.globalExec(), "debug", new TestFunctionImp(TestFunctionImp::Debug, 1));
+  // add "print" for compatibility with the mozilla js shell
+  global->put(interp.globalExec(), "print", new TestFunctionImp(TestFunctionImp::Print, 1));
+  // add "quit" for compatibility with the mozilla js shell
+  global->put(interp.globalExec(), "quit", new TestFunctionImp(TestFunctionImp::Quit, 0));
+  // add "gc" for compatibility with the mozilla js shell
+  global->put(interp.globalExec(), "gc", new TestFunctionImp(TestFunctionImp::GC, 0));
+  // add "version" for compatibility with the mozilla js shell 
+  global->put(interp.globalExec(), "version", new TestFunctionImp(TestFunctionImp::Version, 1));
+  global->put(interp.globalExec(), "run", new TestFunctionImp(TestFunctionImp::Run, 1));
+  
+  Interpreter::setShouldPrintExceptions(true);
+  
+  for (int i = 1; i < argc; i++) {
+    const char* fileName = argv[i];
+    if (strcmp(fileName, "-f") == 0) // mozilla test driver script uses "-f" prefix for files
+      continue;
+    
+    char* script = createStringWithContentsOfFile(fileName);
+    if (!script) {
+      success = false;
+      break; // fail early so we can catch missing files
+    }
+    
+    Completion completion = interp.evaluate(fileName, 0, script);
+    success = success && completion.complType() != Throw;
+    free(script);
+  }
+
+  return success;
+}
+
+
 int kjsmain(int argc, char** argv)
 {
   if (argc < 2) {
@@ -201,46 +246,13 @@ int kjsmain(int argc, char** argv)
 
   testIsInteger();
 
-  bool success = true;
-  {
-    JSLock lock;
-    
-    GlobalImp* global = new GlobalImp();
-
-    // create interpreter
-    Interpreter interp(global);
-    // add debug() function
-    global->put(interp.globalExec(), "debug", new TestFunctionImp(TestFunctionImp::Debug, 1));
-    // add "print" for compatibility with the mozilla js shell
-    global->put(interp.globalExec(), "print", new TestFunctionImp(TestFunctionImp::Print, 1));
-    // add "quit" for compatibility with the mozilla js shell
-    global->put(interp.globalExec(), "quit", new TestFunctionImp(TestFunctionImp::Quit, 0));
-    // add "gc" for compatibility with the mozilla js shell
-    global->put(interp.globalExec(), "gc", new TestFunctionImp(TestFunctionImp::GC, 0));
-    // add "version" for compatibility with the mozilla js shell 
-    global->put(interp.globalExec(), "version", new TestFunctionImp(TestFunctionImp::Version, 1));
-    global->put(interp.globalExec(), "run", new TestFunctionImp(TestFunctionImp::Run, 1));
-
-    Interpreter::setShouldPrintExceptions(true);
-    
-    for (int i = 1; i < argc; i++) {
-      const char* fileName = argv[i];
-      if (strcmp(fileName, "-f") == 0) // mozilla test driver script uses "-f" prefix for files
-        continue;
-      
-      char* script = createStringWithContentsOfFile(fileName);
-      if (!script) {
-        success = false;
-        break; // fail early so we can catch missing files
-      }
+  JSLock lock;
 
-      Completion completion = interp.evaluate(fileName, 0, script);
-      success = success && completion.complType() != Throw;
-      free(script);
-    }
-    
-    delete global;
-  } // end block, so that interpreter gets deleted
+  bool success = doIt(argc, argv);
+
+#ifndef NDEBUG
+  Collector::collect();
+#endif
 
   if (success)
     fprintf(stderr, "OK.\n");