Index: src/compiler/bytecode-graph-builder.cc |
diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc |
index 1bc2141a2078a535d1bcdb9c3a398b624e762140..c31043c5bb44f10ab25b05361ce349f94a6fae9f 100644 |
--- a/src/compiler/bytecode-graph-builder.cc |
+++ b/src/compiler/bytecode-graph-builder.cc |
@@ -492,15 +492,6 @@ Node* BytecodeGraphBuilder::GetFunctionClosure() { |
} |
-Node* BytecodeGraphBuilder::BuildLoadImmutableObjectField(Node* object, |
- int offset) { |
- return graph()->NewNode(jsgraph()->machine()->Load(MachineType::AnyTagged()), |
- object, |
- jsgraph()->IntPtrConstant(offset - kHeapObjectTag), |
- graph()->start(), graph()->start()); |
-} |
- |
- |
Node* BytecodeGraphBuilder::BuildLoadNativeContextField(int index) { |
const Operator* op = |
javascript()->LoadContext(0, Context::NATIVE_CONTEXT_INDEX, true); |
@@ -509,19 +500,6 @@ Node* BytecodeGraphBuilder::BuildLoadNativeContextField(int index) { |
} |
-Node* BytecodeGraphBuilder::BuildLoadFeedbackVector() { |
- if (!feedback_vector_.is_set()) { |
- Node* closure = GetFunctionClosure(); |
- Node* shared = BuildLoadImmutableObjectField( |
- closure, JSFunction::kSharedFunctionInfoOffset); |
- Node* vector = BuildLoadImmutableObjectField( |
- shared, SharedFunctionInfo::kFeedbackVectorOffset); |
- feedback_vector_.set(vector); |
- } |
- return feedback_vector_.get(); |
-} |
- |
- |
VectorSlotPair BytecodeGraphBuilder::CreateVectorSlotPair(int slot_id) { |
Handle<TypeFeedbackVector> feedback_vector = info()->feedback_vector(); |
FeedbackVectorSlot slot; |
@@ -761,11 +739,13 @@ void BytecodeGraphBuilder::VisitStaContextSlotWide() { VisitStaContextSlot(); } |
void BytecodeGraphBuilder::BuildLdaLookupSlot(TypeofMode typeof_mode) { |
FrameStateBeforeAndAfter states(this); |
- Handle<String> name = |
- Handle<String>::cast(bytecode_iterator().GetConstantForIndexOperand(0)); |
- const Operator* op = javascript()->LoadDynamic(name, typeof_mode); |
- Node* value = |
- NewNode(op, BuildLoadFeedbackVector(), environment()->Context()); |
+ Node* name = |
+ jsgraph()->Constant(bytecode_iterator().GetConstantForIndexOperand(0)); |
+ const Operator* op = |
+ javascript()->CallRuntime(typeof_mode == TypeofMode::NOT_INSIDE_TYPEOF |
+ ? Runtime::kLoadLookupSlot |
+ : Runtime::kLoadLookupSlotInsideTypeof); |
+ Node* value = NewNode(op, name); |
environment()->BindAccumulator(value, &states); |
} |
@@ -782,9 +762,10 @@ void BytecodeGraphBuilder::BuildStaLookupSlot(LanguageMode language_mode) { |
Node* value = environment()->LookupAccumulator(); |
Node* name = |
jsgraph()->Constant(bytecode_iterator().GetConstantForIndexOperand(0)); |
- Node* language = jsgraph()->Constant(language_mode); |
- const Operator* op = javascript()->CallRuntime(Runtime::kStoreLookupSlot); |
- Node* store = NewNode(op, value, environment()->Context(), name, language); |
+ const Operator* op = javascript()->CallRuntime( |
+ is_strict(language_mode) ? Runtime::kStoreLookupSlot_Strict |
+ : Runtime::kStoreLookupSlot_Sloppy); |
+ Node* store = NewNode(op, name, value); |
environment()->BindAccumulator(store, &states); |
} |
@@ -1328,7 +1309,7 @@ void BytecodeGraphBuilder::VisitDeleteLookupSlot() { |
FrameStateBeforeAndAfter states(this); |
Node* name = environment()->LookupAccumulator(); |
const Operator* op = javascript()->CallRuntime(Runtime::kDeleteLookupSlot); |
- Node* result = NewNode(op, environment()->Context(), name); |
+ Node* result = NewNode(op, name); |
environment()->BindAccumulator(result, &states); |
} |