Index: src/compiler/ast-graph-builder.cc |
diff --git a/src/compiler/ast-graph-builder.cc b/src/compiler/ast-graph-builder.cc |
index 0d01a5a08b9b37fa495684003baec4d061e96bfc..fccc55dd7eea4cc8f7f4b25ad5e6ed5800d13829 100644 |
--- a/src/compiler/ast-graph-builder.cc |
+++ b/src/compiler/ast-graph-builder.cc |
@@ -2129,8 +2129,7 @@ void AstGraphBuilder::VisitAssignment(Assignment* expr) { |
VectorSlotPair pair = |
CreateVectorSlotPair(property->PropertyFeedbackSlot()); |
FrameStateBeforeAndAfter states(this, property->obj()->id()); |
- old_value = |
- BuildNamedLoad(object, name, pair, property->PropertyFeedbackId()); |
+ old_value = BuildNamedLoad(object, name, pair); |
states.AddToNode(old_value, property->LoadId(), |
OutputFrameStateCombine::Push()); |
break; |
@@ -2141,8 +2140,7 @@ void AstGraphBuilder::VisitAssignment(Assignment* expr) { |
VectorSlotPair pair = |
CreateVectorSlotPair(property->PropertyFeedbackSlot()); |
FrameStateBeforeAndAfter states(this, property->key()->id()); |
- old_value = |
- BuildKeyedLoad(object, key, pair, property->PropertyFeedbackId()); |
+ old_value = BuildKeyedLoad(object, key, pair); |
states.AddToNode(old_value, property->LoadId(), |
OutputFrameStateCombine::Push()); |
break; |
@@ -2227,7 +2225,7 @@ void AstGraphBuilder::VisitProperty(Property* expr) { |
FrameStateBeforeAndAfter states(this, expr->obj()->id()); |
Node* object = environment()->Pop(); |
Handle<Name> name = expr->key()->AsLiteral()->AsPropertyName(); |
- value = BuildNamedLoad(object, name, pair, expr->PropertyFeedbackId()); |
+ value = BuildNamedLoad(object, name, pair); |
states.AddToNode(value, expr->id(), ast_context()->GetStateCombine()); |
} else { |
VisitForValue(expr->obj()); |
@@ -2235,7 +2233,7 @@ void AstGraphBuilder::VisitProperty(Property* expr) { |
FrameStateBeforeAndAfter states(this, expr->key()->id()); |
Node* key = environment()->Pop(); |
Node* object = environment()->Pop(); |
- value = BuildKeyedLoad(object, key, pair, expr->PropertyFeedbackId()); |
+ value = BuildKeyedLoad(object, key, pair); |
states.AddToNode(value, expr->id(), ast_context()->GetStateCombine()); |
} |
ast_context()->ProduceValue(value); |
@@ -2286,16 +2284,14 @@ void AstGraphBuilder::VisitCall(Call* expr) { |
if (property->key()->IsPropertyName()) { |
FrameStateBeforeAndAfter states(this, property->obj()->id()); |
Handle<Name> name = property->key()->AsLiteral()->AsPropertyName(); |
- callee_value = |
- BuildNamedLoad(object, name, pair, property->PropertyFeedbackId()); |
+ callee_value = BuildNamedLoad(object, name, pair); |
states.AddToNode(callee_value, property->LoadId(), |
OutputFrameStateCombine::Push()); |
} else { |
VisitForValue(property->key()); |
FrameStateBeforeAndAfter states(this, property->key()->id()); |
Node* key = environment()->Pop(); |
- callee_value = |
- BuildKeyedLoad(object, key, pair, property->PropertyFeedbackId()); |
+ callee_value = BuildKeyedLoad(object, key, pair); |
states.AddToNode(callee_value, property->LoadId(), |
OutputFrameStateCombine::Push()); |
} |
@@ -2410,8 +2406,7 @@ void AstGraphBuilder::VisitCallJSRuntime(CallRuntime* expr) { |
VectorSlotPair pair = CreateVectorSlotPair(expr->CallRuntimeFeedbackSlot()); |
// TODO(jarin): bailout ids for runtime calls. |
FrameStateBeforeAndAfter states(this, BailoutId::None()); |
- Node* callee_value = |
- BuildNamedLoad(receiver_value, name, pair, expr->CallRuntimeFeedbackId()); |
+ Node* callee_value = BuildNamedLoad(receiver_value, name, pair); |
states.AddToNode(callee_value, BailoutId::None(), |
OutputFrameStateCombine::Push()); |
environment()->Push(callee_value); |
@@ -2501,8 +2496,7 @@ void AstGraphBuilder::VisitCountOperation(CountOperation* expr) { |
Handle<Name> name = property->key()->AsLiteral()->AsPropertyName(); |
VectorSlotPair pair = |
CreateVectorSlotPair(property->PropertyFeedbackSlot()); |
- old_value = |
- BuildNamedLoad(object, name, pair, property->PropertyFeedbackId()); |
+ old_value = BuildNamedLoad(object, name, pair); |
states.AddToNode(old_value, property->LoadId(), |
OutputFrameStateCombine::Push()); |
stack_depth = 1; |
@@ -2516,8 +2510,7 @@ void AstGraphBuilder::VisitCountOperation(CountOperation* expr) { |
Node* object = environment()->Peek(1); |
VectorSlotPair pair = |
CreateVectorSlotPair(property->PropertyFeedbackSlot()); |
- old_value = |
- BuildKeyedLoad(object, key, pair, property->PropertyFeedbackId()); |
+ old_value = BuildKeyedLoad(object, key, pair); |
states.AddToNode(old_value, property->LoadId(), |
OutputFrameStateCombine::Push()); |
stack_depth = 2; |
@@ -3012,8 +3005,7 @@ Node* AstGraphBuilder::BuildVariableLoad(FrameStateBeforeAndAfter& states, |
// Global var, const, or let variable. |
Node* global = BuildLoadGlobalObject(); |
Handle<Name> name = variable->name(); |
- Node* node = BuildNamedLoad(global, name, feedback, |
- TypeFeedbackId::None(), contextual_mode); |
+ Node* node = BuildNamedLoad(global, name, feedback, contextual_mode); |
states.AddToNode(node, bailout_id, combine); |
return node; |
} |
@@ -3218,38 +3210,43 @@ Node* AstGraphBuilder::BuildVariableAssignment( |
static inline Node* Record(JSTypeFeedbackTable* js_type_feedback, Node* node, |
- TypeFeedbackId id, FeedbackVectorICSlot slot) { |
+ FeedbackVectorICSlot slot) { |
if (js_type_feedback) { |
- js_type_feedback->Record(node, id); |
js_type_feedback->Record(node, slot); |
} |
return node; |
} |
+static inline Node* Record(JSTypeFeedbackTable* js_type_feedback, Node* node, |
+ TypeFeedbackId id) { |
+ if (js_type_feedback) { |
+ js_type_feedback->Record(node, id); |
+ } |
+ return node; |
+} |
+ |
+ |
Node* AstGraphBuilder::BuildKeyedLoad(Node* object, Node* key, |
- const VectorSlotPair& feedback, |
- TypeFeedbackId id) { |
+ const VectorSlotPair& feedback) { |
const Operator* op = javascript()->LoadProperty(feedback); |
- return Record(js_type_feedback_, NewNode(op, object, key), id, |
- feedback.slot()); |
+ return Record(js_type_feedback_, NewNode(op, object, key), feedback.slot()); |
} |
Node* AstGraphBuilder::BuildNamedLoad(Node* object, Handle<Name> name, |
const VectorSlotPair& feedback, |
- TypeFeedbackId id, ContextualMode mode) { |
+ ContextualMode mode) { |
const Operator* op = |
javascript()->LoadNamed(MakeUnique(name), feedback, mode); |
- return Record(js_type_feedback_, NewNode(op, object), id, feedback.slot()); |
+ return Record(js_type_feedback_, NewNode(op, object), feedback.slot()); |
} |
Node* AstGraphBuilder::BuildKeyedStore(Node* object, Node* key, Node* value, |
TypeFeedbackId id) { |
const Operator* op = javascript()->StoreProperty(language_mode()); |
- return Record(js_type_feedback_, NewNode(op, object, key, value), id, |
- FeedbackVectorICSlot::Invalid()); |
+ return Record(js_type_feedback_, NewNode(op, object, key, value), id); |
} |
@@ -3257,8 +3254,7 @@ Node* AstGraphBuilder::BuildNamedStore(Node* object, Handle<Name> name, |
Node* value, TypeFeedbackId id) { |
const Operator* op = |
javascript()->StoreNamed(language_mode(), MakeUnique(name)); |
- return Record(js_type_feedback_, NewNode(op, object, value), id, |
- FeedbackVectorICSlot::Invalid()); |
+ return Record(js_type_feedback_, NewNode(op, object, value), id); |
} |