Mercurial > spidermonkey-playground
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)) {