1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:48:11 +00:00
serenity/Userland/Libraries/LibJS/Heap
Andreas Kling 14c57b4b7f LibJS: Remove transition avoidance & start caching prototype transitions
The way that transition avoidance (foo_without_transition) was
implemented led to shapes being unshareable and caused shape explosion
instead, precisely what we were trying to avoid.

This patch removes all the attempts to avoid transitioning shapes, and
instead *adds* transitions when changing an object's prototype.
This makes transitions flow naturally, and as a result we end up with
way fewer shape objects in real-world situations.

When we run out of big problems, we can get back to avoiding transitions
as an optimization, but for now, let's avoid ballooning our processes
with a unique shape for every object.
2021-10-01 02:59:29 +02:00
..
BlockAllocator.cpp LibJS: Remove unused header includes 2021-08-01 08:10:16 +02:00
BlockAllocator.h LibJS: Add inline capacity to BlockAllocator's blocks Vector 2021-05-28 00:07:24 +01:00
Cell.h LibJS+js+test-js: Add GC debug mode that keeps cells "alive" as zombies 2021-09-11 16:52:03 +02:00
CellAllocator.cpp LibJS: Use default instead of an empty constructor/destructor 2021-09-16 17:17:13 +02:00
CellAllocator.h LibJS: Use default instead of an empty constructor/destructor 2021-09-16 17:17:13 +02:00
DeferGC.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Handle.cpp LibJS: Move Cell.{cpp,h} from Runtime/ to Heap/ 2021-05-17 19:53:00 +02:00
Handle.h LibJS: Use default instead of an empty constructor/destructor 2021-09-16 17:17:13 +02:00
Heap.cpp LibJS: Use ElapsedTimer::start_new(); 2021-09-12 17:24:44 +00:00
Heap.h LibJS: Remove transition avoidance & start caching prototype transitions 2021-10-01 02:59:29 +02:00
HeapBlock.cpp LibJS: Fix ASAN poisoning range in new HeapBlocks 2021-09-11 17:00:07 +02:00
HeapBlock.h LibJS: Instrument HeapBlock cell allocation for ASAN 2021-05-29 17:47:29 +01:00