Hi all,

I am writing a GUI based debugger for V8 and I use it a lot with
nodejs.  There is one major problem I am running into ... SlowBuffer
is killing my debugger performance.  The reason is so: when a
breakpoint is triggered, I request the callstack for the breakpoint.
When you request the callstack from v8 it also gives you the values of
any local variables within the frame.  If SlowBuffer happens to be one
of those local variables it will serialize the object into a JSON
object and send it over the port.  Since the object is pretty large
and each byte entry in slow buffer will be converted into a json named
value pair of { name:1234, value:123}, this makes for a LOT text
streaming out of V8 and the callstack command can take upwards to
30-60 seconds depending on the machine.

We are currently modifying nodejs/v8 so that if object returned is a
"SlowBuffer" then it will not return the properties of the object when
a callstack is requested.  If such a change is made would that be
something that could be taken into the mainline of nodejs?  The other
option would be to not attach the elements directly to the SlowBuffer
object.  So if SlowBuffer had a "data" member object, and all the byte
data elements would attach to it instead, the debugger would not hit
the performance slowdown (this is because V8 will only serialize one
level deep into the object members).

Thanks,

-Chris

Reply via email to