Ignore:
Timestamp:
Sep 25, 2012, 7:56:19 PM (13 years ago)
Author:
[email protected]
Message:

DFG ArrayPush, ArrayPop don't handle clobbering or having a bad time correctly
https://bugs.webkit.org/show_bug.cgi?id=97535

Source/JavaScriptCore:

Reviewed by Oliver Hunt.

  • dfg/DFGAbstractState.cpp:

(JSC::DFG::AbstractState::execute):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsic):

  • dfg/DFGStructureCheckHoistingPhase.cpp:

(JSC::DFG::StructureCheckHoistingPhase::run):

LayoutTests:

Rubber stamped by Oliver Hunt.

  • fast/js/dfg-array-pop-side-effects-expected.txt: Added.
  • fast/js/dfg-array-pop-side-effects.html: Added.
  • fast/js/dfg-array-push-bad-time-expected.txt: Added.
  • fast/js/dfg-array-push-bad-time.html: Added.
  • fast/js/dfg-array-push-slow-put-expected.txt: Added.
  • fast/js/dfg-array-push-slow-put.html: Added.
  • fast/js/jsc-test-list:
  • fast/js/script-tests/dfg-array-pop-side-effects.js: Added.

(foo):
(.b):

  • fast/js/script-tests/dfg-array-push-bad-time.js: Added.
  • fast/js/script-tests/dfg-array-push-slow-put.js: Added.

(foo):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGAbstractState.cpp

    r129316 r129588  
    10021002    case ArrayPush:
    10031003        node.setCanExit(true);
     1004        clobberWorld(node.codeOrigin, indexInBlock);
    10041005        forNode(nodeIndex).set(SpecNumber);
    10051006        break;
     
    10071008    case ArrayPop:
    10081009        node.setCanExit(true);
     1010        clobberWorld(node.codeOrigin, indexInBlock);
    10091011        forNode(nodeIndex).makeTop();
    10101012        break;
Note: See TracChangeset for help on using the changeset viewer.