Changeset 266264 in webkit for trunk/Source/JavaScriptCore/bytecompiler
- Timestamp:
- Aug 27, 2020, 5:27:19 PM (5 years ago)
- Location:
- trunk/Source/JavaScriptCore/bytecompiler
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
r266106 r266264 2577 2577 } 2578 2578 2579 RegisterID* BytecodeGenerator::emitDirectPutById(RegisterID* base, const Identifier& property, RegisterID* value , PropertyNode::PutType putType)2579 RegisterID* BytecodeGenerator::emitDirectPutById(RegisterID* base, const Identifier& property, RegisterID* value) 2580 2580 { 2581 2581 ASSERT_WITH_MESSAGE(!parseIndex(property), "Indexed properties should be handled with put_by_val(direct)."); … … 2585 2585 m_staticPropertyAnalyzer.putById(base, propertyIndex); 2586 2586 2587 PutByIdFlags type = (putType == PropertyNode::KnownDirect || property != m_vm.propertyNames->underscoreProto) ? PutByIdFlags::createDirect(ecmaMode()) : PutByIdFlags::create(ecmaMode());2587 PutByIdFlags type = PutByIdFlags::createDirect(ecmaMode()); 2588 2588 OpPutById::emit(this, base, propertyIndex, value, type); 2589 2589 return value; … … 2693 2693 } 2694 2694 2695 RegisterID* BytecodeGenerator::emitDirectSetPrototypeOf(RegisterID* dst, RegisterID* base, RegisterID* prototype, const JSTextPosition& divot, const JSTextPosition& divotStart, const JSTextPosition& divotEnd)2695 RegisterID* BytecodeGenerator::emitDirectSetPrototypeOf(RegisterID* base, RegisterID* prototype) 2696 2696 { 2697 2697 RefPtr<RegisterID> setPrototypeDirect = moveLinkTimeConstant(nullptr, LinkTimeConstant::setPrototypeDirect); … … 2701 2701 move(args.argumentRegister(0), prototype); 2702 2702 2703 emitCall(newTemporary(), setPrototypeDirect.get(), NoExpectedFunction, args, divot, divotStart, divotEnd, DebuggableCall::No); 2704 return dst; 2703 JSTextPosition position; 2704 emitCall(newTemporary(), setPrototypeDirect.get(), NoExpectedFunction, args, position, position, position, DebuggableCall::No); 2705 return base; 2705 2706 } 2706 2707 -
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
r266106 r266264 808 808 RegisterID* emitPutById(RegisterID* base, const Identifier& property, RegisterID* value); 809 809 RegisterID* emitPutById(RegisterID* base, RegisterID* thisValue, const Identifier& property, RegisterID* value); 810 RegisterID* emitDirectPutById(RegisterID* base, const Identifier& property, RegisterID* value , PropertyNode::PutType);810 RegisterID* emitDirectPutById(RegisterID* base, const Identifier& property, RegisterID* value); 811 811 RegisterID* emitDeleteById(RegisterID* dst, RegisterID* base, const Identifier&); 812 812 RegisterID* emitGetByVal(RegisterID* dst, RegisterID* base, RegisterID* property); 813 813 RegisterID* emitGetByVal(RegisterID* dst, RegisterID* base, RegisterID* thisValue, RegisterID* property); 814 814 RegisterID* emitGetPrototypeOf(RegisterID* dst, RegisterID* value); 815 RegisterID* emitDirectSetPrototypeOf(RegisterID* dst, RegisterID* base, RegisterID* prototype, const JSTextPosition& divot, const JSTextPosition& divotStart, const JSTextPosition& divotEnd);815 RegisterID* emitDirectSetPrototypeOf(RegisterID* base, RegisterID* prototype); 816 816 RegisterID* emitPutByVal(RegisterID* base, RegisterID* property, RegisterID* value); 817 817 RegisterID* emitPutByVal(RegisterID* base, RegisterID* thisValue, RegisterID* property, RegisterID* value); -
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r266106 r266264 748 748 ASSERT(!(node.type() & PropertyNode::Private)); 749 749 750 if (PropertyNode::isUnderscoreProtoSetter(generator.vm(), node)) { 751 RefPtr<RegisterID> prototype = generator.emitNode(node.m_assign); 752 generator.emitDirectSetPrototypeOf(newObj, prototype.get()); 753 return; 754 } 755 750 756 bool shouldSetFunctionName = generator.shouldSetFunctionName(node.m_assign); 751 757 … … 778 784 Optional<uint32_t> optionalIndex = parseIndex(*identifier); 779 785 if (!optionalIndex) { 780 generator.emitDirectPutById(newObj, *identifier, value.get() , node.putType());786 generator.emitDirectPutById(newObj, *identifier, value.get()); 781 787 return; 782 788 } … … 1395 1401 ASSERT(!node->m_next); 1396 1402 1397 return generator.move(dst, generator.emitDirectPutById(base.get(), ident, value.get() , PropertyNode::KnownDirect));1403 return generator.move(dst, generator.emitDirectPutById(base.get(), ident, value.get())); 1398 1404 } 1399 1405 … … 1411 1417 ASSERT(!node->m_next); 1412 1418 1413 return generator.move(dst, generator.emitDirectPutById(base.get(), generator.parserArena().identifierArena().makeIdentifier(generator.vm(), symbol), value.get() , PropertyNode::KnownDirect));1419 return generator.move(dst, generator.emitDirectPutById(base.get(), generator.parserArena().identifierArena().makeIdentifier(generator.vm(), symbol), value.get())); 1414 1420 } 1415 1421 … … 4909 4915 generator.emitLabel(protoParentIsObjectOrNullLabel.get()); 4910 4916 4911 generator.emitDirectSetPrototypeOf( tempRegister.get(), constructor.get(), superclass.get(), divot(), divotStart(), divotEnd());4917 generator.emitDirectSetPrototypeOf(constructor.get(), superclass.get()); 4912 4918 generator.emitLabel(superclassIsNullLabel.get()); 4913 generator.emitDirectSetPrototypeOf( tempRegister.get(), prototype.get(), protoParent.get(), divot(), divotStart(), divotEnd());4919 generator.emitDirectSetPrototypeOf(prototype.get(), protoParent.get()); 4914 4920 } 4915 4921 … … 4936 4942 emitPutHomeObject(generator, instanceFieldInitializer.get(), prototype.get()); 4937 4943 4938 generator.emitDirectPutById(constructor.get(), generator.propertyNames().builtinNames().instanceFieldInitializerPrivateName(), instanceFieldInitializer.get() , PropertyNode::Unknown);4944 generator.emitDirectPutById(constructor.get(), generator.propertyNames().builtinNames().instanceFieldInitializerPrivateName(), instanceFieldInitializer.get()); 4939 4945 } 4940 4946 }
Note:
See TracChangeset
for help on using the changeset viewer.