Changeset 47022 in webkit for trunk/JavaScriptCore/GNUmakefile.am


Ignore:
Timestamp:
Aug 10, 2009, 9:35:02 PM (16 years ago)
Author:
[email protected]
Message:

Stack overflow crash in JavaScript garbage collector mark pass
https://bugs.webkit.org/show_bug.cgi?id=12216

Reviewed by Gavin Barraclough and Sam Weinig

Make the GC mark phase iterative by using an explicit mark stack.
To do this marking any single object is performed in multiple stages

  • The object is appended to the MarkStack, this sets the marked bit for the object using the new markDirect() function, and then returns
  • When the MarkStack is drain()ed the object is popped off the stack and markChildren(MarkStack&) is called on the object to collect all of its children. drain() then repeats until the stack is empty.

Additionally I renamed a number of methods from 'mark' to 'markAggregate'
in order to make it more clear that marking of those object was not
going to result in an actual recursive mark.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/GNUmakefile.am

    r47003 r47022  
    192192        JavaScriptCore/runtime/LiteralParser.cpp \
    193193        JavaScriptCore/runtime/LiteralParser.h \
     194        JavaScriptCore/runtime/MarkStack.cpp \
     195        JavaScriptCore/runtime/MarkStack.h \
     196        JavaScriptCore/runtime/MarkStackPosix.cpp \
    194197        JavaScriptCore/runtime/SmallStrings.cpp \
    195198        JavaScriptCore/runtime/SmallStrings.h \
     
    437440        JavaScriptCore/runtime/Lookup.cpp \
    438441        JavaScriptCore/runtime/Lookup.h \
     442        JavaScriptCore/runtime/MarkStack.cpp \
     443        JavaScriptCore/runtime/MarkStack.h \
     444        JavaScriptCore/runtime/MarkStackWin.cpp \
    439445        JavaScriptCore/runtime/MathObject.cpp \
    440446        JavaScriptCore/runtime/MathObject.h \
Note: See TracChangeset for help on using the changeset viewer.