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

Unified Diff: src/hydrogen.cc

Issue 1099473004: Reland "Refactor compilation dependency handling." (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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/hydrogen.h ('k') | src/lithium.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index ba055405b17692533ec472ca6a76bd7519ea7bc0..e077541a20bd93187e30d6ac4ab134297d94b9b2 100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -5396,7 +5396,7 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
if (type == kUseCell) {
Handle<PropertyCell> cell = it.GetPropertyCell();
- PropertyCell::AddDependentCompilationInfo(cell, top_info());
+ top_info()->dependencies()->AssumePropertyCell(cell);
if (it.property_details().cell_type() == PropertyCellType::kConstant) {
Handle<Object> constant_object(cell->value(), isolate());
if (constant_object->IsConsString()) {
@@ -5777,7 +5777,7 @@ void HOptimizedGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) {
4);
// Register to deopt if the boilerplate ElementsKind changes.
- AllocationSite::RegisterForDeoptOnTransitionChange(site, top_info());
+ top_info()->dependencies()->AssumeTransitionStable(site);
}
// The array is expected in the bailout environment during computation
@@ -6092,8 +6092,7 @@ bool HOptimizedGraphBuilder::PropertyAccessInfo::LoadFieldMaps(
DCHECK(field_type_.IsHeapObject());
// Add dependency on the map that introduced the field.
- Map::AddDependentCompilationInfo(GetFieldOwnerFromMap(map),
- DependentCode::kFieldTypeGroup, top_info());
+ top_info()->dependencies()->AssumeFieldType(GetFieldOwnerFromMap(map));
return true;
}
@@ -6563,7 +6562,7 @@ void HOptimizedGraphBuilder::HandleGlobalVariableAssignment(
GlobalPropertyAccess type = LookupGlobalProperty(var, &it, STORE);
if (type == kUseCell) {
Handle<PropertyCell> cell = it.GetPropertyCell();
- PropertyCell::AddDependentCompilationInfo(cell, top_info());
+ top_info()->dependencies()->AssumePropertyCell(cell);
if (it.property_details().cell_type() == PropertyCellType::kConstant) {
Handle<Object> constant(cell->value(), isolate());
if (value->IsConstant()) {
@@ -9357,7 +9356,7 @@ void HOptimizedGraphBuilder::BuildInlinedCallArray(
HValue* constructor = environment()->ExpressionStackAt(argument_count);
// Register on the site for deoptimization if the transition feedback changes.
- AllocationSite::RegisterForDeoptOnTransitionChange(site, top_info());
+ top_info()->dependencies()->AssumeTransitionStable(site);
ElementsKind kind = site->GetElementsKind();
HInstruction* site_instruction = Add<HConstant>(site);
@@ -9493,8 +9492,7 @@ void HOptimizedGraphBuilder::VisitCallNew(CallNew* expr) {
Handle<AllocationSite> allocation_site = expr->allocation_site();
allocation_mode = HAllocationMode(allocation_site);
// Take a dependency on allocation site.
- AllocationSite::RegisterForDeoptOnTenureChange(allocation_site,
- top_info());
+ top_info()->dependencies()->AssumeTenuringDecision(allocation_site);
}
}
@@ -9538,8 +9536,7 @@ void HOptimizedGraphBuilder::VisitCallNew(CallNew* expr) {
// Inlining worked, add a dependency on the initial map to make sure that
// this code is deoptimized whenever the initial map of the constructor
// changes.
- Map::AddDependentCompilationInfo(
- initial_map, DependentCode::kInitialMapChangedGroup, top_info());
+ top_info()->dependencies()->AssumeInitialMapCantChange(initial_map);
return;
}
@@ -10513,7 +10510,7 @@ HValue* HGraphBuilder::BuildBinaryOperation(
if (!allocation_mode.feedback_site().is_null()) {
DCHECK(!graph()->info()->IsStub());
Handle<AllocationSite> site(allocation_mode.feedback_site());
- AllocationSite::RegisterForDeoptOnTenureChange(site, top_info());
+ top_info()->dependencies()->AssumeTenuringDecision(site);
}
// Inline the string addition into the stub when creating allocation
@@ -11084,10 +11081,10 @@ HInstruction* HOptimizedGraphBuilder::BuildFastLiteral(
Handle<AllocationSite> current_site(*site_context->current(), isolate());
if (FLAG_allocation_site_pretenuring) {
pretenure_flag = current_site->GetPretenureMode();
- AllocationSite::RegisterForDeoptOnTenureChange(current_site, top_info());
+ top_info()->dependencies()->AssumeTenuringDecision(current_site);
}
- AllocationSite::RegisterForDeoptOnTransitionChange(current_site, top_info());
+ top_info()->dependencies()->AssumeTransitionStable(current_site);
HInstruction* object = Add<HAllocate>(
object_size_constant, type, pretenure_flag, instance_type, current_site);
« no previous file with comments | « src/hydrogen.h ('k') | src/lithium.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698