X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/93a3786624b2768d89bfa27e46598dc64e2fb70a..ef99ff287df9046eb88937225e0554eabb00e33c:/heap/ConservativeRoots.cpp diff --git a/heap/ConservativeRoots.cpp b/heap/ConservativeRoots.cpp index 752ce27..f00b2fb 100644 --- a/heap/ConservativeRoots.cpp +++ b/heap/ConservativeRoots.cpp @@ -27,11 +27,12 @@ #include "ConservativeRoots.h" #include "CodeBlock.h" +#include "CodeBlockSet.h" #include "CopiedSpace.h" #include "CopiedSpaceInlines.h" -#include "DFGCodeBlocks.h" #include "JSCell.h" #include "JSObject.h" +#include "JSCInlines.h" #include "Structure.h" namespace JSC { @@ -93,10 +94,14 @@ inline void ConservativeRoots::genericAddPointer(void* p, TinyBloomFilter filter template void ConservativeRoots::genericAddSpan(void* begin, void* end, MarkHook& markHook) { - ASSERT(begin <= end); - ASSERT((static_cast(end) - static_cast(begin)) < 0x1000000); - ASSERT(isPointerAligned(begin)); - ASSERT(isPointerAligned(end)); + if (begin > end) { + void* swapTemp = begin; + begin = end; + end = swapTemp; + } + + RELEASE_ASSERT(isPointerAligned(begin)); + RELEASE_ASSERT(isPointerAligned(end)); TinyBloomFilter filter = m_blocks->filter(); // Make a local copy of filter to show the compiler it won't alias, and can be register-allocated. for (char** it = static_cast(begin); it != static_cast(end); ++it) @@ -140,10 +145,9 @@ private: }; void ConservativeRoots::add( - void* begin, void* end, JITStubRoutineSet& jitStubRoutines, DFGCodeBlocks& dfgCodeBlocks) + void* begin, void* end, JITStubRoutineSet& jitStubRoutines, CodeBlockSet& codeBlocks) { - CompositeMarkHook markHook( - jitStubRoutines, dfgCodeBlocks); + CompositeMarkHook markHook(jitStubRoutines, codeBlocks); genericAddSpan(begin, end, markHook); }