Changeset 184347 in webkit


Ignore:
Timestamp:
May 14, 2015, 12:58:00 PM (10 years ago)
Author:
Yusuke Suzuki
Message:

REGRESSION (r184337): ASSERT failed in debug builds for tagged templates
https://bugs.webkit.org/show_bug.cgi?id=145013

Reviewed by Filip Pizlo.

Fix the regression introduced by r184337.

  1. JSTemporaryRegistryKey::s_info should inherit the Base::s_info, JSDestructibleObject::s_info.
  1. The first register argument of BytecodeGenerator::emitNode should be a referenced register if it is a temporary register.
  • bytecompiler/NodesCodegen.cpp:

(JSC::TaggedTemplateNode::emitBytecode):

  • runtime/JSTemplateRegistryKey.cpp:
Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r184346 r184347  
     12015-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        REGRESSION (r184337): ASSERT failed in debug builds for tagged templates
     4        https://bugs.webkit.org/show_bug.cgi?id=145013
     5
     6        Reviewed by Filip Pizlo.
     7
     8        Fix the regression introduced by r184337.
     9
     10        1. JSTemporaryRegistryKey::s_info should inherit the Base::s_info,
     11           JSDestructibleObject::s_info.
     12
     13        2. The first register argument of BytecodeGenerator::emitNode
     14           should be a referenced register if it is a temporary register.
     15
     16        * bytecompiler/NodesCodegen.cpp:
     17        (JSC::TaggedTemplateNode::emitBytecode):
     18        * runtime/JSTemplateRegistryKey.cpp:
     19
    1202015-05-14  Andreas Kling  <akling@apple.com>
    221
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r184337 r184347  
    272272    RefPtr<RegisterID> base = nullptr;
    273273    if (!m_tag->isLocation()) {
    274         tag = generator.emitNode(generator.newTemporary(), m_tag);
     274        tag = generator.newTemporary();
     275        tag = generator.emitNode(tag.get(), m_tag);
    275276    } else if (m_tag->isResolveNode()) {
    276277        ResolveNode* resolve = static_cast<ResolveNode*>(m_tag);
     
    292293    } else if (m_tag->isBracketAccessorNode()) {
    293294        BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(m_tag);
    294         base = generator.emitNode(generator.newTemporary(), bracket->base());
     295        base = generator.newTemporary();
     296        base = generator.emitNode(base.get(), bracket->base());
    295297        RefPtr<RegisterID> property = generator.emitNode(bracket->subscript());
    296298        tag = generator.emitGetByVal(generator.newTemporary(), base.get(), property.get());
     
    298300        ASSERT(m_tag->isDotAccessorNode());
    299301        DotAccessorNode* dot = static_cast<DotAccessorNode*>(m_tag);
    300         base = generator.emitNode(generator.newTemporary(), dot->base());
     302        base = generator.newTemporary();
     303        base = generator.emitNode(base.get(), dot->base());
    301304        tag = generator.emitGetById(generator.newTemporary(), base.get(), dot->identifier());
    302305    }
  • trunk/Source/JavaScriptCore/runtime/JSTemplateRegistryKey.cpp

    r184337 r184347  
    3333namespace JSC {
    3434
    35 const ClassInfo JSTemplateRegistryKey::s_info = { "TemplateRegistryKey", nullptr, nullptr, CREATE_METHOD_TABLE(JSTemplateRegistryKey) };
     35const ClassInfo JSTemplateRegistryKey::s_info = { "TemplateRegistryKey", &Base::s_info, nullptr, CREATE_METHOD_TABLE(JSTemplateRegistryKey) };
    3636
    3737
Note: See TracChangeset for help on using the changeset viewer.