Changeset 178918 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Jan 22, 2015, 10:07:16 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r178882 r178918 292 292 // Fast case: this loop just handles regular value properties. 293 293 PropertyListNode* p = this; 294 for (; p && p->m_node->m_type == PropertyNode::Constant; p = p->m_next) { 295 if (p->m_node->m_name) { 296 generator.emitDirectPutById(newObj.get(), *p->m_node->name(), generator.emitNode(p->m_node->m_assign)); 297 continue; 298 } 299 RefPtr<RegisterID> propertyName = generator.emitNode(p->m_node->m_expression); 300 generator.emitDirectPutByVal(newObj.get(), propertyName.get(), generator.emitNode(p->m_node->m_assign)); 301 } 294 for (; p && p->m_node->m_type == PropertyNode::Constant; p = p->m_next) 295 emitPutConstantProperty(generator, newObj.get(), *p->m_node); 302 296 303 297 // Were there any get/set properties? … … 325 319 // Handle regular values. 326 320 if (node->m_type == PropertyNode::Constant) { 327 if (node->name()) { 328 generator.emitDirectPutById(newObj.get(), *node->name(), generator.emitNode(node->m_assign)); 329 continue; 330 } 331 RefPtr<RegisterID> propertyName = generator.emitNode(p->m_node->m_expression); 332 generator.emitDirectPutByVal(newObj.get(), propertyName.get(), generator.emitNode(p->m_node->m_assign)); 321 emitPutConstantProperty(generator, newObj.get(), *node); 333 322 continue; 334 323 } 335 324 336 325 RegisterID* value = generator.emitNode(node->m_assign); 337 326 … … 376 365 377 366 return generator.moveToDestinationIfNeeded(dst, newObj.get()); 367 } 368 369 void PropertyListNode::emitPutConstantProperty(BytecodeGenerator& generator, RegisterID* newObj, PropertyNode& node) 370 { 371 if (node.name()) { 372 generator.emitDirectPutById(newObj, *node.name(), generator.emitNode(node.m_assign)); 373 return; 374 } 375 RefPtr<RegisterID> propertyName = generator.emitNode(node.m_expression); 376 generator.emitDirectPutByVal(newObj, propertyName.get(), generator.emitNode(node.m_assign)); 378 377 } 379 378
Note:
See TracChangeset
for help on using the changeset viewer.