Changeset 156003 in webkit


Ignore:
Timestamp:
Sep 17, 2013 2:57:25 PM (11 years ago)
Author:
mhahnenberg@apple.com
Message:

DFG doesn't properly keep scope alive for op_put_to_scope
https://bugs.webkit.org/show_bug.cgi?id=121519

Reviewed by Michael Saboff.

This was a latent bug that can't actually occur in ToT. It was uncovered by causing slow
path calls in the baseline JIT for op_put_to_scope in places where we couldn't before (but
which were necessary for gen GC).

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r155995 r156003  
     12013-09-17  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        DFG doesn't properly keep scope alive for op_put_to_scope
     4        https://bugs.webkit.org/show_bug.cgi?id=121519
     5
     6        Reviewed by Michael Saboff.
     7
     8        This was a latent bug that can't actually occur in ToT. It was uncovered by causing slow
     9        path calls in the baseline JIT for op_put_to_scope in places where we couldn't before (but
     10        which were necessary for gen GC).
     11
     12        * dfg/DFGByteCodeParser.cpp:
     13        (JSC::DFG::ByteCodeParser::parseBlock):
     14
    1152013-09-17  Filip Pizlo  <fpizlo@apple.com>
    216
  • trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

    r155729 r156003  
    31133113                Node* base = cellConstantWithStructureCheck(globalObject, status.oldStructure());
    31143114                handlePutByOffset(base, identifierNumber, static_cast<PropertyOffset>(operand), get(value));
     3115                // Keep scope alive until after put.
     3116                addToGraph(Phantom, get(scope));
    31153117                break;
    31163118            }
     
    31203122                ASSERT(!entry.couldBeWatched() || !m_graph.watchpoints().isStillValid(entry.watchpointSet()));
    31213123                addToGraph(PutGlobalVar, OpInfo(operand), get(value));
     3124                // Keep scope alive until after put.
     3125                addToGraph(Phantom, get(scope));
    31223126                break;
    31233127            }
Note: See TracChangeset for help on using the changeset viewer.