Jon Coppeard
b00f4011de
Bug 1536154 - Eagerly run finalizer for any dead reflector JSObject when creating a new reflector for a DOM native r=bzbarsky
...
Currently incremental GC can run the finalizer for a dead reflector for a native after a new reflector for that native has been created and attached. This leads to the confusing situation where there are two reflectors that contain pointers to the same native (which has a pointer to the new one).
This is a problem for memory accounting because the JS engine sees the size of the native at finalization time but does not see updates to this size after a new reflector is created. Thus the engine's idea of the size of a native can become incorrect and the memory accounting can become unbalanced.
Consider the following situation:
1. Native object created of size 20MB
2. Reflector 1 created
3. Reflector 1 becomes unreachable
4. Reflector 2 created
5. Native size changes to 40MB
6. Reflector 1 finalized
The memory associated with reflector 1 will be: 20MB (step 2), -20MB (step 6)
The memory associated with reflector 2 will be: 20MB (step 4), 40MB (step 5)
The memory associated with reflector 1 ends up negative (which should not be possible) and the total is also wrong.
The patch runs the finalizer for any dead reflector when creating a new one. This ensures that finalizer sees the correct state. The native object pointer is cleared when this happens so when the GC later runs the finalizer again it is a no-op. This situation occurs pretty rarely so I don't think there is much overhead to running the finalizer more than once. This also allows us to tighten up the assertions in the finalizer.
Differential Revision: https://phabricator.services.mozilla.com/D28690
2019-04-24 15:58:39 +01:00
Sylvestre Ledru
265e672179
Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
...
# ignore-this-changeset
--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Brian Hackett
52b33afe4e
Bug 1207696 Part 7 - Ensure deterministic interaction of GC with CC and object references, r=smaug.
...
--HG--
extra : rebase_source : 5d9e7ebd1dc242ca648193ed1f27ae91d19006de
2018-07-23 14:46:37 +00:00
Jon Coppeard
a06421a289
Bug 1417123 - Remove or replace inclusion of js/GCAPI.h r=mccr8
2017-11-16 12:21:08 +00:00
Jon Coppeard
eb3c9870bf
Bug 1352430 - Add barrier to wrapper cache to clear dying objects that have not yet been finalized r=bz r=sfink
...
* * *
Code review followup
--HG--
extra : rebase_source : 10c1fd603c2dd1ac2ff5770ae9aec2e9131681ce
2017-04-26 11:18:39 +01:00
Boris Zbarsky
28dabea2ec
Bug 1332322 part 3. Rename nsWrapperCache::IsBlackAndDoesNotNeedTracing to nsWrapperCache::HasKnownLiveWrapperAndDoesNotNeedTracing. r=mccr8
2017-01-24 20:39:37 -05:00
Boris Zbarsky
cce1668e68
Bug 1332322 part 2. Rename nsWrapperCache::IsBlack to nsWrapperCache::HasKnownLiveWrapper. r=mccr8
2017-01-24 20:38:58 -05:00
Boris Zbarsky
b39cdf67a8
Bug 1332322 part 1. Add an nsWrapperCache function to mark the wrapper as 'live' for GC purposes. r=mccr8
2017-01-24 20:33:54 -05:00
Boris Zbarsky
637e48e6e3
Bug 851892 part 4. Make css::Rule wrappercached. r=heycam,peterv,smaug
...
Note that this increases the size of css::Rule by three words, unfortunately.
2017-01-13 10:41:02 -05:00
Sebastian Hengst
63caf1fba9
Backed out changeset 3be6690b9f0a (bug 851892)
2017-01-20 19:30:50 +01:00
Boris Zbarsky
ec2fad773f
Bug 851892 part 4. Make css::Rule wrappercached. r=heycam,peterv,smaug
...
Note that this increases the size of css::Rule by three words, unfortunately.
2017-01-13 10:41:02 -05:00
Olli Pettay
5ca565690e
Bug 1120016 - Allocate short lived JS wrappers in the Nursery, r=mccr8,terrence
2015-12-31 15:21:49 +02:00
Wes Kocher
792ca14825
Backed out changeset 0d55a6e4e98e (bug 1120016) for 980 b2g hazards
...
--HG--
extra : commitid : 27OIHVsa17S
2015-12-30 16:34:18 -08:00
Olli Pettay
2066f6d7b3
Bug 1120016 - Allocate short lived JS wrappers in the Nursery, r=mccr8,terrence
...
--HG--
extra : rebase_source : 3d51b7fc9962a93eb6071328db84b5b327225246
2015-12-30 19:16:13 +02:00
Andrew McCreight
9e8f4b219e
Bug 1152551, part 2 - Fix mode lines in dom/. r=jst
2015-05-03 15:32:37 -04:00
Terrence Cole
20e03ef2a5
Bug 1105069 - Part 17: Convert xpc_IsGrayGCThing to GCCellPtr; r=mccr8, j=jonco
...
--HG--
extra : rebase_source : 9fdc5ac9ca8de9c12a399532db7e77bc34abb7da
2014-12-05 09:38:34 -08:00
Terrence Cole
e4a4d0c7fa
Bug 1105069 - Part 14: Convert NoteJSChild to GCCellPtr; r=mccr8, r=jonco
...
--HG--
extra : rebase_source : 2338e0a57779401f9bc4744bc2fa59a4b31d76bf
2014-12-05 09:38:34 -08:00
Jon Coppeard
511f6ef1c5
Bug 1052388 - Rename JS_CallHeapFooTracer() functions to JS_CallFooTracer() r=terrence r=smaug
2014-08-13 10:05:22 +01:00
Terrence Cole
56f4a8bca3
Bug 807168 - Make JSTracer into a real C++ class and kill the macro accessors; r=jonco,mccr8
...
--HG--
rename : js/public/Tracer.h => js/public/TracingAPI.h
2014-04-11 15:19:05 -07:00
Olli Pettay
fe989e3819
Bug 942240 - Improve the skippability of nsGlobalWindow, r=mccr8
...
--HG--
extra : rebase_source : ed7e687229a92075657d9b665fbc7af42d9eb5cc
2013-11-24 21:35:34 +02:00
Nicholas Nethercote
48268c5407
Bug 910771 (part 1) - Create js/Tracer.h and gc/Tracer.cpp. r=terrence.
2013-09-02 22:01:18 -07:00
Kyle Huey
888aba875b
Bug 910937: Remove xpc_UnmarkGrayObject and use JSAPI directly. r=mccr8
2013-09-08 20:28:48 -07:00
Nicholas Nethercote
2585de9a07
Bug 905017 (part 1) - Minimize inclusions of JS engine headers in .h and .idl files. r=billm.
...
--HG--
extra : rebase_source : 984c61ab12f46be0509b1ce0d458d9a6e5841c64
2013-08-17 15:50:18 -07:00
Jon Coppeard
a30b14261f
Bug 877762 - GC: Post-barrier cycle collector participants - 7 Convert most JSObect to use Heap<T> (ex. XBL) r=bz
2013-06-18 11:00:38 +01:00
Jon Coppeard
c06cd12b00
Bug 860573 - Part 1 - Store wrapper cache flags separately to the object pointer r=smaug
2013-06-08 09:53:21 +01:00
Jon Coppeard
a07d2309af
Bug 874691 - Make CC participant tracing indirect r=mccr8 r=smaug r=bz
2013-05-27 12:50:49 +01:00
Terrence Cole
b6490325af
Bug 777548 - Make non-cc-participant tracing indirect; r=smaug,billm,jst
2013-03-28 13:37:22 -07:00
Peter Van der Beken
6f6a341ee2
Fix for bug 815149 (Add support for SOWs and XBL bindings in new DOM bindings). r=bz.
...
--HG--
extra : rebase_source : c24544fd3d1c99651e279e687a07a02c5b994323
2012-09-12 22:29:30 +02:00
Olli Pettay
6f8dfd30f6
Bug 794694 - Make sure to trace all the gray GCthings, not only wrapper, r=mccr8
2012-09-29 01:29:37 +03:00
Gervase Markham
82ff7027aa
Bug 716478 - update licence to MPL 2.
2012-05-21 12:12:37 +01:00
Peter Van der Beken
efadad15ae
Fix for bug 736229 (Stop storing expando objects in the wrapper cache, store the proxy instead). r=jst.
2012-03-14 15:22:10 +01:00
Ms2ger
d2be610370
Bug 715206 - Remove XPConnect from IDB's LOCAL_INCLUDES (again); r=bholley
2012-01-11 09:23:07 +01:00
Olli Pettay
e29d8131b7
Bug 713462, don't traverse black content lists, r=mccr8
2011-12-29 23:21:33 +02:00
Peter Van der Beken
cb751cde8f
Bug 648801 (new DOM list bindings) - Rename xpc::dom to mozilla::dom::binding. r=bz/jst/mrbkap.
...
--HG--
extra : rebase_source : 6e27f15c5f0cc83a75cc9b8cb9dec425a37b56b0
2011-08-20 15:53:32 +02:00
Peter Van der Beken
b737d0c096
Bug 648801 (new DOM list bindings) - Support expandos on the new proxy-based DOM bindings. r=bz/jst/mrbkap.
...
--HG--
extra : rebase_source : 367af99c154271aca19f24244be7b5adeffd8a36
2011-05-26 21:58:35 +02:00