Changeset 184347 in webkit
- Timestamp:
- May 14, 2015, 12:58:00 PM (10 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r184346 r184347 1 2015-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 1 20 2015-05-14 Andreas Kling <akling@apple.com> 2 21 -
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r184337 r184347 272 272 RefPtr<RegisterID> base = nullptr; 273 273 if (!m_tag->isLocation()) { 274 tag = generator.emitNode(generator.newTemporary(), m_tag); 274 tag = generator.newTemporary(); 275 tag = generator.emitNode(tag.get(), m_tag); 275 276 } else if (m_tag->isResolveNode()) { 276 277 ResolveNode* resolve = static_cast<ResolveNode*>(m_tag); … … 292 293 } else if (m_tag->isBracketAccessorNode()) { 293 294 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()); 295 297 RefPtr<RegisterID> property = generator.emitNode(bracket->subscript()); 296 298 tag = generator.emitGetByVal(generator.newTemporary(), base.get(), property.get()); … … 298 300 ASSERT(m_tag->isDotAccessorNode()); 299 301 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()); 301 304 tag = generator.emitGetById(generator.newTemporary(), base.get(), dot->identifier()); 302 305 } -
trunk/Source/JavaScriptCore/runtime/JSTemplateRegistryKey.cpp
r184337 r184347 33 33 namespace JSC { 34 34 35 const ClassInfo JSTemplateRegistryKey::s_info = { "TemplateRegistryKey", nullptr, nullptr, CREATE_METHOD_TABLE(JSTemplateRegistryKey) };35 const ClassInfo JSTemplateRegistryKey::s_info = { "TemplateRegistryKey", &Base::s_info, nullptr, CREATE_METHOD_TABLE(JSTemplateRegistryKey) }; 36 36 37 37
Note:
See TracChangeset
for help on using the changeset viewer.