Mercurial > spidermonkey-playground
diff memory_profiler.cpp @ 55:1aba1b7a0a2c
Added a 'nativeClass' property to object info method.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Wed, 24 Jun 2009 18:32:14 -0700 |
parents | c451579bf83c |
children | b36c15de56f6 |
line wrap: on
line diff
--- a/memory_profiler.cpp Wed Jun 24 18:15:03 2009 -0700 +++ b/memory_profiler.cpp Wed Jun 24 18:32:14 2009 -0700 @@ -81,8 +81,6 @@ return; } entry->key = thing; - JSObject *obj = (JSObject *) thing; - // TODO: Do something? JS_TraceChildren(trc, thing, kind); } break; @@ -125,6 +123,23 @@ if (JS_DHASH_ENTRY_IS_BUSY((JSDHashEntryHdr *)entry)) { JSObject *info = JS_NewObject(cx, NULL, NULL, NULL); + + JSObject *target = (JSObject *) id; + JSClass *classp = JS_GET_CLASS(tracingState.tracer.context, target); + if (classp != NULL) { + // TODO: Should really be using an interned string here or something. + JSString *name = JS_NewStringCopyZ(cx, classp->name); + if (name == NULL) { + JS_ReportOutOfMemory(cx); + return JS_FALSE; + } + if (!JS_DefineProperty(cx, info, "nativeClass", STRING_TO_JSVAL(name), + NULL, NULL, JSPROP_ENUMERATE)) { + JS_ReportOutOfMemory(cx); + return JS_FALSE; + } + } + *rval = OBJECT_TO_JSVAL(info); } else *rval = JSVAL_NULL;