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;