Lines Matching full:heap
18 Added same heap debug checks to more code paths.
102 (KJS::Heap::heapAllocate):
104 (KJS::Heap::fastIsNumber):
410 (KJS::Heap::~Heap):
411 (KJS::Heap::heapAllocate):
412 (KJS::Heap::setGCProtectNeedsLocking):
413 (KJS::Heap::protect):
414 (KJS::Heap::unprotect):
415 (KJS::Heap::collect):
449 (KJS::Heap::Heap):
450 (KJS::Heap::~Heap):
452 (KJS::Heap::markStackObjectsConservatively):
535 (KJS::Heap::Heap):
639 (KJS::Heap::markOtherThreadConservatively): Removed an assertion that referenced
642 * kjs/collector.h: Made Heap destructor public, so that JSContextRelease can use it.
650 As the heap is usually deleted when registered threads still exist, ThreadSpecific doesn't
656 (KJS::Heap::Thread::Thread):
657 (KJS::Heap::Heap):
658 (KJS::Heap::~Heap):
659 (KJS::Heap::registerThread):
660 (KJS::Heap::unregisterThread):
1747 (KJS::Heap::registerThread): Added dummy implementation.
1757 (KJS::Heap::Heap): Store a JSGlobalData pointer instead of multiple pointers to its members.
1760 (KJS::Heap::registerThread): Changed thread registration data to be per-heap. Previously,
1761 only the shared heap could be used from multiple threads, so it was the only one that needed
1762 thread registration, but now this can happen to any heap.
1763 (KJS::Heap::unregisterThread): Ditto.
1764 (KJS::Heap::markStackObjectsConservatively): Adapt for the above changes.
1765 (KJS::Heap::setGCProtectNeedsLocking): Ditto.
1766 (KJS::Heap::protect): Ditto.
1767 (KJS::Heap::unprotect): Ditto.
1768 (KJS::Heap::collect): Ditto.
1769 (KJS::Heap::globalObjectCount): Use global object list associated with the current heap,
1771 (KJS::Heap::protectedGlobalObjectCount): Ditto.
1774 (KJS::Heap::ThreadRegistrar): Added a helper object that unregisters a thread when it is
1792 To maintain compatibility, the shared heap is collected if NULL is passed.
1846 via the heap.
1952 a result that it didn't deliver. Also, it helped by labeling JSC heap regions as reported by
2461 (KJS::Heap::collect):
2481 section it's tied to. The heap is responsible for marking the call frame area.
2496 (KJS::Heap::collect): Fire dtrace probes when starting a collection, after the
2652 (JSGarbageCollect): Only lock while collecting the shared heap, not the per-thread one.
2678 Don't take the lock for real, as heap introspection pauses the process anyway. It seems that
2688 (KJS::Heap::setGCProtectNeedsLocking): Optionally protect m_protectedValues access with a
2689 per-heap mutex. This is only needed for WebCore Database code, which violates the "no data
2691 (KJS::Heap::isShared): Keep a shared flag here, as well.
2700 Heap::protect/unprotect guards agains possible future unlocked uses of ProtectedPtr in JSC.
2703 (KJS::Heap::Heap): Initialize m_isShared.
2704 (KJS::Heap::~Heap): No need to lock for real during destruction, but must keep assertions
2706 (KJS::destroyRegisteredThread): Registered thread list is only accessed for shared heap,
2708 (KJS::Heap::registerThread): Ditto.
2709 (KJS::Heap::markStackObjectsConservatively): Use m_isShared instead of comparing to a shared
2711 (KJS::Heap::setGCProtectNeedsLocking): Create m_protectedValuesMutex. There is currently no
2713 (KJS::Heap::protect): Take m_protectedValuesMutex (if it exists) while accessing
2715 (KJS::Heap::unprotect): Ditto.
2716 (KJS::Heap::markProtectedObjects): Ditto.
2717 (KJS::Heap::protectedGlobalObjectCount): Ditto.
2718 (KJS::Heap::protectedObjectCount): Ditto.
2719 (KJS::Heap
3983 Heap::registerAsMainThread() call.
3994 (KJS::Heap::Heap):
3995 (KJS::Heap::~Heap): Added a destructor, which unconditionally deletes everything.
3996 (KJS::Heap::sweep): Removed code related to "collect on main thread only" logic.
3997 (KJS::Heap::collect): Ditto.
3998 (KJS::Heap::globalObjectCount): Explicitly use per-thread instance of JSGlobalObject linked
4001 (KJS::Heap::protectedGlobalObjectCount): Ditto.
4005 * JavaScriptCore.exp: Removed Heap::collectOnMainThreadOnly.
4235 Make the JavaScript shell collect the heap from main() instead of
5084 (KJS::Heap::Heap):
5096 (KJS::Heap::Heap):
5105 Prepare JavaScript heap for being per-thread.
5108 (KJS::ExecState::heap): Added an accessor.
5113 that it belongs to a shared heap.
5126 Made these pseudo-mark functions take Heap*.
5129 (KJS::initializeThreading): Initialize heap introspector.
5131 * kjs/JSGlobalData.h: Added Heap to the structure.
5134 (KJS::JSGlobalData::JSGlobalData): Initialize Heap.
5142 (KJS::JSGlobalObject::put): Assert that a cross-heap operation is not being attempted.
5144 (KJS::JSGlobalObject::mark): Pass the current heap to RegisterFileStack::mark.
5145 (KJS::JSGlobalObject::operator new): Overload operator new to use per-thread or shared heap.
5150 * kjs/collector.h: Turned Collector into an actual object with its own data, renamed to Heap.
5151 (KJS::Heap::initializeHeapIntrospector): Added.
5152 (KJS::Heap::heap): Added a method to determine which heap a JSValue is in, if any.
5153 (KJS::Heap::allocate): Made non-static.
5154 (KJS::Heap::inlineAllocateNumber): Ditto.
5155 (KJS::Heap::markListSet): Ditto.
5156 (KJS::Heap::cellBlock): Ditto.
5157 (KJS::Heap::cellOffset): Ditto.
5158 (KJS::Heap::isCellMarked): Ditto.
5159 (KJS::Heap::markCell): Ditto.
5160 (KJS::Heap::reportExtraMemoryCost): Ditto.
5161 (KJS::CollectorBlock): Added a back-reference to Heap for Heap::heap() method.
5166 (KJS::Heap::Heap): Initialize the newly added data members.
5169 (KJS::Heap::heapAllocate): Initialize heap back reference after a new block is allocated.
5170 (KJS::Heap::registerThread): Removed introspector initialization, as it is now performed
5172 (KJS::Heap::markOtherThreadConservatively): Assert that the "other thread" case only occurs
5173 for legacy clients using a shared heap.
5174 (KJS::Heap::markStackObjectsConservatively): Moved fastMallocForbid/Allow down here, since
7206 Preparation to making JavaScript heap per-thread.
7224 to an appropriate Heap's protected list. For now, a static Collector::markListSet() is
7550 It will also keep a Heap pointer, but right now, Heap (Collector) methods are all static.
16437 Make JavaScript heap per-thread
16442 * kjs/collector.h: Renamed Collector to Heap, made the heap per-thread. Removed support for
16443 multithreaded access to a heap.
16444 (KJS::CollectorBlock): Removed collectOnMainThreadOnly bitmap, added a reference to owner heap.
16446 (KJS::Heap::markListSet): Moved from a static variable in List.cpp to a per-thread one here.
16447 (KJS::Heap::heap): Added a method to find which heap a JSValue is allocated in.
16452 (KJS::Heap::threadHeap): JS heap is now per-thread.
16453 (KJS::Heap::Heap): Zero-initialize the heap.
16455 inlining it in Heap::heapAllocate() is bad for performance, now that the latter doesn't
16457 (KJS::Heap::heapAllocate): Initialize Block::heap.
16458 (KJS::Heap::markCurrentThreadConservatively): Moved into markStackObjectsConservatively(),
16459 as GC only works with a current thread's heap now.
16460 (KJS::Heap::sweep): Removed collectOnMainThreadOnly checks.
16461 (KJS::Heap::collect): Ditto.
16466 Removed registerThread(), as the heap no longer cares.
16469 variables in Heap and JSGlobalObject.
16471 * kjs/ExecState.h: (KJS::ExecState::heap): Added a heap pointer for faster access to
16472 per-thread heap, and an accessor for it.
16479 (KJS::JSGlobalObject::init): Store a reference to per-thread heap.
16483 so it needs a custom operator new that directly accesses per-thread heap.
16490 (KJS::List::markSet): Removed, this is now stored in Heap.
16492 (KJS::List::expandAndAppend): Ask the current thread heap for a mark set reference.
16497 Use the newly added Heap::heap() method to find out which heap the value to be (un)protected
16791 static Collector methods with calls to per-thread Heap ones.
18849 Avoid heap allocating the root scope chain node for eval and closure free functions
19189 than grows, so we shouldn't allocate a new buffer on the heap unless
21955 first allocated on an explicitly managed stack and only heap allocated
22570 heap or to add casts for cases where it's guaranteed to be. Changed the push
22572 put onto the heap when needed later.
27416 Unfortunately this change results in NaN, +Inf, -Inf, and -0 being heap allocated now, but
27495 heap.
27583 - only collect when the heap is full, unless we have lots of extra cost garbage
27795 Switched List implementation from a custom heap allocator to an inline
29691 Make the JSC GC use a separate heap for JSNumbers to get a 0.7-1.4% progression in SunSpider.
29710 Force numbers to be allocated in the secondary heap.