Ignore:
Timestamp:
Sep 10, 2013, 2:55:45 PM (12 years ago)
Author:
[email protected]
Message:

Introduce a SpecInt48 type and be more careful about what we mean by "Top"
https://bugs.webkit.org/show_bug.cgi?id=121116

Reviewed by Oliver Hunt.

SpecInt48 will mean that we have something that would be a double if it was a JSValue,
but it's profitable to represent it as something other than a double.

SpecInt48AsDouble means that it has a value that could have been represented like
SpecInt48, but we're making a heuristic decision not to do it.

  • bytecode/SpeculatedType.h:

(JSC::isInt48Speculation):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::::executeEffects):
(JSC::DFG::::clobberCapturedVars):

  • dfg/DFGAbstractValue.cpp:

(JSC::DFG::AbstractValue::filter):

  • dfg/DFGAbstractValue.h:

(JSC::DFG::AbstractValue::makeHeapTop):
(JSC::DFG::AbstractValue::makeBytecodeTop):
(JSC::DFG::AbstractValue::isHeapTop):
(JSC::DFG::AbstractValue::heapTop):
(JSC::DFG::AbstractValue::validateType):
(JSC::DFG::AbstractValue::validate):
(JSC::DFG::AbstractValue::makeTop):

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::initialize):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::noticeOSREntry):

  • dfg/DFGUseKind.h:

(JSC::DFG::typeFilterFor):

File:
1 edited

Legend:

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

    r155023 r155480  
    110110        root->valuesAtTail.argument(i).clear();
    111111        if (m_graph.m_form == SSA) {
    112             root->valuesAtHead.argument(i).makeTop();
     112            root->valuesAtHead.argument(i).makeHeapTop();
    113113            continue;
    114114        }
     
    117117        ASSERT(node->op() == SetArgument);
    118118        if (!node->variableAccessData()->shouldUnboxIfPossible()) {
    119             root->valuesAtHead.argument(i).makeTop();
     119            root->valuesAtHead.argument(i).makeHeapTop();
    120120            continue;
    121121        }
     
    130130            root->valuesAtHead.argument(i).setType(SpecCell);
    131131        else
    132             root->valuesAtHead.argument(i).makeTop();
     132            root->valuesAtHead.argument(i).makeHeapTop();
    133133    }
    134134    for (size_t i = 0; i < root->valuesAtHead.numberOfLocals(); ++i) {
    135135        Node* node = root->variablesAtHead.local(i);
    136136        if (node && node->variableAccessData()->isCaptured())
    137             root->valuesAtHead.local(i).makeTop();
     137            root->valuesAtHead.local(i).makeHeapTop();
    138138        else
    139139            root->valuesAtHead.local(i).clear();
Note: See TracChangeset for help on using the changeset viewer.