| Index: src/compiler/ast-graph-builder.cc
|
| diff --git a/src/compiler/ast-graph-builder.cc b/src/compiler/ast-graph-builder.cc
|
| index 4755056d7fb3eb7e3aae2f6ffd9fe6c92903d2c9..ae305d3f0479f94a1727d5330275fed4249447a1 100644
|
| --- a/src/compiler/ast-graph-builder.cc
|
| +++ b/src/compiler/ast-graph-builder.cc
|
| @@ -7,7 +7,6 @@
|
| #include "src/compiler.h"
|
| #include "src/compiler/ast-loop-assignment-analyzer.h"
|
| #include "src/compiler/control-builders.h"
|
| -#include "src/compiler/js-type-feedback.h"
|
| #include "src/compiler/linkage.h"
|
| #include "src/compiler/liveness-analyzer.h"
|
| #include "src/compiler/machine-operator.h"
|
| @@ -428,8 +427,7 @@ class AstGraphBuilder::FrameStateBeforeAndAfter {
|
|
|
|
|
| AstGraphBuilder::AstGraphBuilder(Zone* local_zone, CompilationInfo* info,
|
| - JSGraph* jsgraph, LoopAssignmentAnalysis* loop,
|
| - JSTypeFeedbackTable* js_type_feedback)
|
| + JSGraph* jsgraph, LoopAssignmentAnalysis* loop)
|
| : isolate_(info->isolate()),
|
| local_zone_(local_zone),
|
| info_(info),
|
| @@ -451,8 +449,7 @@ AstGraphBuilder::AstGraphBuilder(Zone* local_zone, CompilationInfo* info,
|
| frame_state_function_info_(common()->CreateFrameStateFunctionInfo(
|
| FrameStateType::kJavaScriptFunction, info->num_parameters() + 1,
|
| info->scope()->num_stack_slots(), info->shared_info(),
|
| - CALL_MAINTAINS_NATIVE_CONTEXT)),
|
| - js_type_feedback_(js_type_feedback) {
|
| + CALL_MAINTAINS_NATIVE_CONTEXT)) {
|
| InitializeAstVisitor(info->isolate());
|
| }
|
|
|
| @@ -1753,8 +1750,7 @@ void AstGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) {
|
| Handle<Name> name = key->AsPropertyName();
|
| VectorSlotPair feedback =
|
| CreateVectorSlotPair(property->GetSlot(0));
|
| - Node* store = BuildNamedStore(literal, name, value, feedback,
|
| - TypeFeedbackId::None());
|
| + Node* store = BuildNamedStore(literal, name, value, feedback);
|
| states.AddToNode(store, key->id(),
|
| OutputFrameStateCombine::Ignore());
|
| BuildSetHomeObject(value, literal, property, 1);
|
| @@ -1946,8 +1942,7 @@ void AstGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) {
|
| VectorSlotPair pair = CreateVectorSlotPair(expr->LiteralFeedbackSlot());
|
| Node* value = environment()->Pop();
|
| Node* index = jsgraph()->Constant(array_index);
|
| - Node* store =
|
| - BuildKeyedStore(literal, index, value, pair, TypeFeedbackId::None());
|
| + Node* store = BuildKeyedStore(literal, index, value, pair);
|
| states.AddToNode(store, expr->GetIdForElement(array_index),
|
| OutputFrameStateCombine::Ignore());
|
| }
|
| @@ -2016,8 +2011,7 @@ void AstGraphBuilder::VisitForInAssignment(Expression* expr, Node* value,
|
| Node* object = environment()->Pop();
|
| value = environment()->Pop();
|
| Handle<Name> name = property->key()->AsLiteral()->AsPropertyName();
|
| - Node* store = BuildNamedStore(object, name, value, feedback,
|
| - TypeFeedbackId::None());
|
| + Node* store = BuildNamedStore(object, name, value, feedback);
|
| states.AddToNode(store, bailout_id_after,
|
| OutputFrameStateCombine::Ignore());
|
| break;
|
| @@ -2030,8 +2024,7 @@ void AstGraphBuilder::VisitForInAssignment(Expression* expr, Node* value,
|
| Node* key = environment()->Pop();
|
| Node* object = environment()->Pop();
|
| value = environment()->Pop();
|
| - Node* store =
|
| - BuildKeyedStore(object, key, value, feedback, TypeFeedbackId::None());
|
| + Node* store = BuildKeyedStore(object, key, value, feedback);
|
| states.AddToNode(store, bailout_id_after,
|
| OutputFrameStateCombine::Ignore());
|
| break;
|
| @@ -2045,8 +2038,7 @@ void AstGraphBuilder::VisitForInAssignment(Expression* expr, Node* value,
|
| Node* receiver = environment()->Pop();
|
| value = environment()->Pop();
|
| Handle<Name> name = property->key()->AsLiteral()->AsPropertyName();
|
| - Node* store = BuildNamedSuperStore(receiver, home_object, name, value,
|
| - TypeFeedbackId::None());
|
| + Node* store = BuildNamedSuperStore(receiver, home_object, name, value);
|
| states.AddToNode(store, bailout_id_after,
|
| OutputFrameStateCombine::Ignore());
|
| break;
|
| @@ -2061,8 +2053,7 @@ void AstGraphBuilder::VisitForInAssignment(Expression* expr, Node* value,
|
| Node* home_object = environment()->Pop();
|
| Node* receiver = environment()->Pop();
|
| value = environment()->Pop();
|
| - Node* store = BuildKeyedSuperStore(receiver, home_object, key, value,
|
| - TypeFeedbackId::None());
|
| + Node* store = BuildKeyedSuperStore(receiver, home_object, key, value);
|
| states.AddToNode(store, bailout_id_after,
|
| OutputFrameStateCombine::Ignore());
|
| break;
|
| @@ -2207,8 +2198,7 @@ void AstGraphBuilder::VisitAssignment(Assignment* expr) {
|
| case NAMED_PROPERTY: {
|
| Node* object = environment()->Pop();
|
| Handle<Name> name = property->key()->AsLiteral()->AsPropertyName();
|
| - Node* store = BuildNamedStore(object, name, value, feedback,
|
| - expr->AssignmentFeedbackId());
|
| + Node* store = BuildNamedStore(object, name, value, feedback);
|
| store_states.AddToNode(store, expr->id(),
|
| ast_context()->GetStateCombine());
|
| break;
|
| @@ -2216,8 +2206,7 @@ void AstGraphBuilder::VisitAssignment(Assignment* expr) {
|
| case KEYED_PROPERTY: {
|
| Node* key = environment()->Pop();
|
| Node* object = environment()->Pop();
|
| - Node* store = BuildKeyedStore(object, key, value, feedback,
|
| - expr->AssignmentFeedbackId());
|
| + Node* store = BuildKeyedStore(object, key, value, feedback);
|
| store_states.AddToNode(store, expr->id(),
|
| ast_context()->GetStateCombine());
|
| break;
|
| @@ -2226,8 +2215,7 @@ void AstGraphBuilder::VisitAssignment(Assignment* expr) {
|
| Node* home_object = environment()->Pop();
|
| Node* receiver = environment()->Pop();
|
| Handle<Name> name = property->key()->AsLiteral()->AsPropertyName();
|
| - Node* store = BuildNamedSuperStore(receiver, home_object, name, value,
|
| - expr->AssignmentFeedbackId());
|
| + Node* store = BuildNamedSuperStore(receiver, home_object, name, value);
|
| store_states.AddToNode(store, expr->id(),
|
| ast_context()->GetStateCombine());
|
| break;
|
| @@ -2236,8 +2224,7 @@ void AstGraphBuilder::VisitAssignment(Assignment* expr) {
|
| Node* key = environment()->Pop();
|
| Node* home_object = environment()->Pop();
|
| Node* receiver = environment()->Pop();
|
| - Node* store = BuildKeyedSuperStore(receiver, home_object, key, value,
|
| - expr->AssignmentFeedbackId());
|
| + Node* store = BuildKeyedSuperStore(receiver, home_object, key, value);
|
| store_states.AddToNode(store, expr->id(),
|
| ast_context()->GetStateCombine());
|
| break;
|
| @@ -2725,8 +2712,7 @@ void AstGraphBuilder::VisitCountOperation(CountOperation* expr) {
|
| case NAMED_PROPERTY: {
|
| Node* object = environment()->Pop();
|
| Handle<Name> name = property->key()->AsLiteral()->AsPropertyName();
|
| - Node* store = BuildNamedStore(object, name, value, feedback,
|
| - expr->CountStoreFeedbackId());
|
| + Node* store = BuildNamedStore(object, name, value, feedback);
|
| environment()->Push(value);
|
| store_states.AddToNode(store, expr->AssignmentId(),
|
| OutputFrameStateCombine::Ignore());
|
| @@ -2736,8 +2722,7 @@ void AstGraphBuilder::VisitCountOperation(CountOperation* expr) {
|
| case KEYED_PROPERTY: {
|
| Node* key = environment()->Pop();
|
| Node* object = environment()->Pop();
|
| - Node* store = BuildKeyedStore(object, key, value, feedback,
|
| - expr->CountStoreFeedbackId());
|
| + Node* store = BuildKeyedStore(object, key, value, feedback);
|
| environment()->Push(value);
|
| store_states.AddToNode(store, expr->AssignmentId(),
|
| OutputFrameStateCombine::Ignore());
|
| @@ -2748,8 +2733,7 @@ void AstGraphBuilder::VisitCountOperation(CountOperation* expr) {
|
| Node* home_object = environment()->Pop();
|
| Node* receiver = environment()->Pop();
|
| Handle<Name> name = property->key()->AsLiteral()->AsPropertyName();
|
| - Node* store = BuildNamedSuperStore(receiver, home_object, name, value,
|
| - expr->CountStoreFeedbackId());
|
| + Node* store = BuildNamedSuperStore(receiver, home_object, name, value);
|
| environment()->Push(value);
|
| store_states.AddToNode(store, expr->AssignmentId(),
|
| OutputFrameStateCombine::Ignore());
|
| @@ -2760,8 +2744,7 @@ void AstGraphBuilder::VisitCountOperation(CountOperation* expr) {
|
| Node* key = environment()->Pop();
|
| Node* home_object = environment()->Pop();
|
| Node* receiver = environment()->Pop();
|
| - Node* store = BuildKeyedSuperStore(receiver, home_object, key, value,
|
| - expr->CountStoreFeedbackId());
|
| + Node* store = BuildKeyedSuperStore(receiver, home_object, key, value);
|
| environment()->Push(value);
|
| store_states.AddToNode(store, expr->AssignmentId(),
|
| OutputFrameStateCombine::Ignore());
|
| @@ -3448,8 +3431,7 @@ Node* AstGraphBuilder::BuildVariableAssignment(
|
| case VariableLocation::UNALLOCATED: {
|
| // Global var, const, or let variable.
|
| Handle<Name> name = variable->name();
|
| - Node* store =
|
| - BuildGlobalStore(name, value, feedback, TypeFeedbackId::None());
|
| + Node* store = BuildGlobalStore(name, value, feedback);
|
| states.AddToNode(store, bailout_id, combine);
|
| return store;
|
| }
|
| @@ -3566,29 +3548,11 @@ Node* AstGraphBuilder::BuildVariableAssignment(
|
| }
|
|
|
|
|
| -static inline Node* Record(JSTypeFeedbackTable* js_type_feedback, Node* node,
|
| - FeedbackVectorSlot slot) {
|
| - if (js_type_feedback) {
|
| - 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) {
|
| const Operator* op = javascript()->LoadProperty(language_mode(), feedback);
|
| Node* node = NewNode(op, object, key, BuildLoadFeedbackVector());
|
| - return Record(js_type_feedback_, node, feedback.slot());
|
| + return node;
|
| }
|
|
|
|
|
| @@ -3596,33 +3560,25 @@ Node* AstGraphBuilder::BuildNamedLoad(Node* object, Handle<Name> name,
|
| const VectorSlotPair& feedback) {
|
| const Operator* op = javascript()->LoadNamed(language_mode(), name, feedback);
|
| Node* node = NewNode(op, object, BuildLoadFeedbackVector());
|
| - return Record(js_type_feedback_, node, feedback.slot());
|
| + return node;
|
| }
|
|
|
|
|
| Node* AstGraphBuilder::BuildKeyedStore(Node* object, Node* key, Node* value,
|
| - const VectorSlotPair& feedback,
|
| - TypeFeedbackId id) {
|
| + const VectorSlotPair& feedback) {
|
| const Operator* op = javascript()->StoreProperty(language_mode(), feedback);
|
| Node* node = NewNode(op, object, key, value, BuildLoadFeedbackVector());
|
| - if (FLAG_vector_stores) {
|
| - return Record(js_type_feedback_, node, feedback.slot());
|
| - }
|
| - return Record(js_type_feedback_, node, id);
|
| + return node;
|
| }
|
|
|
|
|
| Node* AstGraphBuilder::BuildNamedStore(Node* object, Handle<Name> name,
|
| Node* value,
|
| - const VectorSlotPair& feedback,
|
| - TypeFeedbackId id) {
|
| + const VectorSlotPair& feedback) {
|
| const Operator* op =
|
| javascript()->StoreNamed(language_mode(), name, feedback);
|
| Node* node = NewNode(op, object, value, BuildLoadFeedbackVector());
|
| - if (FLAG_vector_stores) {
|
| - return Record(js_type_feedback_, node, feedback.slot());
|
| - }
|
| - return Record(js_type_feedback_, node, id);
|
| + return node;
|
| }
|
|
|
|
|
| @@ -3633,7 +3589,7 @@ Node* AstGraphBuilder::BuildNamedSuperLoad(Node* receiver, Node* home_object,
|
| Node* language = jsgraph()->Constant(language_mode());
|
| const Operator* op = javascript()->CallRuntime(Runtime::kLoadFromSuper, 4);
|
| Node* node = NewNode(op, receiver, home_object, name_node, language);
|
| - return Record(js_type_feedback_, node, feedback.slot());
|
| + return node;
|
| }
|
|
|
|
|
| @@ -3644,32 +3600,30 @@ Node* AstGraphBuilder::BuildKeyedSuperLoad(Node* receiver, Node* home_object,
|
| const Operator* op =
|
| javascript()->CallRuntime(Runtime::kLoadKeyedFromSuper, 4);
|
| Node* node = NewNode(op, receiver, home_object, key, language);
|
| - return Record(js_type_feedback_, node, feedback.slot());
|
| + return node;
|
| }
|
|
|
|
|
| Node* AstGraphBuilder::BuildKeyedSuperStore(Node* receiver, Node* home_object,
|
| - Node* key, Node* value,
|
| - TypeFeedbackId id) {
|
| + Node* key, Node* value) {
|
| Runtime::FunctionId function_id = is_strict(language_mode())
|
| ? Runtime::kStoreKeyedToSuper_Strict
|
| : Runtime::kStoreKeyedToSuper_Sloppy;
|
| const Operator* op = javascript()->CallRuntime(function_id, 4);
|
| Node* node = NewNode(op, receiver, home_object, key, value);
|
| - return Record(js_type_feedback_, node, id);
|
| + return node;
|
| }
|
|
|
|
|
| Node* AstGraphBuilder::BuildNamedSuperStore(Node* receiver, Node* home_object,
|
| - Handle<Name> name, Node* value,
|
| - TypeFeedbackId id) {
|
| + Handle<Name> name, Node* value) {
|
| Node* name_node = jsgraph()->Constant(name);
|
| Runtime::FunctionId function_id = is_strict(language_mode())
|
| ? Runtime::kStoreToSuper_Strict
|
| : Runtime::kStoreToSuper_Sloppy;
|
| const Operator* op = javascript()->CallRuntime(function_id, 4);
|
| Node* node = NewNode(op, receiver, home_object, name_node, value);
|
| - return Record(js_type_feedback_, node, id);
|
| + return node;
|
| }
|
|
|
|
|
| @@ -3678,20 +3632,16 @@ Node* AstGraphBuilder::BuildGlobalLoad(Handle<Name> name,
|
| TypeofMode typeof_mode) {
|
| const Operator* op = javascript()->LoadGlobal(name, feedback, typeof_mode);
|
| Node* node = NewNode(op, BuildLoadFeedbackVector());
|
| - return Record(js_type_feedback_, node, feedback.slot());
|
| + return node;
|
| }
|
|
|
|
|
| Node* AstGraphBuilder::BuildGlobalStore(Handle<Name> name, Node* value,
|
| - const VectorSlotPair& feedback,
|
| - TypeFeedbackId id) {
|
| + const VectorSlotPair& feedback) {
|
| const Operator* op =
|
| javascript()->StoreGlobal(language_mode(), name, feedback);
|
| Node* node = NewNode(op, value, BuildLoadFeedbackVector());
|
| - if (FLAG_vector_stores) {
|
| - return Record(js_type_feedback_, node, feedback.slot());
|
| - }
|
| - return Record(js_type_feedback_, node, id);
|
| + return node;
|
| }
|
|
|
|
|
| @@ -3820,8 +3770,7 @@ Node* AstGraphBuilder::BuildSetHomeObject(Node* value, Node* home_object,
|
| FrameStateBeforeAndAfter states(this, BailoutId::None());
|
| VectorSlotPair feedback =
|
| CreateVectorSlotPair(property->GetSlot(slot_number));
|
| - Node* store = BuildNamedStore(value, name, home_object, feedback,
|
| - TypeFeedbackId::None());
|
| + Node* store = BuildNamedStore(value, name, home_object, feedback);
|
| states.AddToNode(store, BailoutId::None(), OutputFrameStateCombine::Ignore());
|
| return store;
|
| }
|
|
|