Index: src/compiler/bytecode-graph-builder.cc |
diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc |
index 0476c0710f208e86dffb764017ce690b6c64d2bf..72339be8eacbe95e49f0835953915dab60bebed0 100644 |
--- a/src/compiler/bytecode-graph-builder.cc |
+++ b/src/compiler/bytecode-graph-builder.cc |
@@ -103,17 +103,17 @@ class BytecodeGraphBuilder::Environment : public ZoneObject { |
// Helper for generating frame states for before and after a bytecode. |
class BytecodeGraphBuilder::FrameStateBeforeAndAfter { |
public: |
- FrameStateBeforeAndAfter(BytecodeGraphBuilder* builder, |
- const interpreter::BytecodeArrayIterator& iterator) |
+ explicit FrameStateBeforeAndAfter(BytecodeGraphBuilder* builder) |
: builder_(builder), |
id_after_(BailoutId::None()), |
added_to_node_(false), |
output_poke_offset_(0), |
output_poke_count_(0) { |
- BailoutId id_before(iterator.current_offset()); |
+ BailoutId id_before(builder->bytecode_iterator().current_offset()); |
frame_state_before_ = builder_->environment()->Checkpoint( |
id_before, OutputFrameStateCombine::Ignore()); |
- id_after_ = BailoutId(id_before.ToInt() + iterator.current_bytecode_size()); |
+ id_after_ = BailoutId(id_before.ToInt() + |
+ builder->bytecode_iterator().current_bytecode_size()); |
} |
~FrameStateBeforeAndAfter() { |
@@ -624,7 +624,7 @@ void BytecodeGraphBuilder::VisitBytecodes() { |
switch (iterator.current_bytecode()) { |
#define BYTECODE_CASE(name, ...) \ |
case interpreter::Bytecode::k##name: \ |
- Visit##name(iterator); \ |
+ Visit##name(); \ |
break; |
BYTECODE_LIST(BYTECODE_CASE) |
#undef BYTECODE_CODE |
@@ -637,173 +637,131 @@ void BytecodeGraphBuilder::VisitBytecodes() { |
DCHECK(exception_handlers_.empty()); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaZero( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaZero() { |
Node* node = jsgraph()->ZeroConstant(); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaSmi8( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Node* node = jsgraph()->Constant(iterator.GetImmediateOperand(0)); |
+void BytecodeGraphBuilder::VisitLdaSmi8() { |
+ Node* node = jsgraph()->Constant(bytecode_iterator().GetImmediateOperand(0)); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaConstantWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Node* node = jsgraph()->Constant(iterator.GetConstantForIndexOperand(0)); |
+void BytecodeGraphBuilder::VisitLdaConstantWide() { |
+ Node* node = |
+ jsgraph()->Constant(bytecode_iterator().GetConstantForIndexOperand(0)); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaConstant( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Node* node = jsgraph()->Constant(iterator.GetConstantForIndexOperand(0)); |
+void BytecodeGraphBuilder::VisitLdaConstant() { |
+ Node* node = |
+ jsgraph()->Constant(bytecode_iterator().GetConstantForIndexOperand(0)); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaUndefined( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaUndefined() { |
Node* node = jsgraph()->UndefinedConstant(); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaNull( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaNull() { |
Node* node = jsgraph()->NullConstant(); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaTheHole( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaTheHole() { |
Node* node = jsgraph()->TheHoleConstant(); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaTrue( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaTrue() { |
Node* node = jsgraph()->TrueConstant(); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaFalse( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaFalse() { |
Node* node = jsgraph()->FalseConstant(); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitLdar( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Node* value = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+void BytecodeGraphBuilder::VisitLdar() { |
+ Node* value = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
environment()->BindAccumulator(value); |
} |
- |
-void BytecodeGraphBuilder::VisitStar( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStar() { |
Node* value = environment()->LookupAccumulator(); |
- environment()->BindRegister(iterator.GetRegisterOperand(0), value); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitMov( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Node* value = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
- environment()->BindRegister(iterator.GetRegisterOperand(1), value); |
+ environment()->BindRegister(bytecode_iterator().GetRegisterOperand(0), value); |
} |
- |
-void BytecodeGraphBuilder::VisitMovWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- VisitMov(iterator); |
+void BytecodeGraphBuilder::VisitMov() { |
+ Node* value = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
+ environment()->BindRegister(bytecode_iterator().GetRegisterOperand(1), value); |
} |
+void BytecodeGraphBuilder::VisitMovWide() { VisitMov(); } |
void BytecodeGraphBuilder::BuildLoadGlobal( |
- const interpreter::BytecodeArrayIterator& iterator, |
TypeofMode typeof_mode) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+ FrameStateBeforeAndAfter states(this); |
Handle<Name> name = |
- Handle<Name>::cast(iterator.GetConstantForIndexOperand(0)); |
- VectorSlotPair feedback = CreateVectorSlotPair(iterator.GetIndexOperand(1)); |
+ Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(0)); |
+ VectorSlotPair feedback = |
+ CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1)); |
const Operator* op = javascript()->LoadGlobal(name, feedback, typeof_mode); |
Node* node = NewNode(op, BuildLoadFeedbackVector()); |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaGlobalSloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaGlobalSloppy() { |
DCHECK(is_sloppy(language_mode())); |
- BuildLoadGlobal(iterator, TypeofMode::NOT_INSIDE_TYPEOF); |
+ BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaGlobalStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaGlobalStrict() { |
DCHECK(is_strict(language_mode())); |
- BuildLoadGlobal(iterator, TypeofMode::NOT_INSIDE_TYPEOF); |
+ BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofSloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofSloppy() { |
DCHECK(is_sloppy(language_mode())); |
- BuildLoadGlobal(iterator, TypeofMode::INSIDE_TYPEOF); |
+ BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofStrict() { |
DCHECK(is_strict(language_mode())); |
- BuildLoadGlobal(iterator, TypeofMode::INSIDE_TYPEOF); |
+ BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaGlobalSloppyWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaGlobalSloppyWide() { |
DCHECK(is_sloppy(language_mode())); |
- BuildLoadGlobal(iterator, TypeofMode::NOT_INSIDE_TYPEOF); |
+ BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaGlobalStrictWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaGlobalStrictWide() { |
DCHECK(is_strict(language_mode())); |
- BuildLoadGlobal(iterator, TypeofMode::NOT_INSIDE_TYPEOF); |
+ BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofSloppyWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofSloppyWide() { |
DCHECK(is_sloppy(language_mode())); |
- BuildLoadGlobal(iterator, TypeofMode::INSIDE_TYPEOF); |
+ BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofStrictWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofStrictWide() { |
DCHECK(is_strict(language_mode())); |
- BuildLoadGlobal(iterator, TypeofMode::INSIDE_TYPEOF); |
+ BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::BuildStoreGlobal( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildStoreGlobal() { |
+ FrameStateBeforeAndAfter states(this); |
Handle<Name> name = |
- Handle<Name>::cast(iterator.GetConstantForIndexOperand(0)); |
- VectorSlotPair feedback = CreateVectorSlotPair(iterator.GetIndexOperand(1)); |
+ Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(0)); |
+ VectorSlotPair feedback = |
+ CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1)); |
Node* value = environment()->LookupAccumulator(); |
const Operator* op = |
@@ -812,240 +770,184 @@ void BytecodeGraphBuilder::BuildStoreGlobal( |
environment()->RecordAfterState(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitStaGlobalSloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStaGlobalSloppy() { |
DCHECK(is_sloppy(language_mode())); |
- BuildStoreGlobal(iterator); |
+ BuildStoreGlobal(); |
} |
- |
-void BytecodeGraphBuilder::VisitStaGlobalStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStaGlobalStrict() { |
DCHECK(is_strict(language_mode())); |
- BuildStoreGlobal(iterator); |
+ BuildStoreGlobal(); |
} |
-void BytecodeGraphBuilder::VisitStaGlobalSloppyWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStaGlobalSloppyWide() { |
DCHECK(is_sloppy(language_mode())); |
- BuildStoreGlobal(iterator); |
+ BuildStoreGlobal(); |
} |
- |
-void BytecodeGraphBuilder::VisitStaGlobalStrictWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStaGlobalStrictWide() { |
DCHECK(is_strict(language_mode())); |
- BuildStoreGlobal(iterator); |
+ BuildStoreGlobal(); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaContextSlot( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLdaContextSlot() { |
// TODO(mythria): LoadContextSlots are unrolled by the required depth when |
// generating bytecode. Hence the value of depth is always 0. Update this |
// code, when the implementation changes. |
// TODO(mythria): immutable flag is also set to false. This information is not |
// available in bytecode array. update this code when the implementation |
// changes. |
- const Operator* op = |
- javascript()->LoadContext(0, iterator.GetIndexOperand(1), false); |
- Node* context = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+ const Operator* op = javascript()->LoadContext( |
+ 0, bytecode_iterator().GetIndexOperand(1), false); |
+ Node* context = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
Node* node = NewNode(op, context); |
environment()->BindAccumulator(node); |
} |
+void BytecodeGraphBuilder::VisitLdaContextSlotWide() { VisitLdaContextSlot(); } |
-void BytecodeGraphBuilder::VisitLdaContextSlotWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- VisitLdaContextSlot(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitStaContextSlot( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStaContextSlot() { |
// TODO(mythria): LoadContextSlots are unrolled by the required depth when |
// generating bytecode. Hence the value of depth is always 0. Update this |
// code, when the implementation changes. |
const Operator* op = |
- javascript()->StoreContext(0, iterator.GetIndexOperand(1)); |
- Node* context = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+ javascript()->StoreContext(0, bytecode_iterator().GetIndexOperand(1)); |
+ Node* context = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
Node* value = environment()->LookupAccumulator(); |
NewNode(op, context, value); |
} |
+void BytecodeGraphBuilder::VisitStaContextSlotWide() { VisitStaContextSlot(); } |
-void BytecodeGraphBuilder::VisitStaContextSlotWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- VisitStaContextSlot(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::BuildLdaLookupSlot( |
- TypeofMode typeof_mode, |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildLdaLookupSlot(TypeofMode typeof_mode) { |
+ FrameStateBeforeAndAfter states(this); |
Handle<String> name = |
- Handle<String>::cast(iterator.GetConstantForIndexOperand(0)); |
+ Handle<String>::cast(bytecode_iterator().GetConstantForIndexOperand(0)); |
const Operator* op = javascript()->LoadDynamic(name, typeof_mode); |
Node* value = |
NewNode(op, BuildLoadFeedbackVector(), environment()->Context()); |
environment()->BindAccumulator(value, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaLookupSlot( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildLdaLookupSlot(TypeofMode::NOT_INSIDE_TYPEOF, iterator); |
+void BytecodeGraphBuilder::VisitLdaLookupSlot() { |
+ BuildLdaLookupSlot(TypeofMode::NOT_INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaLookupSlotInsideTypeof( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildLdaLookupSlot(TypeofMode::INSIDE_TYPEOF, iterator); |
+void BytecodeGraphBuilder::VisitLdaLookupSlotInsideTypeof() { |
+ BuildLdaLookupSlot(TypeofMode::INSIDE_TYPEOF); |
} |
- |
-void BytecodeGraphBuilder::BuildStaLookupSlot( |
- LanguageMode language_mode, |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildStaLookupSlot(LanguageMode language_mode) { |
+ FrameStateBeforeAndAfter states(this); |
Node* value = environment()->LookupAccumulator(); |
- Node* name = jsgraph()->Constant(iterator.GetConstantForIndexOperand(0)); |
+ 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); |
environment()->BindAccumulator(store, &states); |
} |
+void BytecodeGraphBuilder::VisitLdaLookupSlotWide() { VisitLdaLookupSlot(); } |
-void BytecodeGraphBuilder::VisitLdaLookupSlotWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- VisitLdaLookupSlot(iterator); |
+void BytecodeGraphBuilder::VisitLdaLookupSlotInsideTypeofWide() { |
+ VisitLdaLookupSlotInsideTypeof(); |
} |
- |
-void BytecodeGraphBuilder::VisitLdaLookupSlotInsideTypeofWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- VisitLdaLookupSlotInsideTypeof(iterator); |
+void BytecodeGraphBuilder::VisitStaLookupSlotSloppy() { |
+ BuildStaLookupSlot(LanguageMode::SLOPPY); |
} |
- |
-void BytecodeGraphBuilder::VisitStaLookupSlotSloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildStaLookupSlot(LanguageMode::SLOPPY, iterator); |
+void BytecodeGraphBuilder::VisitStaLookupSlotStrict() { |
+ BuildStaLookupSlot(LanguageMode::STRICT); |
} |
- |
-void BytecodeGraphBuilder::VisitStaLookupSlotStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildStaLookupSlot(LanguageMode::STRICT, iterator); |
+void BytecodeGraphBuilder::VisitStaLookupSlotSloppyWide() { |
+ VisitStaLookupSlotSloppy(); |
} |
- |
-void BytecodeGraphBuilder::VisitStaLookupSlotSloppyWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- VisitStaLookupSlotSloppy(iterator); |
+void BytecodeGraphBuilder::VisitStaLookupSlotStrictWide() { |
+ VisitStaLookupSlotStrict(); |
} |
- |
-void BytecodeGraphBuilder::VisitStaLookupSlotStrictWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- VisitStaLookupSlotStrict(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::BuildNamedLoad( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
- Node* object = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+void BytecodeGraphBuilder::BuildNamedLoad() { |
+ FrameStateBeforeAndAfter states(this); |
+ Node* object = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
Handle<Name> name = |
- Handle<Name>::cast(iterator.GetConstantForIndexOperand(1)); |
- VectorSlotPair feedback = CreateVectorSlotPair(iterator.GetIndexOperand(2)); |
+ Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(1)); |
+ VectorSlotPair feedback = |
+ CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(2)); |
const Operator* op = javascript()->LoadNamed(language_mode(), name, feedback); |
Node* node = NewNode(op, object, BuildLoadFeedbackVector()); |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitLoadICSloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLoadICSloppy() { |
DCHECK(is_sloppy(language_mode())); |
- BuildNamedLoad(iterator); |
+ BuildNamedLoad(); |
} |
- |
-void BytecodeGraphBuilder::VisitLoadICStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLoadICStrict() { |
DCHECK(is_strict(language_mode())); |
- BuildNamedLoad(iterator); |
+ BuildNamedLoad(); |
} |
- |
-void BytecodeGraphBuilder::VisitLoadICSloppyWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLoadICSloppyWide() { |
DCHECK(is_sloppy(language_mode())); |
- BuildNamedLoad(iterator); |
+ BuildNamedLoad(); |
} |
- |
-void BytecodeGraphBuilder::VisitLoadICStrictWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLoadICStrictWide() { |
DCHECK(is_strict(language_mode())); |
- BuildNamedLoad(iterator); |
+ BuildNamedLoad(); |
} |
- |
-void BytecodeGraphBuilder::BuildKeyedLoad( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildKeyedLoad() { |
+ FrameStateBeforeAndAfter states(this); |
Node* key = environment()->LookupAccumulator(); |
- Node* object = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
- VectorSlotPair feedback = CreateVectorSlotPair(iterator.GetIndexOperand(1)); |
+ Node* object = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
+ VectorSlotPair feedback = |
+ CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1)); |
const Operator* op = javascript()->LoadProperty(language_mode(), feedback); |
Node* node = NewNode(op, object, key, BuildLoadFeedbackVector()); |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitKeyedLoadICSloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitKeyedLoadICSloppy() { |
DCHECK(is_sloppy(language_mode())); |
- BuildKeyedLoad(iterator); |
+ BuildKeyedLoad(); |
} |
- |
-void BytecodeGraphBuilder::VisitKeyedLoadICStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitKeyedLoadICStrict() { |
DCHECK(is_strict(language_mode())); |
- BuildKeyedLoad(iterator); |
+ BuildKeyedLoad(); |
} |
- |
-void BytecodeGraphBuilder::VisitKeyedLoadICSloppyWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitKeyedLoadICSloppyWide() { |
DCHECK(is_sloppy(language_mode())); |
- BuildKeyedLoad(iterator); |
+ BuildKeyedLoad(); |
} |
- |
-void BytecodeGraphBuilder::VisitKeyedLoadICStrictWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitKeyedLoadICStrictWide() { |
DCHECK(is_strict(language_mode())); |
- BuildKeyedLoad(iterator); |
+ BuildKeyedLoad(); |
} |
- |
-void BytecodeGraphBuilder::BuildNamedStore( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildNamedStore() { |
+ FrameStateBeforeAndAfter states(this); |
Node* value = environment()->LookupAccumulator(); |
- Node* object = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+ Node* object = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
Handle<Name> name = |
- Handle<Name>::cast(iterator.GetConstantForIndexOperand(1)); |
- VectorSlotPair feedback = CreateVectorSlotPair(iterator.GetIndexOperand(2)); |
+ Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(1)); |
+ VectorSlotPair feedback = |
+ CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(2)); |
const Operator* op = |
javascript()->StoreNamed(language_mode(), name, feedback); |
@@ -1053,210 +955,160 @@ void BytecodeGraphBuilder::BuildNamedStore( |
environment()->RecordAfterState(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitStoreICSloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStoreICSloppy() { |
DCHECK(is_sloppy(language_mode())); |
- BuildNamedStore(iterator); |
+ BuildNamedStore(); |
} |
- |
-void BytecodeGraphBuilder::VisitStoreICStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStoreICStrict() { |
DCHECK(is_strict(language_mode())); |
- BuildNamedStore(iterator); |
+ BuildNamedStore(); |
} |
- |
-void BytecodeGraphBuilder::VisitStoreICSloppyWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStoreICSloppyWide() { |
DCHECK(is_sloppy(language_mode())); |
- BuildNamedStore(iterator); |
+ BuildNamedStore(); |
} |
- |
-void BytecodeGraphBuilder::VisitStoreICStrictWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitStoreICStrictWide() { |
DCHECK(is_strict(language_mode())); |
- BuildNamedStore(iterator); |
+ BuildNamedStore(); |
} |
- |
-void BytecodeGraphBuilder::BuildKeyedStore( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildKeyedStore() { |
+ FrameStateBeforeAndAfter states(this); |
Node* value = environment()->LookupAccumulator(); |
- Node* object = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
- Node* key = environment()->LookupRegister(iterator.GetRegisterOperand(1)); |
- VectorSlotPair feedback = CreateVectorSlotPair(iterator.GetIndexOperand(2)); |
+ Node* object = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
+ Node* key = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(1)); |
+ VectorSlotPair feedback = |
+ CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(2)); |
const Operator* op = javascript()->StoreProperty(language_mode(), feedback); |
Node* node = NewNode(op, object, key, value, BuildLoadFeedbackVector()); |
environment()->RecordAfterState(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitKeyedStoreICSloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitKeyedStoreICSloppy() { |
DCHECK(is_sloppy(language_mode())); |
- BuildKeyedStore(iterator); |
+ BuildKeyedStore(); |
} |
- |
-void BytecodeGraphBuilder::VisitKeyedStoreICStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitKeyedStoreICStrict() { |
DCHECK(is_strict(language_mode())); |
- BuildKeyedStore(iterator); |
+ BuildKeyedStore(); |
} |
- |
-void BytecodeGraphBuilder::VisitKeyedStoreICSloppyWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitKeyedStoreICSloppyWide() { |
DCHECK(is_sloppy(language_mode())); |
- BuildKeyedStore(iterator); |
+ BuildKeyedStore(); |
} |
- |
-void BytecodeGraphBuilder::VisitKeyedStoreICStrictWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitKeyedStoreICStrictWide() { |
DCHECK(is_strict(language_mode())); |
- BuildKeyedStore(iterator); |
+ BuildKeyedStore(); |
} |
- |
-void BytecodeGraphBuilder::VisitPushContext( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitPushContext() { |
Node* new_context = environment()->LookupAccumulator(); |
- environment()->BindRegister(iterator.GetRegisterOperand(0), |
+ environment()->BindRegister(bytecode_iterator().GetRegisterOperand(0), |
environment()->Context()); |
environment()->SetContext(new_context); |
} |
- |
-void BytecodeGraphBuilder::VisitPopContext( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Node* context = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+void BytecodeGraphBuilder::VisitPopContext() { |
+ Node* context = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
environment()->SetContext(context); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateClosure( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Handle<SharedFunctionInfo> shared_info = |
- Handle<SharedFunctionInfo>::cast(iterator.GetConstantForIndexOperand(0)); |
+void BytecodeGraphBuilder::VisitCreateClosure() { |
+ Handle<SharedFunctionInfo> shared_info = Handle<SharedFunctionInfo>::cast( |
+ bytecode_iterator().GetConstantForIndexOperand(0)); |
PretenureFlag tenured = |
- iterator.GetImmediateOperand(1) ? TENURED : NOT_TENURED; |
+ bytecode_iterator().GetImmediateOperand(1) ? TENURED : NOT_TENURED; |
const Operator* op = javascript()->CreateClosure(shared_info, tenured); |
Node* closure = NewNode(op); |
environment()->BindAccumulator(closure); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateClosureWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- VisitCreateClosure(iterator); |
-} |
- |
+void BytecodeGraphBuilder::VisitCreateClosureWide() { VisitCreateClosure(); } |
void BytecodeGraphBuilder::BuildCreateArguments( |
- CreateArgumentsParameters::Type type, |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+ CreateArgumentsParameters::Type type) { |
+ FrameStateBeforeAndAfter states(this); |
const Operator* op = javascript()->CreateArguments(type, 0); |
Node* object = NewNode(op, GetFunctionClosure()); |
environment()->BindAccumulator(object, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateMappedArguments( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCreateArguments(CreateArgumentsParameters::kMappedArguments, iterator); |
+void BytecodeGraphBuilder::VisitCreateMappedArguments() { |
+ BuildCreateArguments(CreateArgumentsParameters::kMappedArguments); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateUnmappedArguments( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCreateArguments(CreateArgumentsParameters::kUnmappedArguments, iterator); |
+void BytecodeGraphBuilder::VisitCreateUnmappedArguments() { |
+ BuildCreateArguments(CreateArgumentsParameters::kUnmappedArguments); |
} |
- |
-void BytecodeGraphBuilder::BuildCreateLiteral( |
- const Operator* op, const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildCreateLiteral(const Operator* op) { |
+ FrameStateBeforeAndAfter states(this); |
Node* literal = NewNode(op, GetFunctionClosure()); |
environment()->BindAccumulator(literal, &states); |
} |
- |
-void BytecodeGraphBuilder::BuildCreateRegExpLiteral( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::BuildCreateRegExpLiteral() { |
Handle<String> constant_pattern = |
- Handle<String>::cast(iterator.GetConstantForIndexOperand(0)); |
- int literal_index = iterator.GetIndexOperand(1); |
- int literal_flags = iterator.GetImmediateOperand(2); |
+ Handle<String>::cast(bytecode_iterator().GetConstantForIndexOperand(0)); |
+ int literal_index = bytecode_iterator().GetIndexOperand(1); |
+ int literal_flags = bytecode_iterator().GetImmediateOperand(2); |
const Operator* op = javascript()->CreateLiteralRegExp( |
constant_pattern, literal_flags, literal_index); |
- BuildCreateLiteral(op, iterator); |
+ BuildCreateLiteral(op); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateRegExpLiteral( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCreateRegExpLiteral(iterator); |
+void BytecodeGraphBuilder::VisitCreateRegExpLiteral() { |
+ BuildCreateRegExpLiteral(); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateRegExpLiteralWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCreateRegExpLiteral(iterator); |
+void BytecodeGraphBuilder::VisitCreateRegExpLiteralWide() { |
+ BuildCreateRegExpLiteral(); |
} |
- |
-void BytecodeGraphBuilder::BuildCreateArrayLiteral( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Handle<FixedArray> constant_elements = |
- Handle<FixedArray>::cast(iterator.GetConstantForIndexOperand(0)); |
- int literal_index = iterator.GetIndexOperand(1); |
- int literal_flags = iterator.GetImmediateOperand(2); |
+void BytecodeGraphBuilder::BuildCreateArrayLiteral() { |
+ Handle<FixedArray> constant_elements = Handle<FixedArray>::cast( |
+ bytecode_iterator().GetConstantForIndexOperand(0)); |
+ int literal_index = bytecode_iterator().GetIndexOperand(1); |
+ int literal_flags = bytecode_iterator().GetImmediateOperand(2); |
const Operator* op = javascript()->CreateLiteralArray( |
constant_elements, literal_flags, literal_index); |
- BuildCreateLiteral(op, iterator); |
+ BuildCreateLiteral(op); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateArrayLiteral( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCreateArrayLiteral(iterator); |
+void BytecodeGraphBuilder::VisitCreateArrayLiteral() { |
+ BuildCreateArrayLiteral(); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateArrayLiteralWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCreateArrayLiteral(iterator); |
+void BytecodeGraphBuilder::VisitCreateArrayLiteralWide() { |
+ BuildCreateArrayLiteral(); |
} |
- |
-void BytecodeGraphBuilder::BuildCreateObjectLiteral( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- Handle<FixedArray> constant_properties = |
- Handle<FixedArray>::cast(iterator.GetConstantForIndexOperand(0)); |
- int literal_index = iterator.GetIndexOperand(1); |
- int literal_flags = iterator.GetImmediateOperand(2); |
+void BytecodeGraphBuilder::BuildCreateObjectLiteral() { |
+ Handle<FixedArray> constant_properties = Handle<FixedArray>::cast( |
+ bytecode_iterator().GetConstantForIndexOperand(0)); |
+ int literal_index = bytecode_iterator().GetIndexOperand(1); |
+ int literal_flags = bytecode_iterator().GetImmediateOperand(2); |
const Operator* op = javascript()->CreateLiteralObject( |
constant_properties, literal_flags, literal_index); |
- BuildCreateLiteral(op, iterator); |
+ BuildCreateLiteral(op); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateObjectLiteral( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCreateObjectLiteral(iterator); |
+void BytecodeGraphBuilder::VisitCreateObjectLiteral() { |
+ BuildCreateObjectLiteral(); |
} |
- |
-void BytecodeGraphBuilder::VisitCreateObjectLiteralWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCreateObjectLiteral(iterator); |
+void BytecodeGraphBuilder::VisitCreateObjectLiteralWide() { |
+ BuildCreateObjectLiteral(); |
} |
@@ -1276,18 +1128,18 @@ Node* BytecodeGraphBuilder::ProcessCallArguments(const Operator* call_op, |
return value; |
} |
- |
-void BytecodeGraphBuilder::BuildCall( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildCall() { |
+ FrameStateBeforeAndAfter states(this); |
// TODO(rmcilroy): Set receiver_hint correctly based on whether the receiver |
// register has been loaded with null / undefined explicitly or we are sure it |
// is not null / undefined. |
ConvertReceiverMode receiver_hint = ConvertReceiverMode::kAny; |
- Node* callee = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
- interpreter::Register receiver = iterator.GetRegisterOperand(1); |
- size_t arg_count = iterator.GetCountOperand(2); |
- VectorSlotPair feedback = CreateVectorSlotPair(iterator.GetIndexOperand(3)); |
+ Node* callee = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
+ interpreter::Register receiver = bytecode_iterator().GetRegisterOperand(1); |
+ size_t arg_count = bytecode_iterator().GetCountOperand(2); |
+ VectorSlotPair feedback = |
+ CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(3)); |
// TODO(ishell): provide correct tail_call_mode value to CallFunction. |
const Operator* call = javascript()->CallFunction( |
@@ -1296,25 +1148,16 @@ void BytecodeGraphBuilder::BuildCall( |
environment()->BindAccumulator(value, &states); |
} |
+void BytecodeGraphBuilder::VisitCall() { BuildCall(); } |
-void BytecodeGraphBuilder::VisitCall( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCall(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitCallWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCall(iterator); |
-} |
- |
+void BytecodeGraphBuilder::VisitCallWide() { BuildCall(); } |
-void BytecodeGraphBuilder::BuildCallJSRuntime( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
- Node* callee = BuildLoadNativeContextField(iterator.GetIndexOperand(0)); |
- interpreter::Register receiver = iterator.GetRegisterOperand(1); |
- size_t arg_count = iterator.GetCountOperand(2); |
+void BytecodeGraphBuilder::BuildCallJSRuntime() { |
+ FrameStateBeforeAndAfter states(this); |
+ Node* callee = |
+ BuildLoadNativeContextField(bytecode_iterator().GetIndexOperand(0)); |
+ interpreter::Register receiver = bytecode_iterator().GetRegisterOperand(1); |
+ size_t arg_count = bytecode_iterator().GetCountOperand(2); |
// Create node to perform the JS runtime call. |
const Operator* call = |
@@ -1323,18 +1166,9 @@ void BytecodeGraphBuilder::BuildCallJSRuntime( |
environment()->BindAccumulator(value, &states); |
} |
+void BytecodeGraphBuilder::VisitCallJSRuntime() { BuildCallJSRuntime(); } |
-void BytecodeGraphBuilder::VisitCallJSRuntime( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCallJSRuntime(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitCallJSRuntimeWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCallJSRuntime(iterator); |
-} |
- |
+void BytecodeGraphBuilder::VisitCallJSRuntimeWide() { BuildCallJSRuntime(); } |
Node* BytecodeGraphBuilder::ProcessCallRuntimeArguments( |
const Operator* call_runtime_op, interpreter::Register first_arg, |
@@ -1349,14 +1183,12 @@ Node* BytecodeGraphBuilder::ProcessCallRuntimeArguments( |
return value; |
} |
- |
-void BytecodeGraphBuilder::BuildCallRuntime( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildCallRuntime() { |
+ FrameStateBeforeAndAfter states(this); |
Runtime::FunctionId functionId = |
- static_cast<Runtime::FunctionId>(iterator.GetIndexOperand(0)); |
- interpreter::Register first_arg = iterator.GetRegisterOperand(1); |
- size_t arg_count = iterator.GetCountOperand(2); |
+ static_cast<Runtime::FunctionId>(bytecode_iterator().GetIndexOperand(0)); |
+ interpreter::Register first_arg = bytecode_iterator().GetRegisterOperand(1); |
+ size_t arg_count = bytecode_iterator().GetCountOperand(2); |
// Create node to perform the runtime call. |
const Operator* call = javascript()->CallRuntime(functionId, arg_count); |
@@ -1364,27 +1196,18 @@ void BytecodeGraphBuilder::BuildCallRuntime( |
environment()->BindAccumulator(value, &states); |
} |
+void BytecodeGraphBuilder::VisitCallRuntime() { BuildCallRuntime(); } |
-void BytecodeGraphBuilder::VisitCallRuntime( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCallRuntime(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitCallRuntimeWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCallRuntime(iterator); |
-} |
- |
+void BytecodeGraphBuilder::VisitCallRuntimeWide() { BuildCallRuntime(); } |
-void BytecodeGraphBuilder::BuildCallRuntimeForPair( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildCallRuntimeForPair() { |
+ FrameStateBeforeAndAfter states(this); |
Runtime::FunctionId functionId = |
- static_cast<Runtime::FunctionId>(iterator.GetIndexOperand(0)); |
- interpreter::Register first_arg = iterator.GetRegisterOperand(1); |
- size_t arg_count = iterator.GetCountOperand(2); |
- interpreter::Register first_return = iterator.GetRegisterOperand(3); |
+ static_cast<Runtime::FunctionId>(bytecode_iterator().GetIndexOperand(0)); |
+ interpreter::Register first_arg = bytecode_iterator().GetRegisterOperand(1); |
+ size_t arg_count = bytecode_iterator().GetCountOperand(2); |
+ interpreter::Register first_return = |
+ bytecode_iterator().GetRegisterOperand(3); |
// Create node to perform the runtime call. |
const Operator* call = javascript()->CallRuntime(functionId, arg_count); |
@@ -1392,16 +1215,12 @@ void BytecodeGraphBuilder::BuildCallRuntimeForPair( |
environment()->BindRegistersToProjections(first_return, return_pair, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitCallRuntimeForPair( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCallRuntimeForPair(iterator); |
+void BytecodeGraphBuilder::VisitCallRuntimeForPair() { |
+ BuildCallRuntimeForPair(); |
} |
- |
-void BytecodeGraphBuilder::VisitCallRuntimeForPairWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCallRuntimeForPair(iterator); |
+void BytecodeGraphBuilder::VisitCallRuntimeForPairWide() { |
+ BuildCallRuntimeForPair(); |
} |
@@ -1421,13 +1240,11 @@ Node* BytecodeGraphBuilder::ProcessCallNewArguments( |
return value; |
} |
- |
-void BytecodeGraphBuilder::BuildCallConstruct( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
- interpreter::Register callee = iterator.GetRegisterOperand(0); |
- interpreter::Register first_arg = iterator.GetRegisterOperand(1); |
- size_t arg_count = iterator.GetCountOperand(2); |
+void BytecodeGraphBuilder::BuildCallConstruct() { |
+ FrameStateBeforeAndAfter states(this); |
+ interpreter::Register callee = bytecode_iterator().GetRegisterOperand(0); |
+ interpreter::Register first_arg = bytecode_iterator().GetRegisterOperand(1); |
+ size_t arg_count = bytecode_iterator().GetCountOperand(2); |
// TODO(turbofan): Pass the feedback here. |
const Operator* call = javascript()->CallConstruct( |
@@ -1436,22 +1253,12 @@ void BytecodeGraphBuilder::BuildCallConstruct( |
environment()->BindAccumulator(value, &states); |
} |
+void BytecodeGraphBuilder::VisitNew() { BuildCallConstruct(); } |
-void BytecodeGraphBuilder::VisitNew( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCallConstruct(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitNewWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCallConstruct(iterator); |
-} |
+void BytecodeGraphBuilder::VisitNewWide() { BuildCallConstruct(); } |
- |
-void BytecodeGraphBuilder::VisitThrow( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::VisitThrow() { |
+ FrameStateBeforeAndAfter states(this); |
Node* value = environment()->LookupAccumulator(); |
Node* call = NewNode(javascript()->CallRuntime(Runtime::kThrow), value); |
environment()->RecordAfterState(call, &states); |
@@ -1459,10 +1266,8 @@ void BytecodeGraphBuilder::VisitThrow( |
UpdateControlDependencyToLeaveFunction(control); |
} |
- |
-void BytecodeGraphBuilder::VisitReThrow( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::VisitReThrow() { |
+ FrameStateBeforeAndAfter states(this); |
Node* value = environment()->LookupAccumulator(); |
Node* call = NewNode(javascript()->CallRuntime(Runtime::kReThrow), value); |
environment()->RecordAfterState(call, &states); |
@@ -1470,98 +1275,72 @@ void BytecodeGraphBuilder::VisitReThrow( |
UpdateControlDependencyToLeaveFunction(control); |
} |
- |
-void BytecodeGraphBuilder::BuildBinaryOp( |
- const Operator* js_op, const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
- Node* left = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+void BytecodeGraphBuilder::BuildBinaryOp(const Operator* js_op) { |
+ FrameStateBeforeAndAfter states(this); |
+ Node* left = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
Node* right = environment()->LookupAccumulator(); |
Node* node = NewNode(js_op, left, right); |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitAdd( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitAdd() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->Add(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->Add(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitSub( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitSub() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->Subtract(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->Subtract(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitMul( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitMul() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->Multiply(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->Multiply(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitDiv( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitDiv() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->Divide(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->Divide(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitMod( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitMod() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->Modulus(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->Modulus(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitBitwiseOr( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitBitwiseOr() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->BitwiseOr(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->BitwiseOr(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitBitwiseXor( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitBitwiseXor() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->BitwiseXor(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->BitwiseXor(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitBitwiseAnd( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitBitwiseAnd() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->BitwiseAnd(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->BitwiseAnd(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitShiftLeft( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitShiftLeft() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->ShiftLeft(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->ShiftLeft(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitShiftRight( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitShiftRight() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->ShiftRight(language_mode(), hints), iterator); |
+ BuildBinaryOp(javascript()->ShiftRight(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitShiftRightLogical( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitShiftRightLogical() { |
BinaryOperationHints hints = BinaryOperationHints::Any(); |
- BuildBinaryOp(javascript()->ShiftRightLogical(language_mode(), hints), |
- iterator); |
+ BuildBinaryOp(javascript()->ShiftRightLogical(language_mode(), hints)); |
} |
- |
-void BytecodeGraphBuilder::VisitInc( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::VisitInc() { |
+ FrameStateBeforeAndAfter states(this); |
const Operator* js_op = |
javascript()->Add(language_mode(), BinaryOperationHints::Any()); |
Node* node = NewNode(js_op, environment()->LookupAccumulator(), |
@@ -1569,10 +1348,8 @@ void BytecodeGraphBuilder::VisitInc( |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitDec( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::VisitDec() { |
+ FrameStateBeforeAndAfter states(this); |
const Operator* js_op = |
javascript()->Subtract(language_mode(), BinaryOperationHints::Any()); |
Node* node = NewNode(js_op, environment()->LookupAccumulator(), |
@@ -1580,9 +1357,7 @@ void BytecodeGraphBuilder::VisitDec( |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitLogicalNot( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitLogicalNot() { |
Node* value = NewNode(javascript()->ToBoolean(ToBooleanHint::kAny), |
environment()->LookupAccumulator()); |
Node* node = NewNode(common()->Select(MachineRepresentation::kTagged), value, |
@@ -1590,321 +1365,221 @@ void BytecodeGraphBuilder::VisitLogicalNot( |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::VisitTypeOf( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitTypeOf() { |
Node* node = |
NewNode(javascript()->TypeOf(), environment()->LookupAccumulator()); |
environment()->BindAccumulator(node); |
} |
- |
-void BytecodeGraphBuilder::BuildDelete( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildDelete() { |
+ FrameStateBeforeAndAfter states(this); |
Node* key = environment()->LookupAccumulator(); |
- Node* object = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+ Node* object = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
Node* node = |
NewNode(javascript()->DeleteProperty(language_mode()), object, key); |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitDeletePropertyStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitDeletePropertyStrict() { |
DCHECK(is_strict(language_mode())); |
- BuildDelete(iterator); |
+ BuildDelete(); |
} |
- |
-void BytecodeGraphBuilder::VisitDeletePropertySloppy( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitDeletePropertySloppy() { |
DCHECK(is_sloppy(language_mode())); |
- BuildDelete(iterator); |
+ BuildDelete(); |
} |
- |
-void BytecodeGraphBuilder::VisitDeleteLookupSlot( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::VisitDeleteLookupSlot() { |
+ FrameStateBeforeAndAfter states(this); |
Node* name = environment()->LookupAccumulator(); |
const Operator* op = javascript()->CallRuntime(Runtime::kDeleteLookupSlot); |
Node* result = NewNode(op, environment()->Context(), name); |
environment()->BindAccumulator(result, &states); |
} |
- |
-void BytecodeGraphBuilder::BuildCompareOp( |
- const Operator* js_op, const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
- Node* left = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+void BytecodeGraphBuilder::BuildCompareOp(const Operator* js_op) { |
+ FrameStateBeforeAndAfter states(this); |
+ Node* left = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
Node* right = environment()->LookupAccumulator(); |
Node* node = NewNode(js_op, left, right); |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitTestEqual( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->Equal(), iterator); |
+void BytecodeGraphBuilder::VisitTestEqual() { |
+ BuildCompareOp(javascript()->Equal()); |
} |
- |
-void BytecodeGraphBuilder::VisitTestNotEqual( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->NotEqual(), iterator); |
+void BytecodeGraphBuilder::VisitTestNotEqual() { |
+ BuildCompareOp(javascript()->NotEqual()); |
} |
- |
-void BytecodeGraphBuilder::VisitTestEqualStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->StrictEqual(), iterator); |
+void BytecodeGraphBuilder::VisitTestEqualStrict() { |
+ BuildCompareOp(javascript()->StrictEqual()); |
} |
- |
-void BytecodeGraphBuilder::VisitTestNotEqualStrict( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->StrictNotEqual(), iterator); |
+void BytecodeGraphBuilder::VisitTestNotEqualStrict() { |
+ BuildCompareOp(javascript()->StrictNotEqual()); |
} |
- |
-void BytecodeGraphBuilder::VisitTestLessThan( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->LessThan(language_mode()), iterator); |
+void BytecodeGraphBuilder::VisitTestLessThan() { |
+ BuildCompareOp(javascript()->LessThan(language_mode())); |
} |
- |
-void BytecodeGraphBuilder::VisitTestGreaterThan( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->GreaterThan(language_mode()), iterator); |
+void BytecodeGraphBuilder::VisitTestGreaterThan() { |
+ BuildCompareOp(javascript()->GreaterThan(language_mode())); |
} |
- |
-void BytecodeGraphBuilder::VisitTestLessThanOrEqual( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->LessThanOrEqual(language_mode()), iterator); |
+void BytecodeGraphBuilder::VisitTestLessThanOrEqual() { |
+ BuildCompareOp(javascript()->LessThanOrEqual(language_mode())); |
} |
- |
-void BytecodeGraphBuilder::VisitTestGreaterThanOrEqual( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->GreaterThanOrEqual(language_mode()), iterator); |
+void BytecodeGraphBuilder::VisitTestGreaterThanOrEqual() { |
+ BuildCompareOp(javascript()->GreaterThanOrEqual(language_mode())); |
} |
- |
-void BytecodeGraphBuilder::VisitTestIn( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->HasProperty(), iterator); |
+void BytecodeGraphBuilder::VisitTestIn() { |
+ BuildCompareOp(javascript()->HasProperty()); |
} |
- |
-void BytecodeGraphBuilder::VisitTestInstanceOf( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCompareOp(javascript()->InstanceOf(), iterator); |
+void BytecodeGraphBuilder::VisitTestInstanceOf() { |
+ BuildCompareOp(javascript()->InstanceOf()); |
} |
- |
-void BytecodeGraphBuilder::BuildCastOperator( |
- const Operator* js_op, const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildCastOperator(const Operator* js_op) { |
+ FrameStateBeforeAndAfter states(this); |
Node* node = NewNode(js_op, environment()->LookupAccumulator()); |
environment()->BindAccumulator(node, &states); |
} |
- |
-void BytecodeGraphBuilder::VisitToName( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCastOperator(javascript()->ToName(), iterator); |
+void BytecodeGraphBuilder::VisitToName() { |
+ BuildCastOperator(javascript()->ToName()); |
} |
- |
-void BytecodeGraphBuilder::VisitToObject( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCastOperator(javascript()->ToObject(), iterator); |
+void BytecodeGraphBuilder::VisitToObject() { |
+ BuildCastOperator(javascript()->ToObject()); |
} |
- |
-void BytecodeGraphBuilder::VisitToNumber( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildCastOperator(javascript()->ToNumber(), iterator); |
+void BytecodeGraphBuilder::VisitToNumber() { |
+ BuildCastOperator(javascript()->ToNumber()); |
} |
+void BytecodeGraphBuilder::VisitJump() { BuildJump(); } |
-void BytecodeGraphBuilder::VisitJump( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildJump(); |
-} |
- |
+void BytecodeGraphBuilder::VisitJumpConstant() { BuildJump(); } |
-void BytecodeGraphBuilder::VisitJumpConstant( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildJump(); |
-} |
+void BytecodeGraphBuilder::VisitJumpConstantWide() { BuildJump(); } |
- |
-void BytecodeGraphBuilder::VisitJumpConstantWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildJump(); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitJumpIfTrue( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfTrue() { |
BuildJumpIfEqual(jsgraph()->TrueConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfTrueConstant( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfTrueConstant() { |
BuildJumpIfEqual(jsgraph()->TrueConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfTrueConstantWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfTrueConstantWide() { |
BuildJumpIfEqual(jsgraph()->TrueConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfFalse( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfFalse() { |
BuildJumpIfEqual(jsgraph()->FalseConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfFalseConstant( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfFalseConstant() { |
BuildJumpIfEqual(jsgraph()->FalseConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfFalseConstantWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfFalseConstantWide() { |
BuildJumpIfEqual(jsgraph()->FalseConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfToBooleanTrue( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfToBooleanTrue() { |
BuildJumpIfToBooleanEqual(jsgraph()->TrueConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfToBooleanTrueConstant( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfToBooleanTrueConstant() { |
BuildJumpIfToBooleanEqual(jsgraph()->TrueConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfToBooleanTrueConstantWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfToBooleanTrueConstantWide() { |
BuildJumpIfToBooleanEqual(jsgraph()->TrueConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfToBooleanFalse( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfToBooleanFalse() { |
BuildJumpIfToBooleanEqual(jsgraph()->FalseConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfToBooleanFalseConstant( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfToBooleanFalseConstant() { |
BuildJumpIfToBooleanEqual(jsgraph()->FalseConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfToBooleanFalseConstantWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfToBooleanFalseConstantWide() { |
BuildJumpIfToBooleanEqual(jsgraph()->FalseConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfNull( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfNull() { |
BuildJumpIfEqual(jsgraph()->NullConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfNullConstant( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfNullConstant() { |
BuildJumpIfEqual(jsgraph()->NullConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfNullConstantWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfNullConstantWide() { |
BuildJumpIfEqual(jsgraph()->NullConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfUndefined( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfUndefined() { |
BuildJumpIfEqual(jsgraph()->UndefinedConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfUndefinedConstant( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfUndefinedConstant() { |
BuildJumpIfEqual(jsgraph()->UndefinedConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitJumpIfUndefinedConstantWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitJumpIfUndefinedConstantWide() { |
BuildJumpIfEqual(jsgraph()->UndefinedConstant()); |
} |
- |
-void BytecodeGraphBuilder::VisitReturn( |
- const interpreter::BytecodeArrayIterator& iterator) { |
+void BytecodeGraphBuilder::VisitReturn() { |
Node* control = |
NewNode(common()->Return(), environment()->LookupAccumulator()); |
UpdateControlDependencyToLeaveFunction(control); |
set_environment(nullptr); |
} |
- |
-void BytecodeGraphBuilder::BuildForInPrepare( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildForInPrepare() { |
+ FrameStateBeforeAndAfter states(this); |
Node* receiver = environment()->LookupAccumulator(); |
Node* prepare = NewNode(javascript()->ForInPrepare(), receiver); |
- environment()->BindRegistersToProjections(iterator.GetRegisterOperand(0), |
- prepare, &states); |
+ environment()->BindRegistersToProjections( |
+ bytecode_iterator().GetRegisterOperand(0), prepare, &states); |
} |
+void BytecodeGraphBuilder::VisitForInPrepare() { BuildForInPrepare(); } |
-void BytecodeGraphBuilder::VisitForInPrepare( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildForInPrepare(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitForInPrepareWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildForInPrepare(iterator); |
-} |
- |
+void BytecodeGraphBuilder::VisitForInPrepareWide() { BuildForInPrepare(); } |
-void BytecodeGraphBuilder::VisitForInDone( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
- Node* index = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+void BytecodeGraphBuilder::VisitForInDone() { |
+ FrameStateBeforeAndAfter states(this); |
+ Node* index = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
Node* cache_length = |
- environment()->LookupRegister(iterator.GetRegisterOperand(1)); |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(1)); |
Node* exit_cond = NewNode(javascript()->ForInDone(), index, cache_length); |
environment()->BindAccumulator(exit_cond, &states); |
} |
- |
-void BytecodeGraphBuilder::BuildForInNext( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
+void BytecodeGraphBuilder::BuildForInNext() { |
+ FrameStateBeforeAndAfter states(this); |
Node* receiver = |
- environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
- Node* index = environment()->LookupRegister(iterator.GetRegisterOperand(1)); |
- int catch_reg_pair_index = iterator.GetRegisterOperand(2).index(); |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
+ Node* index = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(1)); |
+ int catch_reg_pair_index = bytecode_iterator().GetRegisterOperand(2).index(); |
Node* cache_type = environment()->LookupRegister( |
interpreter::Register(catch_reg_pair_index)); |
Node* cache_array = environment()->LookupRegister( |
@@ -1915,23 +1590,14 @@ void BytecodeGraphBuilder::BuildForInNext( |
environment()->BindAccumulator(value, &states); |
} |
+void BytecodeGraphBuilder::VisitForInNext() { BuildForInNext(); } |
-void BytecodeGraphBuilder::VisitForInNext( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildForInNext(iterator); |
-} |
- |
- |
-void BytecodeGraphBuilder::VisitForInNextWide( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- BuildForInNext(iterator); |
-} |
- |
+void BytecodeGraphBuilder::VisitForInNextWide() { BuildForInNext(); } |
-void BytecodeGraphBuilder::VisitForInStep( |
- const interpreter::BytecodeArrayIterator& iterator) { |
- FrameStateBeforeAndAfter states(this, iterator); |
- Node* index = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+void BytecodeGraphBuilder::VisitForInStep() { |
+ FrameStateBeforeAndAfter states(this); |
+ Node* index = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
index = NewNode(javascript()->ForInStep(), index); |
environment()->BindAccumulator(index, &states); |
} |
@@ -2004,18 +1670,18 @@ void BytecodeGraphBuilder::BuildJump(int source_offset, int target_offset) { |
void BytecodeGraphBuilder::BuildJump() { |
- int source_offset = bytecode_iterator()->current_offset(); |
- int target_offset = bytecode_iterator()->GetJumpTargetOffset(); |
+ int source_offset = bytecode_iterator().current_offset(); |
+ int target_offset = bytecode_iterator().GetJumpTargetOffset(); |
BuildJump(source_offset, target_offset); |
} |
void BytecodeGraphBuilder::BuildConditionalJump(Node* condition) { |
- int source_offset = bytecode_iterator()->current_offset(); |
+ int source_offset = bytecode_iterator().current_offset(); |
NewBranch(condition); |
Environment* if_false_environment = environment()->CopyForConditional(); |
NewIfTrue(); |
- BuildJump(source_offset, bytecode_iterator()->GetJumpTargetOffset()); |
+ BuildJump(source_offset, bytecode_iterator().GetJumpTargetOffset()); |
set_environment(if_false_environment); |
NewIfFalse(); |
} |
@@ -2131,7 +1797,7 @@ Node* BytecodeGraphBuilder::MakeNode(const Operator* op, int value_input_count, |
} |
// Add implicit exception continuation for throwing nodes. |
if (!result->op()->HasProperty(Operator::kNoThrow) && inside_handler) { |
- int throw_offset = bytecode_iterator()->current_offset(); |
+ int throw_offset = bytecode_iterator().current_offset(); |
int handler_offset = exception_handlers_.top().handler_offset_; |
// TODO(mstarzinger): Thread through correct prediction! |
IfExceptionHint hint = IfExceptionHint::kLocallyCaught; |