Commit Graph

683 Commits

Author SHA1 Message Date
Jason Orendorff
fbb0edbd8d Merge jsdbg2 to mozilla-inbound. See bug 672829. 2011-08-13 13:29:18 -05:00
Jason Orendorff
d0dae6067c Merge from mozilla-central to jsdbg2. 2011-08-12 18:18:59 -05:00
Phil Ringnalda
d3b432509b Back out c8f38fb18c6a (bug 673631) for breaking the Shark shell build 2011-08-12 19:24:22 -07:00
Jason Orendorff
9bca815475 Address review comments from billm (bug 672829 comment 65). 2011-08-11 00:58:28 -05:00
Jason Orendorff
59fd77e00c Trivial cleanups: do not export vm/Debugger.h; rename Debugger::mark to markAllIteratively, delete a stray space. No bug number, rs=jimb. 2011-08-10 12:57:30 -05:00
Jason Orendorff
6666d9cd42 Merge from mozilla-central to jsdbg2. 2011-08-09 10:21:12 -05:00
Jason Orendorff
c4f527861a Merge from mozilla-central to jsdbg2. 2011-07-28 13:45:51 -05:00
Jason Orendorff
75a71f51e8 Merge from mozilla-central to jsdbg2 branch. 2011-07-27 18:23:16 -05:00
Jason Orendorff
722572a323 Rename jsdbg.{h,cpp} to vm/Debugger.{h,cpp}. This addresses a review comment from brendan in bug 627829 comment 42.
--HG--
rename : js/src/jsdbg.cpp => js/src/vm/Debugger.cpp
rename : js/src/jsdbg.h => js/src/vm/Debugger.h
2011-07-27 18:03:34 -05:00
Steve Fink
1ec520583b Bug 673631 - Clean up probes and register (almost) all profiler control entry points in JS_DefineProfilingFunctions (r=luke,waldo,jst)
Previously, JS_DefineProfilingFunctions only defined a very basic set of
functions (startProfiling and stopProfiling), and various scattered places
added more specific ones (start/stop vtune, dumpProfile, etc.) This patch makes
jsdbgapi do all of it, so that all users get the same set.

Also rename JS_DumpProfile -> JS_DumpBytecode to avoid name conflict. The
bytecode dumps are how the counters ("profiles") are displayed, so the
DumpProfile name was bogus anyway.

--HG--
extra : rebase_source : 0e5ae9748cd497b9a0d2f51527799c4092f51fd0
2011-07-26 15:56:09 -07:00
Igor Bukanov
907a4b7654 bug 673795 - part2, using lists of avaiulable chunks for faster chunk selection. r=wmccloskey
--HG--
extra : rebase_source : ae4f5a82bc4042e341fdb5c08e3f0fe4b4ae8935
2011-07-26 09:55:23 +02:00
Igor Bukanov
d6d80f5a73 bug 673795 - part1, no empty chunk hashing. r=anygregor
--HG--
extra : rebase_source : 5700156556287ae6e72b78640451c5ceb1013df4
2011-07-25 13:04:02 +02:00
Jason Orendorff
f8465f2924 Bug 637985 - Reimplement watchpoints using a JSObject bit. r=jimb. 2011-07-27 17:44:43 -05:00
Jason Orendorff
671bbf0bb1 Merge mozilla-central to jsdbg2. 2011-07-18 10:58:56 -05:00
Jason Orendorff
f5ce61ea3c Merge from mozilla-central to jsdbg2. 2011-07-12 10:47:31 -05:00
Jason Orendorff
b25a91e697 Merge from tracemonkey to jsdbg2. 2011-07-11 08:53:27 -05:00
Brian Hackett
fd156b6340 Revert to 6840fbf4dcdd 2011-07-08 17:58:10 -07:00
Nicholas Nethercote
df63e69bd3 Bug 671482 - Use the trusted principal to identify the system principal. r=luke. 2011-07-15 09:52:51 +10:00
Nicholas Nethercote
bc2ec1e581 Bug 671482 - Rename some identifiers to improve clarity. r=anygregor. 2011-07-15 09:31:52 +10:00
Bill McCloskey
fd629a392b Bug 661903 - Move script filename table to compartment (r=igor) 2011-07-14 16:02:12 -07:00
Brian Hackett
1b078f3536 Merge TM -> JM 2011-07-05 18:22:24 -07:00
Jason Orendorff
26c054bdc4 Rename Debug to Debugger.
--HG--
rename : js/src/jit-test/tests/debug/Debug-clearAllBreakpoints-01.js => js/src/jit-test/tests/debug/Debugger-clearAllBreakpoints-01.js
rename : js/src/jit-test/tests/debug/Debug-ctor-01.js => js/src/jit-test/tests/debug/Debugger-ctor-01.js
rename : js/src/jit-test/tests/debug/Debug-ctor-02.js => js/src/jit-test/tests/debug/Debugger-ctor-02.js
rename : js/src/jit-test/tests/debug/Debug-ctor-03.js => js/src/jit-test/tests/debug/Debugger-ctor-03.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-01.js => js/src/jit-test/tests/debug/Debugger-debuggees-01.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-02.js => js/src/jit-test/tests/debug/Debugger-debuggees-02.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-03.js => js/src/jit-test/tests/debug/Debugger-debuggees-03.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-04.js => js/src/jit-test/tests/debug/Debugger-debuggees-04.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-05.js => js/src/jit-test/tests/debug/Debugger-debuggees-05.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-06.js => js/src/jit-test/tests/debug/Debugger-debuggees-06.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-07.js => js/src/jit-test/tests/debug/Debugger-debuggees-07.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-08.js => js/src/jit-test/tests/debug/Debugger-debuggees-08.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-09.js => js/src/jit-test/tests/debug/Debugger-debuggees-09.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-10.js => js/src/jit-test/tests/debug/Debugger-debuggees-10.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-11.js => js/src/jit-test/tests/debug/Debugger-debuggees-11.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-12.js => js/src/jit-test/tests/debug/Debugger-debuggees-12.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-13.js => js/src/jit-test/tests/debug/Debugger-debuggees-13.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-14.js => js/src/jit-test/tests/debug/Debugger-debuggees-14.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-15.js => js/src/jit-test/tests/debug/Debugger-debuggees-15.js
rename : js/src/jit-test/tests/debug/Debug-debuggees-16.js => js/src/jit-test/tests/debug/Debugger-debuggees-16.js
rename : js/src/jit-test/tests/debug/Debug-enabled-01.js => js/src/jit-test/tests/debug/Debugger-enabled-01.js
rename : js/src/jit-test/tests/debug/Debug-getYoungestFrame-01.js => js/src/jit-test/tests/debug/Debugger-getYoungestFrame-01.js
rename : js/src/jit-test/tests/debug/Debug-getYoungestFrame-02.js => js/src/jit-test/tests/debug/Debugger-getYoungestFrame-02.js
rename : js/src/jit-test/tests/debug/Debug-multi-01.js => js/src/jit-test/tests/debug/Debugger-multi-01.js
rename : js/src/jit-test/tests/debug/Debug-multi-02.js => js/src/jit-test/tests/debug/Debugger-multi-02.js
rename : js/src/jit-test/tests/debug/Debug-multi-03.js => js/src/jit-test/tests/debug/Debugger-multi-03.js
2011-07-05 07:48:26 -05:00
Gregor Wagner
72e00fabf4 Bug 666058 - Don't share chunks for system compartments. r=gal,igor. 2011-07-05 14:14:33 +10:00
Jason Orendorff
1ceaa9d843 Merge from tracemonkey to jsdbg2. 2011-07-01 19:22:47 -05:00
Jason Orendorff
1f245d40df Merge from tracemonkey to jsdbg2. 2011-07-01 19:02:40 -05:00
Brian Hackett
dee99963bb Merge TM -> JM 2011-07-01 16:24:32 -07:00
Luke Wagner
4263a80f79 Bug 650411 - assert in debug/release builds that JSRuntime is only used in a single-threaded manner (r=jorendorff,sr=dmandelin)
--HG--
extra : rebase_source : b20ddca63da88a8efe2f5dc06364785aebe8b9ea
2011-07-01 14:11:31 -07:00
Daniel Holbert
110f0f6999 Bug 665354 followup: Revert s/0/NULL/ in jsgc.cpp to fix GCC warning. r=jorendorff 2011-08-11 11:47:50 -07:00
Igor Bukanov
96c71ac382 bug 665354 - page-independent free span. r=wmccloskey 2011-08-05 18:43:59 +02:00
Jason Orendorff
be6339e5c2 Add breakpoints.
This adds a new per-compartment implementation of breakpoints and
reimplements the jsdbgapi.h "trap" entry points on top of it. Most
jsdbgapi.h-using code will still work, but there is no longer a single
runtime-wide trapList protected by a lock. Embeddings must follow the
compartment rules for thread safety.

JS_ClearAllTraps was removed, replaced by the per-compartment API
JS_ClearAllTrapsForCompartment.

The new implementation asserts that the PC passed to JS_SetTrap is
actually an offset of an instruction, not just a random number. This
caused quite a few tests to fail; fixes are included.

Added Debug.Script.prototype.setBreakpoint, getBreakpoints,
clearBreakpoint, and clearAllBreakpoints; and
Debug.prototype.clearAllBreakpoints.

In addition to tests targeting the new functionality, this changeset
includes some tests for Debug.Script.prototype.getLineOffsets, which is
hard to test without breakpoints.
2011-06-28 16:06:34 -05:00
Luke Wagner
b747d1721b Bug 670059 - Add some JS engine telemetry counters to measure occurrences of: E4X, __iterator__, mutable __proto__ (r=taras,waldo) 2011-07-07 15:40:33 -07:00
Luke Wagner
673fa49bf2 Backout a22fad398472 and 373e6bd2705d because of burnage 2011-08-04 15:54:14 -07:00
Luke Wagner
59e742e724 Bug 670059 - Add some JS engine telemetry counters to measure occurrences of: E4X, __iterator__, mutable __proto__ (r=taras,waldo)
--HG--
extra : rebase_source : f77f2ad5521bf4543b518f7f6cc40a3778b7a74a
2011-07-07 15:40:33 -07:00
Igor Bukanov
e39b18efab bug 673760 - keep ArenaHeader::compartment until the GC finishes. r=anygregor 2011-07-24 18:14:10 +02:00
Jason Orendorff
4370701afc Change js::Debug::objects to have referents as keys, rather than cross-compartment wrappers of referents.
This adds support for cross-compartment WeakMaps and changes js::Debug::objects to be one. It eliminates the vexing JSMSG_DEBUG_STREAMS_CROSSED error messsage.

The GC interaction between jsgc and jsdbg is a little more complex now; like the cross-compartment wrapper maps, Debug::objects must be marked (just once) during per-compartment GC. In other ways this is a simplification.
2011-06-20 18:26:05 -05:00
Andrew McCreight
3f1b66195e Backout bug 653248 due to bug 667011 2011-06-15 10:55:58 -07:00
Bill McCloskey
2a3d5215a6 Bug 662646 - GC topcrash diagnostics [needs backout before Aurora merge!] (r=dmandelin) 2011-07-07 17:31:24 -07:00
Nicholas Nethercote
3d7ea7b395 Bug 661474 - Add per-compartment memory reporters. r=wmccloskey, dolske. 2011-06-30 15:44:17 +10:00
Brian Hackett
1186d01428 Merge TM -> JM 2011-06-06 09:48:04 -07:00
Brian Hackett
d7d8ae4dcc [INFER] Don't use tracers with empty callbacks to verify roots during compartment GCs. 2011-06-04 09:30:15 -07:00
Jason Orendorff
6367a9c217 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.

--HG--
rename : js/src/jit-test/tests/debug/Debug-ctor.js => js/src/jit-test/tests/debug/Debug-ctor-01.js
2011-06-02 21:58:46 -05:00
Jason Orendorff
fcfd80cfc5 Merge from TM. Huge merge. Stack changes from bug 656462. 2011-06-15 16:14:09 -05:00
Jim Blandy
a282ee62d3 Bug 660039: Provide a WeakMap usable from C++. r=jorendorff
Remove WeakMap class; implement the JavaScript object using functions static to jsweakmap.cpp.

Define a new WeakMap class template, parameterized by Key and Value types,
and accepting a MarkPolicy argument saying how to mark them.

Add assertions to check that we check and set the right mark bits, and
tests that trip them in the presence of mistakes in earlier revisions of
this patch.
2011-06-14 19:21:47 -07:00
Jim Blandy
88decefd28 Merge from TM. 2011-06-07 12:12:28 -07:00
Jim Blandy
8bd7752c01 Backed out changeset d02083014f57; build problems in nsXPConnect.cpp 2011-06-06 09:01:47 -07:00
Jason Orendorff
6a958619a0 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.  The fix to issues #2 and #3 is to tweak the rule--and to tweak
the rule for Debug object GC-reachability.

--HG--
rename : js/src/jit-test/tests/debug/Debug-ctor.js => js/src/jit-test/tests/debug/Debug-ctor-01.js
2011-06-02 21:58:46 -05:00
Brian Hackett
5c5438cc38 Merge TM -> JM 2011-06-02 12:59:28 -07:00
Igor Bukanov
8e11a702b7 bug 656261 - followup to fix compilation warning 2011-06-02 19:36:59 +02:00
Paul Biggar
459861e42c Bug 660630: Only error once in OOM in NewCompartment (r=igor) 2011-06-02 10:06:36 -07:00
Brian Hackett
a27ff03fc1 Merge TM -> JM 2011-06-01 11:22:03 -07:00