Changeset 250025 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Sep 17, 2019, 10:02:45 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r250005 r250025 35 35 #include "JSCInlines.h" 36 36 #include "JSFunction.h" 37 #include "JSGenerator Function.h"37 #include "JSGenerator.h" 38 38 #include "JSGlobalObject.h" 39 39 #include "JSImmutableButterfly.h" … … 1021 1021 } 1022 1022 1023 static JSGenerator::Field generatorInternalFieldIndex(BytecodeIntrinsicNode* node) 1024 { 1025 if (node->emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldState) 1026 return JSGenerator::Field::State; 1027 if (node->emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldNext) 1028 return JSGenerator::Field::Next; 1029 if (node->emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldThis) 1030 return JSGenerator::Field::This; 1031 if (node->emitter() == &BytecodeIntrinsicNode::emit_intrinsic_generatorFieldFrame) 1032 return JSGenerator::Field::Frame; 1033 RELEASE_ASSERT_NOT_REACHED(); 1034 return JSGenerator::Field::State; 1035 } 1036 1023 1037 RegisterID* BytecodeIntrinsicNode::emit_intrinsic_getPromiseInternalField(BytecodeGenerator& generator, RegisterID* dst) 1024 1038 { … … 1029 1043 unsigned index = static_cast<unsigned>(promiseInternalFieldIndex(static_cast<BytecodeIntrinsicNode*>(node->m_expr))); 1030 1044 ASSERT(index < JSPromise::numberOfInternalFields); 1045 ASSERT(!node->m_next); 1046 1047 return generator.emitGetInternalField(generator.finalDestination(dst), base.get(), index); 1048 } 1049 1050 RegisterID* BytecodeIntrinsicNode::emit_intrinsic_getGeneratorInternalField(BytecodeGenerator& generator, RegisterID* dst) 1051 { 1052 ArgumentListNode* node = m_args->m_listNode; 1053 RefPtr<RegisterID> base = generator.emitNode(node); 1054 node = node->m_next; 1055 RELEASE_ASSERT(node->m_expr->isBytecodeIntrinsicNode()); 1056 unsigned index = static_cast<unsigned>(generatorInternalFieldIndex(static_cast<BytecodeIntrinsicNode*>(node->m_expr))); 1057 ASSERT(index < JSGenerator::numberOfInternalFields); 1031 1058 ASSERT(!node->m_next); 1032 1059 … … 1111 1138 unsigned index = static_cast<unsigned>(promiseInternalFieldIndex(static_cast<BytecodeIntrinsicNode*>(node->m_expr))); 1112 1139 ASSERT(index < JSPromise::numberOfInternalFields); 1140 node = node->m_next; 1141 RefPtr<RegisterID> value = generator.emitNode(node); 1142 1143 ASSERT(!node->m_next); 1144 1145 return generator.move(dst, generator.emitPutInternalField(base.get(), index, value.get())); 1146 } 1147 1148 RegisterID* BytecodeIntrinsicNode::emit_intrinsic_putGeneratorInternalField(BytecodeGenerator& generator, RegisterID* dst) 1149 { 1150 ArgumentListNode* node = m_args->m_listNode; 1151 RefPtr<RegisterID> base = generator.emitNode(node); 1152 node = node->m_next; 1153 RELEASE_ASSERT(node->m_expr->isBytecodeIntrinsicNode()); 1154 unsigned index = static_cast<unsigned>(generatorInternalFieldIndex(static_cast<BytecodeIntrinsicNode*>(node->m_expr))); 1155 ASSERT(index < JSGenerator::numberOfInternalFields); 1113 1156 node = node->m_next; 1114 1157 RefPtr<RegisterID> value = generator.emitNode(node); … … 1231 1274 1232 1275 return generator.move(dst, generator.emitIdWithProfile(idValue.get(), speculation)); 1276 } 1277 1278 RegisterID* BytecodeIntrinsicNode::emit_intrinsic_isGenerator(JSC::BytecodeGenerator& generator, JSC::RegisterID* dst) 1279 { 1280 ArgumentListNode* node = m_args->m_listNode; 1281 RefPtr<RegisterID> src = generator.emitNode(node); 1282 ASSERT(!node->m_next); 1283 1284 return generator.move(dst, generator.emitIsGenerator(generator.tempDestination(dst), src.get())); 1233 1285 } 1234 1286 … … 3994 4046 generator.move(args.argumentRegister(argumentCount++), generator.promiseRegister()); 3995 4047 generator.emitLoad(args.argumentRegister(argumentCount++), jsUndefined()); 3996 generator.emitLoad(args.argumentRegister(argumentCount++), jsNumber(static_cast<int32_t>(JSGenerator Function::GeneratorResumeMode::NormalMode)));4048 generator.emitLoad(args.argumentRegister(argumentCount++), jsNumber(static_cast<int32_t>(JSGenerator::GeneratorResumeMode::NormalMode))); 3997 4049 // JSTextPosition(int _line, int _offset, int _lineStartOffset) 3998 4050 JSTextPosition divot(firstLine(), startOffset(), lineStartOffset()); … … 4011 4063 { 4012 4064 RefPtr<RegisterID> condition = generator.newTemporary(); 4013 generator.emitEqualityOp<OpStricteq>(condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast<int32_t>(JSGenerator Function::GeneratorResumeMode::NormalMode))));4065 generator.emitEqualityOp<OpStricteq>(condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast<int32_t>(JSGenerator::GeneratorResumeMode::NormalMode)))); 4014 4066 generator.emitJumpIfTrue(condition.get(), generatorBodyLabel.get()); 4015 4067 4016 4068 Ref<Label> throwLabel = generator.newLabel(); 4017 generator.emitEqualityOp<OpStricteq>(condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast<int32_t>(JSGenerator Function::GeneratorResumeMode::ThrowMode))));4069 generator.emitEqualityOp<OpStricteq>(condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast<int32_t>(JSGenerator::GeneratorResumeMode::ThrowMode)))); 4018 4070 generator.emitJumpIfTrue(condition.get(), throwLabel.get()); 4019 4071
Note:
See TracChangeset
for help on using the changeset viewer.