author Jason Orendorff <jorendorff@mozilla.com>
Thu, 02 Jun 2011 21:58:46 -0500
changeset 74471 a95ab01cda09f6a4f344ed1898e4ff1bfd65a6d5
parent 51604 f87dcd8ad8e8b766c589f5a4d3385ae4d3eec388
child 76903 1a84481f69875da535508041e90041f06bd2deae
permissions -rw-r--r--
Automatically turn debug mode on/off when adding/removing debuggees. This allows most of the tests to run without the -d command-line flag. Now a compartment is in debug mode if * JSD1 wants debug mode on, thanks to a JS_SetDebugMode* call; OR * JSD2 wants debug mode on, because a live Debug object has a debuggee global in that compartment. Since this patch only adds the second half of the rule, JSD1 should be unaffected. The new rule has three issues: 1. When removeDebuggee is called, it can cause debug mode to be turned off for a compartment. If any scripts from that compartment are on the stack, and the methodjit is enabled, returning to those stack frames will crash. 2. When a Debug object is GC'd, it can cause debug mode to be turned off for one or more compartments. This causes the same problem with returning to deleted methodjit code, but the fix is different: such Debug objects simply should not be GC'd. 3. Setting .enabled to false still does not turn off debug mode anywhere, so it does not reduce overhead as much as it should. A possible fix for issue #1 would be to make such removeDebuggee calls throw; a different possibility is to turn off debug mode but leave all the scripts alone, accepting the performance loss (as we do for JSD1 in JSCompartment::setDebugModeFromC). The fix to issues #2 and #3 is to tweak the rule--and to tweak the rule for Debug object GC-reachability.

# .hgignore - List of filenames hg should ignore

# Filenames that should be ignored wherever they appear

# User files that may appear at the root

# Empty marker file that's generated when we check out NSS

# Build directories

# Build directories for js shell

# SpiderMonkey configury
# SpiderMonkey test result logs

# Java HTML5 parser classes