Changeset 252032 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Nov 4, 2019, 6:52:02 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r252021 r252032 212 212 RegisterID* ImportNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 213 213 { 214 RefPtr<RegisterID> importModule = generator. emitGetGlobalPrivate(generator.newTemporary(), generator.propertyNames().builtinNames().importModulePrivateName());214 RefPtr<RegisterID> importModule = generator.moveLinkTimeConstant(nullptr, LinkTimeConstant::importModule); 215 215 CallArguments arguments(generator, nullptr, 1); 216 216 generator.emitLoad(arguments.thisRegister(), jsUndefined()); … … 986 986 RegisterID* BytecodeIntrinsicNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 987 987 { 988 return (this->*m_emitter)(generator, dst); 988 if (m_entry.type() == BytecodeIntrinsicRegistry::Type::Emitter) 989 return (this->*m_entry.emitter())(generator, dst); 990 if (dst == generator.ignoredResult()) 991 return nullptr; 992 return generator.moveLinkTimeConstant(dst, m_entry.linkTimeConstant()); 989 993 } 990 994 … … 1014 1018 static JSPromise::Field promiseInternalFieldIndex(BytecodeIntrinsicNode* node) 1015 1019 { 1016 if (node->emitter() == &BytecodeIntrinsicNode::emit_intrinsic_promiseFieldFlags) 1020 ASSERT(node->entry().type() == BytecodeIntrinsicRegistry::Type::Emitter); 1021 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_promiseFieldFlags) 1017 1022 return JSPromise::Field::Flags; 1018 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_promiseFieldReactionsOrResult)1023 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_promiseFieldReactionsOrResult) 1019 1024 return JSPromise::Field::ReactionsOrResult; 1020 1025 RELEASE_ASSERT_NOT_REACHED(); … … 1024 1029 static JSGenerator::Field generatorInternalFieldIndex(BytecodeIntrinsicNode* node) 1025 1030 { 1026 if (node->emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldState) 1031 ASSERT(node->entry().type() == BytecodeIntrinsicRegistry::Type::Emitter); 1032 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldState) 1027 1033 return JSGenerator::Field::State; 1028 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldNext)1034 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldNext) 1029 1035 return JSGenerator::Field::Next; 1030 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldThis)1036 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldThis) 1031 1037 return JSGenerator::Field::This; 1032 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldFrame)1038 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldFrame) 1033 1039 return JSGenerator::Field::Frame; 1034 1040 RELEASE_ASSERT_NOT_REACHED(); … … 1038 1044 static JSAsyncGenerator::Field asyncGeneratorInternalFieldIndex(BytecodeIntrinsicNode* node) 1039 1045 { 1040 if (node->emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldState) 1046 ASSERT(node->entry().type() == BytecodeIntrinsicRegistry::Type::Emitter); 1047 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldState) 1041 1048 return JSAsyncGenerator::Field::State; 1042 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldNext)1049 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldNext) 1043 1050 return JSAsyncGenerator::Field::Next; 1044 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldThis)1051 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldThis) 1045 1052 return JSAsyncGenerator::Field::This; 1046 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldFrame)1053 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldFrame) 1047 1054 return JSAsyncGenerator::Field::Frame; 1048 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_asyncGeneratorFieldSuspendReason)1055 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_asyncGeneratorFieldSuspendReason) 1049 1056 return JSAsyncGenerator::Field::SuspendReason; 1050 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_asyncGeneratorFieldQueueFirst)1057 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_asyncGeneratorFieldQueueFirst) 1051 1058 return JSAsyncGenerator::Field::QueueFirst; 1052 if (node->e mitter() == &BytecodeIntrinsicNode::emit_intrinsic_asyncGeneratorFieldQueueLast)1059 if (node->entry().emitter() == &BytecodeIntrinsicNode::emit_intrinsic_asyncGeneratorFieldQueueLast) 1053 1060 return JSAsyncGenerator::Field::QueueLast; 1054 1061 RELEASE_ASSERT_NOT_REACHED(); … … 4097 4104 4098 4105 // load and call @asyncFunctionResume 4099 auto var = generator.variable(generator.propertyNames().builtinNames().asyncFunctionResumePrivateName()); 4100 RefPtr<RegisterID> scope = generator.newTemporary(); 4101 generator.move(scope.get(), generator.emitResolveScope(scope.get(), var)); 4102 RefPtr<RegisterID> asyncFunctionResume = generator.emitGetFromScope(generator.newTemporary(), scope.get(), var, ThrowIfNotFound); 4106 RefPtr<RegisterID> asyncFunctionResume = generator.moveLinkTimeConstant(nullptr, LinkTimeConstant::asyncFunctionResume); 4103 4107 4104 4108 CallArguments args(generator, nullptr, 4); … … 4579 4583 RefPtr<RegisterID> addMethod; 4580 4584 if (m_containsRestElement && m_containsComputedProperty) { 4581 auto var = generator.variable(generator.propertyNames().builtinNames().SetPrivateName()); 4582 4583 RefPtr<RegisterID> scope = generator.newTemporary(); 4584 generator.move(scope.get(), generator.emitResolveScope(scope.get(), var)); 4585 RefPtr<RegisterID> setConstructor = generator.emitGetFromScope(generator.newTemporary(), scope.get(), var, ThrowIfNotFound); 4585 RefPtr<RegisterID> setConstructor = generator.moveLinkTimeConstant(nullptr, LinkTimeConstant::Set); 4586 4586 4587 4587 CallArguments args(generator, nullptr, 0); … … 4634 4634 4635 4635 // load and call @copyDataProperties 4636 auto var = generator.variable(generator.propertyNames().builtinNames().copyDataPropertiesPrivateName()); 4637 4638 RefPtr<RegisterID> scope = generator.newTemporary(); 4639 generator.move(scope.get(), generator.emitResolveScope(scope.get(), var)); 4640 RefPtr<RegisterID> copyDataProperties = generator.emitGetFromScope(generator.newTemporary(), scope.get(), var, ThrowIfNotFound); 4636 RefPtr<RegisterID> copyDataProperties = generator.moveLinkTimeConstant(nullptr, LinkTimeConstant::copyDataProperties); 4641 4637 4642 4638 CallArguments args(generator, nullptr, 3); … … 4811 4807 4812 4808 // load and call @copyDataPropertiesNoExclusions 4813 auto var = generator.variable(generator.propertyNames().builtinNames().copyDataPropertiesNoExclusionsPrivateName()); 4814 4815 RefPtr<RegisterID> scope = generator.newTemporary(); 4816 generator.move(scope.get(), generator.emitResolveScope(scope.get(), var)); 4817 RefPtr<RegisterID> copyDataProperties = generator.emitGetFromScope(generator.newTemporary(), scope.get(), var, ThrowIfNotFound); 4809 RefPtr<RegisterID> copyDataProperties = generator.moveLinkTimeConstant(nullptr, LinkTimeConstant::copyDataPropertiesNoExclusions); 4818 4810 4819 4811 CallArguments args(generator, nullptr, 2);
Note:
See TracChangeset
for help on using the changeset viewer.