changeset 72:eca8642eed4a

Made memory_profiler.cpp use TCB.cpp for the construction of its global object.
author Atul Varma <varmaa@toolness.com>
date Thu, 25 Jun 2009 18:16:41 -0700
parents e4aec93c1e3c
children b87b6ebb6e86
files memory_profiler.cpp
diffstat 1 files changed, 6 insertions(+), 55 deletions(-) [+]
line wrap: on
line diff
--- a/memory_profiler.cpp	Thu Jun 25 18:12:23 2009 -0700
+++ b/memory_profiler.cpp	Thu Jun 25 18:16:41 2009 -0700
@@ -1,45 +1,11 @@
 #include "jsdhash.h"
-#include "jsdbgapi.h"
 
+#include "tcb.h"
 #include "memory_profiler.h"
 #include "server_socket.h"
 
 #define SERVER_FILENAME "memory_profiler_server.js"
 
-// TODO: Lots of code here is copied from spidermonkey-playground.cpp; we should
-// consolidate it.
-
-/* The error reporter callback. */
-static void reportError(JSContext *cx, const char *message, JSErrorReport *report)
-{
-    fprintf(stderr, "%s:%u:%s\n",
-            report->filename ? report->filename : "<no filename>",
-            (unsigned int) report->lineno,
-            message);
-}
-
-static JSClass global_class = {
-  "serverGlobal", JSCLASS_GLOBAL_FLAGS,
-  JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
-  JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub,
-  JSCLASS_NO_OPTIONAL_MEMBERS
-};
-
-// This native JS function prints the given string to the console.
-
-static JSBool print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
-                    jsval *rval)
-{
-  char *str;
-
-  if (!JS_ConvertArguments(cx, argc, argv, "s", &str))
-    return JS_FALSE;
-
-  printf("%s\n", str);
-
-  return JS_TRUE;
-}
-
 // Private structure to track the state of tracing the JS heap.
 
 typedef struct TracingState {
@@ -330,7 +296,6 @@
 }
 
 static JSFunctionSpec server_global_functions[] = {
-  JS_FS("print",          print,              1, 0, 0),
   JS_FS("ServerSocket",   createServerSocket, 0, 0, 0),
   JS_FS("getGCRoots",     getGCRoots,         0, 0, 0),
   JS_FS("getObjectInfo",  getObjInfo,         1, 0, 0),
@@ -369,30 +334,17 @@
   }
   JS_SetOptions(serverCx, JSOPTION_VAROBJFIX);
   JS_SetVersion(serverCx, JSVERSION_LATEST);
-  JS_SetErrorReporter(serverCx, reportError);
 
   JS_BeginRequest(serverCx);
 
-#ifdef DEBUG
-  JS_SetGCZeal(serverCx, 2);
-#endif
-
-  JSObject *serverGlobal = JS_NewObject(serverCx, &global_class, NULL, NULL);
-
-  if (serverGlobal == NULL) {
-    JS_ReportError(cx, "Couldn't create server JS global.");
+  jsval serverRval;
+  if (!TCB_init(serverCx, &serverRval))
     return JS_FALSE;
-  }
 
-  if (!JS_InitStandardClasses(serverCx, serverGlobal)) {
-    JS_ReportError(cx, "Couldn't init standard classes on server JS global.");
+  JSObject *serverGlobal = JSVAL_TO_OBJECT(serverRval);
+
+  if (!JS_DefineFunctions(serverCx, serverGlobal, server_global_functions))
     return JS_FALSE;
-  }
-
-  if (!JS_DefineFunctions(serverCx, serverGlobal, server_global_functions)) {
-    JS_ReportError(cx, "Couldn't define functions on server JS global.");
-    return JS_FALSE;
-  }
 
   FILE *f = fopen(SERVER_FILENAME, "r");
   if (!f) {
@@ -408,7 +360,6 @@
   fread(source, fileSize, 1, f);
   fclose(f);
 
-  jsval serverRval;
   if (!JS_EvaluateScript(serverCx, serverGlobal, source,
                          fileSize, SERVER_FILENAME, 1,
                          &serverRval)) {