pjs/js/jsd
timeless%mozdev.org bbcb39000d Bug 421303 Crash [@ jsds_ScriptHookProc]
r=caillon a=dsicore

If we reach ~jsdService, that means our client doesn't care about us, so we can
(and should) drop all references to any callbacks (if they cared, they'd have
kept us alive!*).

I think jsdService::Off should clear all the hooks, the strange magic of not
clearing it isn't really a great idea. So for Off, we'll now clear the
ScriptHook too (consumers who use off should really drop any references they
have to our objects...). I'm still on the fence on this point, I suspect we can
actually move it from ::Off to ~jsdService (it must be cleared at some point,
otherwise if jsd_xpc's library manages to get unloaded, the function pointer
would be invalid, which would be *BAD*).

jsds_NotifyPendingDeadScripts needs to clear gDeadScripts whether or not
there's a service or hooks, so it does. Because it's a static callback and
because of the scary way GC works, I'd rather ensure (deathgrip) that jsds is
available (and consistent!) for the duration of the function call. The code
already handles the lack of a hook, so there's no reason to do magical
returns....

The real problem which mayhemer found was that jsdService::Off was returning
early (failure) because gGCStatus wasn't JSGC_END when called from ~jsdService
from JS_GC from the cyclecollector, so we make sure that ~jsdService forces
::Off to act as if it is JSGC_END (after ensuring that there are no callbacks
available).

* a pure javascript (xpcom component, not DOM hosted!) version of a jsdService
consumer means that jsdService will need to talk to the CycleCollector
eventually (this is another bug for the future).
2008-03-11 00:13:48 +00:00
..
classes
corba
idl Bug 378261: Replacing GC_MARK_DEBUG by DumpHeap. r=brendan 2007-04-25 13:43:18 +00:00
java
javawrap
jsdb Bug 421044 get jsdb to finalize runtimes correctly 2008-03-06 05:24:04 +00:00
.cvsignore
Makefile.in
README
jsd.h
jsd.mak
jsd.pkg
jsd1640.def
jsd1640.rc
jsd3240.rc
jsd_atom.c
jsd_high.c
jsd_hook.c
jsd_java.c
jsd_lock.c Bug 405025 ASSERT_VALID_LOCK failed 2008-02-26 15:07:05 +00:00
jsd_lock.h
jsd_obj.c
jsd_scpt.c Bug 416293 unbalanced locking in jsd_SetExecutionHook 2008-02-10 04:16:54 +00:00
jsd_stak.c
jsd_step.c
jsd_text.c
jsd_val.c
jsd_xpc.cpp Bug 421303 Crash [@ jsds_ScriptHookProc] 2008-03-11 00:13:48 +00:00
jsd_xpc.h Bug 348748 - Replace all instances of NS_STATIC_CAST and friends with C++ casts (and simultaneously bitrot nearly every patch in existence). r=bsmedberg on the script that did this. Tune in next time for Macro Wars: Episode II: Attack on the LL_* Macros. 2007-07-08 07:08:56 +00:00
jsdebug.c
jsdebug.h
jsdshell.mak
jsdstubs.c
mkshell.bat
resource.h

README

js/jsd contains code for debugging support for the C-based JavaScript engine 
in js/src.  jsd_xpc.cpp provides an XPCOM binding for the library.

js/jsd/jsdb is a console debugger using only native code (see README in that 
directory.)  This debugger is no longer being actively developed, though it
should work.