Ignore:
Timestamp:
Apr 12, 2014, 11:22:27 AM (11 years ago)
Author:
[email protected]
Message:

DFG::FixupPhase should insert conversion nodes after the rest of fixup so that we know how the types settled
https://bugs.webkit.org/show_bug.cgi?id=131424

Reviewed by Geoffrey Garen.

This defers type conversion injection until we've decided on types. This makes the
process of deciding types a bit more flexible - for example we can naturally fixpoint
and change our minds. Only when things are settled do we actually insert conversions.

This is a necessary prerequisite for keeping double, int52, and JSValue data flow
separate. A SetLocal/GetLocal will appear to be JSValue until we fixpoint and realize
that there are typed uses. If we were eagerly inserting type conversions then we would
first insert a to/from-JSValue conversion in some cases only to then replace it by
the other conversions. It's probably trivial to remove those redundant conversions later
but I think it's better if we don't insert them to begin with.

  • bytecode/CodeOrigin.h:

(JSC::CodeOrigin::operator!):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::run):
(JSC::DFG::FixupPhase::fixupBlock):
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupSetLocalsInBlock):
(JSC::DFG::FixupPhase::fixEdge):
(JSC::DFG::FixupPhase::fixIntEdge):
(JSC::DFG::FixupPhase::injectTypeConversionsInBlock):
(JSC::DFG::FixupPhase::injectTypeConversionsForEdge):
(JSC::DFG::FixupPhase::addRequiredPhantom):
(JSC::DFG::FixupPhase::addPhantomsIfNecessary):
(JSC::DFG::FixupPhase::clearPhantomsAtEnd):
(JSC::DFG::FixupPhase::observeUntypedEdge): Deleted.
(JSC::DFG::FixupPhase::fixupUntypedSetLocalsInBlock): Deleted.
(JSC::DFG::FixupPhase::injectInt32ToDoubleNode): Deleted.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r167174 r167182  
     12014-04-11  Filip Pizlo  <[email protected]>
     2
     3        DFG::FixupPhase should insert conversion nodes after the rest of fixup so that we know how the types settled
     4        https://bugs.webkit.org/show_bug.cgi?id=131424
     5
     6        Reviewed by Geoffrey Garen.
     7       
     8        This defers type conversion injection until we've decided on types. This makes the
     9        process of deciding types a bit more flexible - for example we can naturally fixpoint
     10        and change our minds. Only when things are settled do we actually insert conversions.
     11       
     12        This is a necessary prerequisite for keeping double, int52, and JSValue data flow
     13        separate. A SetLocal/GetLocal will appear to be JSValue until we fixpoint and realize
     14        that there are typed uses. If we were eagerly inserting type conversions then we would
     15        first insert a to/from-JSValue conversion in some cases only to then replace it by
     16        the other conversions. It's probably trivial to remove those redundant conversions later
     17        but I think it's better if we don't insert them to begin with.
     18
     19        * bytecode/CodeOrigin.h:
     20        (JSC::CodeOrigin::operator!):
     21        * dfg/DFGFixupPhase.cpp:
     22        (JSC::DFG::FixupPhase::run):
     23        (JSC::DFG::FixupPhase::fixupBlock):
     24        (JSC::DFG::FixupPhase::fixupNode):
     25        (JSC::DFG::FixupPhase::fixupSetLocalsInBlock):
     26        (JSC::DFG::FixupPhase::fixEdge):
     27        (JSC::DFG::FixupPhase::fixIntEdge):
     28        (JSC::DFG::FixupPhase::injectTypeConversionsInBlock):
     29        (JSC::DFG::FixupPhase::injectTypeConversionsForEdge):
     30        (JSC::DFG::FixupPhase::addRequiredPhantom):
     31        (JSC::DFG::FixupPhase::addPhantomsIfNecessary):
     32        (JSC::DFG::FixupPhase::clearPhantomsAtEnd):
     33        (JSC::DFG::FixupPhase::observeUntypedEdge): Deleted.
     34        (JSC::DFG::FixupPhase::fixupUntypedSetLocalsInBlock): Deleted.
     35        (JSC::DFG::FixupPhase::injectInt32ToDoubleNode): Deleted.
     36
    1372014-04-11  Brian J. Burg  <[email protected]>
    238
Note: See TracChangeset for help on using the changeset viewer.