Ignore:
Timestamp:
Dec 7, 2015, 4:31:49 PM (10 years ago)
Author:
[email protected]
Message:

CRASH: CodeBlock::setOptimizationThresholdBasedOnCompilationResult + 567
https://bugs.webkit.org/show_bug.cgi?id=151892

Reviewed by Geoffrey Garen.

Reverted the change made in change set r193491.

The updated change is to finish all concurrent compilations and install the resulting
code blocks before we make any state changes due to debugger activity. After all code
blocks have been installed, we make the debugger state changes, including jettisoning
all optimized code blocks.

This means that we will discard the optimized code blocks we just installed,
but we won't do that while on the install code block path.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::setOptimizationThresholdBasedOnCompilationResult): Reverted r193491.

  • debugger/Debugger.cpp:

(JSC::Debugger::setSteppingMode):
(JSC::Debugger::registerCodeBlock):
(JSC::Debugger::toggleBreakpoint):
(JSC::Debugger::clearBreakpoints):
(JSC::Debugger::clearDebuggerRequests):
Call Heap::completeAllDFGPlans() before updating code blocks for debugging changes.

  • heap/Heap.h: Made completeAllDFGPlans() public.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r193649 r193674  
    37103710   
    37113711    CodeBlock* theReplacement = replacement();
    3712 
    3713     // If our replacement is baseline code, the debugger has probably attached and recompiled the function.
    3714     // No threshold to change.
    3715     if ((result == CompilationSuccessful) && (theReplacement->jitType() == JITCode::BaselineJIT))
    3716         return;
    3717 
    37183712    if ((result == CompilationSuccessful) != (theReplacement != this)) {
    37193713        dataLog(*this, ": we have result = ", result, " but ");
Note: See TracChangeset for help on using the changeset viewer.