Skip to content
  • barraclough@apple.com's avatar
    Bug 51358 - Should check stack depth rather than using recursion limits in byte compilation · dd4a6e42
    barraclough@apple.com authored
    Reviewed by Olver Hunt.
    
    The current implementation of recursion limit checking is not safe on smaller stacks.
    Switch to using a common mechanism, shared with the parser, to check recursion limits.
    
    Make bytecompiler use StackBounds. Empirical testing shows emitStrcat to have the largest
    footprint on the stack, at just under 1k on x86-64.  Given this, the default recursion
    check (requiring 4k of available space to recurse) seems reasonable.
    
    * bytecompiler/BytecodeGenerator.cpp:
    (JSC::BytecodeGenerator::BytecodeGenerator):
    * bytecompiler/BytecodeGenerator.h:
    (JSC::BytecodeGenerator::emitNode):
    (JSC::BytecodeGenerator::emitNodeInConditionContext):
    * bytecompiler/NodesCodegen.cpp:
    (JSC::BinaryOpNode::emitStrcat):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74374 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    dd4a6e42