Ignore:
Timestamp:
Sep 20, 2013, 1:23:33 PM (12 years ago)
Author:
[email protected]
Message:

Clobberize phase forgets to indicate that it writes GCState for several node types
https://bugs.webkit.org/show_bug.cgi?id=121702

Reviewed by Oliver Hunt.

Added read and write for GCState to the nodes that could end up allocating (and thereby
cause a garbage collection).

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGClobberize.h

    r156047 r156192  
    127127    case InlineStart:
    128128    case Breakpoint:
    129     case CreateActivation:
    130     case CreateArguments:
    131129    case PhantomArguments:
    132130    case Jump:
     
    144142        return;
    145143
     144    case CreateActivation:
     145    case CreateArguments:
     146        write(SideState);
     147        read(GCState);
     148        write(GCState);
     149        return;
     150
    146151    // These are forward-exiting nodes that assume that the subsequent instruction
    147152    // is a MovHint, and they try to roll forward over this MovHint in their
     
    153158        return;
    154159       
     160    case ToThis:
    155161    case CreateThis:
    156     case ToThis:
     162        read(MiscFields);
     163        read(GCState);
     164        write(GCState);
     165        return;
     166
    157167    case VarInjectionWatchpoint:
    158168    case AllocationProfileWatchpoint:
     
    416426    case AllocatePropertyStorage:
    417427        write(JSObject_butterfly);
     428        read(GCState);
     429        write(GCState);
    418430        return;
    419431       
     
    421433        read(JSObject_butterfly);
    422434        write(JSObject_butterfly);
     435        read(GCState);
     436        write(GCState);
    423437        return;
    424438       
     
    433447        write(JSCell_structure);
    434448        write(JSObject_butterfly);
     449        read(GCState);
     450        write(GCState);
    435451        return;
    436452       
Note: See TracChangeset for help on using the changeset viewer.