Commit Graph

597 Commits

Author SHA1 Message Date
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
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
Gregor Wagner
9ce0f0d1ba Bug 660329 - GC: add reason for GC to GCTimer. r=igor 2011-06-02 13:02:21 -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
Jason Orendorff
0305e45450 Merge from tracemonkey to jsdbg2. 2011-05-25 17:52:35 -05:00
Igor Bukanov
19e8c49c32 bug 658864 - preventing GC when reporting OOM on other threads. r=anygregor
--HG--
extra : rebase_source : 611b09f30000688eba161b12803b1ca44d7adbab
2011-05-22 20:50:08 +02:00
Jason Orendorff
2e05c87e09 Require the CCW slot of a Debug.Object object to contain an actual cross-compartment wrapper. That way, per-compartment GC never collects referents, simplifying sweep phase. 2011-05-21 00:40:33 -05:00
Jason Orendorff
8d48b54691 Merge from tracemonkey to jsdbg2. 2011-05-20 11:34:31 -05:00
Igor Bukanov
3e2ef6c4ef bug 656261 - better GC arena layout. r=wmccloskey 2011-05-19 21:01:08 +02:00
Bill McCloskey
b902b98248 Bug 650978 - Add gczeal setting to GC on every allocation (r=gwagner) 2011-06-01 17:48:52 -07:00
Gregor Wagner
cbb17d528d Bug 658041 - Stack based marking for JSRopes. r=igor 2011-05-27 15:17:47 -07:00
Igor Bukanov
82d8e149da bug 601234 - followup to restore tolerance of calling the allocator during the GC. 2011-05-19 15:34:37 +02:00
Igor Bukanov
397237b2b1 Backed out changeset 869479a8d3c8 - patch for bug 656261 caused jsreftest failure on Windows in the browser. 2011-05-19 00:59:19 +02:00
Jason Orendorff
001c42745d Merge from tracemonkey to jsdbg2. This merge reveals a bug in DebugFrame_getOlder, to be fixed separately. 2011-05-16 17:50:52 -05:00
Jason Orendorff
03415943ee Merge from tracemonkey to jsdbg2. 2011-05-04 12:13:58 -05:00
Jason Orendorff
a0e4b2bf22 Merge from tracemonkey to jsdbg2. 2011-04-29 10:12:46 -05:00
Jason Orendorff
27da170dc0 Very rudimentary support for creating Debug.Frame objects, passing them to hooks, and cleaning them up afterwards. 2011-04-27 18:22:28 -05:00
Jason Orendorff
782cb92948 Merge from tracemonkey to jsdbg2. 2011-04-26 14:45:06 -05:00
Igor Bukanov
8f8b62c845 bug 656261 - better GC arena layout. r=wmccloskey
--HG--
extra : rebase_source : d6b63d38ef586c7e1d7141c8e0859fe026803a5d
2011-04-22 00:47:46 +02:00
Bill McCloskey
f4933bcaae Bug 640265 - Don't GC during OOM reporting (r=dmandelin) 2011-05-17 11:23:31 -07:00
Igor Bukanov
212be881c3 Bug 600648 - faster GC mark bitmap operations. r=billm 2011-04-22 00:29:24 +02:00
Igor Bukanov
b996fb9a59 bug 601234 - avoiding extra indirection and branch on the fast path of GC allocation. r=wmccloskey 2011-04-22 00:20:12 +02:00
Igor Bukanov
8b0d367736 bug 605029 - ArenaHeader versus Arena<FreeCell> and other cleanups. r=wmccloskey 2011-04-20 07:30:10 +02:00
Chris Jones
6fd4cbff2d Bug 642381, part 2: Rename LazilyConstructed to Maybe. r=luke 2011-04-28 17:48:51 -05:00
Chris Jones
0adf6af157 Bug 642381, part 1: Remove js::Conditionally. r=luke 2011-04-28 17:48:51 -05:00
Jason Orendorff
5e2c73b316 Add rudimentary support for Debug.prototype.hooks.debuggerHandler. Note: A new constant JSPROP_NATIVE_ACCESSOR is added in jsapi.h, so that js_InitClass can create proper accessor properties. 2011-04-18 17:42:07 -05:00
Gregor Wagner
6c6726d922 Bug 651546 - Remove stackLimit from GCMarker. r=billm 2011-04-20 12:22:04 -07:00
Bill McCloskey
3c0cd83aa3 Bug 616666 - Use explicit stack for GC marking (r=gal) 2011-04-15 16:56:08 -07:00
Gregor Wagner
d08cc80190 Bug 650855 - Followup for bug 627200. r=gal 2011-04-18 10:55:47 -07:00
Andreas Gal
fd2168c3af Implement Harmony weak maps (bug 547941, r=jorendorff). 2011-04-16 21:23:44 -07:00
Gregor Wagner
99a0150f57 Bug 627200 - Background Finalization for Strings and Objects r=gal 2011-04-13 13:43:33 -07:00
Igor Bukanov
55e510df64 bug 646044 - ContextAllocPolicy should not account for GC memory pressure. r=luke 2011-03-30 12:10:12 +02:00
Luke Wagner
05d2002b66 Bug 644074 - Simplify and consolidate VM stack code into js/src/vm/Stack* 2011-04-13 09:27:37 -07:00
Igor Bukanov
e41886ec1e bug 658510 - eliminating JSCOMPARTMENT_NEW and associated compartment initialization race. r=mrbkap 2011-05-22 12:09:28 +02:00
Igor Bukanov
71d7289d00 bug 658016 - followup to fix !JS_THREADSAFE builds. 2011-05-22 09:27:01 +02:00
Igor Bukanov
c6893bfa52 bug 658016 - properly synchronizing the free lists with arenas when dumping the heap. r=wmccloskey 2011-05-20 12:38:31 +02:00
Igor Bukanov
a74b534b3f bug 658505 - removal of thread synchronization when setting a prototype. r=jorendorff
--HG--
extra : rebase_source : 8ef87070a88a3323c3b657c043741f087a98d5d3
2011-05-20 18:40:35 +02:00
Chris Leary
a2d213f0d0 Bug 619561: GC telemetry hooks for TestPilot study. (r=billm) 2011-05-20 13:40:06 -07:00
Bill McCloskey
a572e3fb87 Bug 658137 - Add API for iterating over the entire GC heap. r=igor,nnethercote. 2011-05-19 17:11:16 -07:00
Gregor Wagner
b8b683195b Bug 650326 - Move ExpireGCChunks to background thread. r=igor 2011-05-12 15:29:38 -07:00
Gregor Wagner
dc5385284e Bug 603916 - unifying GC sheduling. r=igor 2011-05-10 22:37:11 -07:00
Igor Bukanov
0370e3ab43 bug 652416 - race fixes and other cleanups for background finalization. r=anygregor
--HG--
extra : rebase_source : b1685fff8fa5dab43b9b595daa6118249d3ef891
2011-04-25 22:05:30 +02:00
Andrew McCreight
5d31eb0d55 Bug 650519. Add safe function to check gray GC mark bits, then use it. (r=gal)
--HG--
extra : rebase_source : bb8eeed202e30c575ff22165c0b4de591c1dcb64
2011-05-04 09:26:44 -07:00
L. David Baron
0a579a3bbb Back out changeset 7dcd0d16cc08 (bug 547941) for causing jsreftest crashes on debug builds. 2011-04-12 01:28:40 -07:00