Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Unified Diff: src/crankshaft/hydrogen.cc

Issue 2391043005: [crankshaft] Remove HLoadKeyedGeneric and use HCallWithDescriptor to call KeyedLoadIC. (Closed)
Patch Set: Rebasing Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/crankshaft/arm64/lithium-codegen-arm64.cc ('k') | src/crankshaft/hydrogen-instructions.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/crankshaft/hydrogen.cc
diff --git a/src/crankshaft/hydrogen.cc b/src/crankshaft/hydrogen.cc
index 406811c0a3d8dee27a3d2057838b58b2f81efc51..43ee8b977f50202066ecda70c3f8190926280aa3 100644
--- a/src/crankshaft/hydrogen.cc
+++ b/src/crankshaft/hydrogen.cc
@@ -5598,7 +5598,8 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
HValue* stub = Add<HConstant>(callable.code());
HValue* values[] = {slot_value, vector_value};
HCallWithDescriptor* instr = New<HCallWithDescriptor>(
- stub, 0, callable.descriptor(), ArrayVector(values));
+ Code::LOAD_GLOBAL_IC, stub, 0, callable.descriptor(),
+ ArrayVector(values));
return ast_context()->ReturnInstruction(instr, expr->id());
}
}
@@ -6796,7 +6797,7 @@ void HOptimizedGraphBuilder::HandleGlobalVariableAssignment(
HValue* stub = Add<HConstant>(callable.code());
HValue* values[] = {global_object, name, value, slot_value, vector_value};
HCallWithDescriptor* instr = Add<HCallWithDescriptor>(
- stub, 0, callable.descriptor(), ArrayVector(values));
+ Code::STORE_IC, stub, 0, callable.descriptor(), ArrayVector(values));
USE(instr);
DCHECK(instr->HasObservableSideEffects());
Add<HSimulate>(ast_id, REMOVABLE_SIMULATE);
@@ -7108,15 +7109,17 @@ HInstruction* HOptimizedGraphBuilder::BuildNamedGeneric(
// to a named load. Here, at the last minute, we need to make sure to
// use a generic Keyed Load if we are using the type vector, because
// it has to share information with full code.
- HLoadKeyedGeneric* result =
- New<HLoadKeyedGeneric>(object, key, vector, slot);
+ Callable callable = CodeFactory::KeyedLoadICInOptimizedCode(isolate());
+ HValue* stub = Add<HConstant>(callable.code());
+ HCallWithDescriptor* result =
+ New<HCallWithDescriptor>(Code::KEYED_LOAD_IC, stub, 0,
+ callable.descriptor(), ArrayVector(values));
return result;
}
-
Callable callable = CodeFactory::LoadICInOptimizedCode(isolate());
HValue* stub = Add<HConstant>(callable.code());
HCallWithDescriptor* result = New<HCallWithDescriptor>(
- stub, 0, callable.descriptor(), ArrayVector(values));
+ Code::LOAD_IC, stub, 0, callable.descriptor(), ArrayVector(values));
return result;
} else {
@@ -7129,15 +7132,16 @@ HInstruction* HOptimizedGraphBuilder::BuildNamedGeneric(
Callable callable = CodeFactory::KeyedStoreICInOptimizedCode(
isolate(), function_language_mode());
HValue* stub = Add<HConstant>(callable.code());
- HCallWithDescriptor* result = New<HCallWithDescriptor>(
- stub, 0, callable.descriptor(), ArrayVector(values));
+ HCallWithDescriptor* result =
+ New<HCallWithDescriptor>(Code::KEYED_STORE_IC, stub, 0,
+ callable.descriptor(), ArrayVector(values));
return result;
}
Callable callable = CodeFactory::StoreICInOptimizedCode(
isolate(), function_language_mode());
HValue* stub = Add<HConstant>(callable.code());
HCallWithDescriptor* result = New<HCallWithDescriptor>(
- stub, 0, callable.descriptor(), ArrayVector(values));
+ Code::STORE_IC, stub, 0, callable.descriptor(), ArrayVector(values));
return result;
}
}
@@ -7146,22 +7150,28 @@ HInstruction* HOptimizedGraphBuilder::BuildNamedGeneric(
HInstruction* HOptimizedGraphBuilder::BuildKeyedGeneric(
PropertyAccessType access_type, Expression* expr, FeedbackVectorSlot slot,
HValue* object, HValue* key, HValue* value) {
- Handle<TypeFeedbackVector> vector =
- handle(current_feedback_vector(), isolate());
+ Handle<TypeFeedbackVector> vector(current_feedback_vector(), isolate());
+ HValue* vector_value = Add<HConstant>(vector);
+ HValue* slot_value = Add<HConstant>(vector->GetIndex(slot));
+
if (access_type == LOAD) {
- HLoadKeyedGeneric* result =
- New<HLoadKeyedGeneric>(object, key, vector, slot);
+ HValue* values[] = {object, key, slot_value, vector_value};
+
+ Callable callable = CodeFactory::KeyedLoadICInOptimizedCode(isolate());
+ HValue* stub = Add<HConstant>(callable.code());
+ HCallWithDescriptor* result =
+ New<HCallWithDescriptor>(Code::KEYED_LOAD_IC, stub, 0,
+ callable.descriptor(), ArrayVector(values));
return result;
} else {
- HValue* vector_value = Add<HConstant>(vector);
- HValue* slot_value = Add<HConstant>(vector->GetIndex(slot));
HValue* values[] = {object, key, value, slot_value, vector_value};
Callable callable = CodeFactory::KeyedStoreICInOptimizedCode(
isolate(), function_language_mode());
HValue* stub = Add<HConstant>(callable.code());
- HCallWithDescriptor* result = New<HCallWithDescriptor>(
- stub, 0, callable.descriptor(), ArrayVector(values));
+ HCallWithDescriptor* result =
+ New<HCallWithDescriptor>(Code::KEYED_STORE_IC, stub, 0,
+ callable.descriptor(), ArrayVector(values));
return result;
}
}
« no previous file with comments | « src/crankshaft/arm64/lithium-codegen-arm64.cc ('k') | src/crankshaft/hydrogen-instructions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698