Index: runtime/vm/flow_graph.cc |
=================================================================== |
--- runtime/vm/flow_graph.cc (revision 43047) |
+++ runtime/vm/flow_graph.cc (working copy) |
@@ -22,7 +22,7 @@ |
FlowGraph::FlowGraph(ParsedFunction* parsed_function, |
GraphEntryInstr* graph_entry, |
intptr_t max_block_id) |
- : isolate_(Isolate::Current()), |
+ : thread_(Thread::Current()), |
parent_(), |
current_ssa_temp_index_(0), |
max_block_id_(max_block_id), |
@@ -43,8 +43,7 @@ |
loop_invariant_loads_(NULL), |
guarded_fields_(parsed_function->guarded_fields()), |
deferred_prefixes_(parsed_function->deferred_prefixes()), |
- captured_parameters_( |
- new(isolate_) BitVector(isolate_, variable_count())) { |
+ captured_parameters_(new(zone()) BitVector(zone(), variable_count())) { |
DiscoverBlocks(); |
} |
@@ -98,7 +97,7 @@ |
ConstantInstr* constant = constant_instr_pool_.Lookup(object); |
if (constant == NULL) { |
// Otherwise, allocate and add it to the pool. |
- constant = new(isolate()) ConstantInstr( |
+ constant = new(zone()) ConstantInstr( |
Object::ZoneHandle(isolate(), object.raw())); |
constant->set_ssa_temp_index(alloc_ssa_temp_index()); |
@@ -224,7 +223,7 @@ |
void FlowGraph::MergeBlocks() { |
bool changed = false; |
- BitVector* merged = new(isolate()) BitVector(isolate(), postorder().length()); |
+ BitVector* merged = new(zone()) BitVector(zone(), postorder().length()); |
for (BlockIterator block_it = reverse_postorder_iterator(); |
!block_it.Done(); |
block_it.Advance()) { |
@@ -372,7 +371,7 @@ |
LivenessAnalysis::LivenessAnalysis( |
intptr_t variable_count, |
const GrowableArray<BlockEntryInstr*>& postorder) |
- : isolate_(Isolate::Current()), |
+ : zone_(Thread::Current()->zone()), |
variable_count_(variable_count), |
postorder_(postorder), |
live_out_(postorder.length()), |
@@ -429,9 +428,9 @@ |
void LivenessAnalysis::Analyze() { |
const intptr_t block_count = postorder_.length(); |
for (intptr_t i = 0; i < block_count; i++) { |
- live_out_.Add(new(isolate()) BitVector(isolate(), variable_count_)); |
- kill_.Add(new(isolate()) BitVector(isolate(), variable_count_)); |
- live_in_.Add(new(isolate()) BitVector(isolate(), variable_count_)); |
+ live_out_.Add(new(zone()) BitVector(zone(), variable_count_)); |
+ kill_.Add(new(zone()) BitVector(zone(), variable_count_)); |
+ live_in_.Add(new(zone()) BitVector(zone(), variable_count_)); |
} |
ComputeInitialSets(); |
@@ -548,7 +547,7 @@ |
void VariableLivenessAnalysis::ComputeInitialSets() { |
const intptr_t block_count = postorder_.length(); |
- BitVector* last_loads = new(isolate()) BitVector(isolate(), variable_count_); |
+ BitVector* last_loads = new(zone()) BitVector(zone(), variable_count_); |
for (intptr_t i = 0; i < block_count; i++) { |
BlockEntryInstr* block = postorder_[i]; |
@@ -674,7 +673,7 @@ |
idom.Add(parent_[i]); |
semi.Add(i); |
label.Add(i); |
- dominance_frontier->Add(new(isolate()) BitVector(isolate(), size)); |
+ dominance_frontier->Add(new(zone()) BitVector(zone(), size)); |
} |
// Loop over the blocks in reverse preorder (not including the graph |
@@ -844,7 +843,7 @@ |
// are unknown and so treated like parameters. |
intptr_t count = IsCompiledForOsr() ? variable_count() : parameter_count(); |
for (intptr_t i = 0; i < count; ++i) { |
- ParameterInstr* param = new(isolate()) ParameterInstr(i, entry); |
+ ParameterInstr* param = new(zone()) ParameterInstr(i, entry); |
param->set_ssa_temp_index(alloc_ssa_temp_index()); // New SSA temp. |
AddToInitialDefinitions(param); |
env.Add(param); |
@@ -930,7 +929,7 @@ |
} else if (block_entry->IsCatchBlockEntry()) { |
// Add real definitions for all locals and parameters. |
for (intptr_t i = 0; i < env->length(); ++i) { |
- ParameterInstr* param = new(isolate()) ParameterInstr(i, block_entry); |
+ ParameterInstr* param = new(zone()) ParameterInstr(i, block_entry); |
param->set_ssa_temp_index(alloc_ssa_temp_index()); // New SSA temp. |
(*env)[i] = param; |
block_entry->AsCatchBlockEntry()->initial_definitions()->Add(param); |
@@ -1109,7 +1108,7 @@ |
PhiInstr* phi = (*successor->phis())[i]; |
if (phi != NULL) { |
// Rename input operand. |
- Value* use = new(isolate()) Value((*env)[i]); |
+ Value* use = new(zone()) Value((*env)[i]); |
phi->SetInputAt(pred_index, use); |
} |
} |
@@ -1194,7 +1193,7 @@ |
// Design & Implementation" (Muchnick) p192. |
BitVector* FlowGraph::FindLoop(BlockEntryInstr* m, BlockEntryInstr* n) const { |
GrowableArray<BlockEntryInstr*> stack; |
- BitVector* loop = new(isolate()) BitVector(isolate(), preorder_.length()); |
+ BitVector* loop = new(zone()) BitVector(zone(), preorder_.length()); |
loop->Add(n->preorder_number()); |
if (n != m) { |
@@ -1218,7 +1217,7 @@ |
ZoneGrowableArray<BlockEntryInstr*>* FlowGraph::ComputeLoops() const { |
ZoneGrowableArray<BlockEntryInstr*>* loop_headers = |
- new(isolate()) ZoneGrowableArray<BlockEntryInstr*>(); |
+ new(zone()) ZoneGrowableArray<BlockEntryInstr*>(); |
for (BlockIterator it = postorder_iterator(); |
!it.Done(); |
@@ -1279,7 +1278,7 @@ |
void FlowGraph::ComputeBlockEffects() { |
- block_effects_ = new(isolate()) BlockEffects(this); |
+ block_effects_ = new(zone()) BlockEffects(this); |
} |
@@ -1287,11 +1286,11 @@ |
: available_at_(flow_graph->postorder().length()) { |
// We are tracking a single effect. |
ASSERT(EffectSet::kLastEffect == 1); |
- Isolate* isolate = flow_graph->isolate(); |
+ Zone* zone = flow_graph->zone(); |
const intptr_t block_count = flow_graph->postorder().length(); |
// Set of blocks that contain side-effects. |
- BitVector* kill = new(isolate) BitVector(isolate, block_count); |
+ BitVector* kill = new(zone) BitVector(zone, block_count); |
// Per block available-after sets. Block A is available after the block B if |
// and only if A is either equal to B or A is available at B and B contains no |
@@ -1317,7 +1316,7 @@ |
} |
} |
- BitVector* temp = new(isolate) BitVector(isolate, block_count); |
+ BitVector* temp = new(zone) BitVector(zone, block_count); |
// Recompute available-at based on predecessors' available-after until the fix |
// point is reached. |
@@ -1350,9 +1349,9 @@ |
// Available-at changed: update it and recompute available-after. |
if (available_at_[block_num] == NULL) { |
current = available_at_[block_num] = |
- new(isolate) BitVector(isolate, block_count); |
+ new(zone) BitVector(zone, block_count); |
available_after[block_num] = |
- new(isolate) BitVector(isolate, block_count); |
+ new(zone) BitVector(zone, block_count); |
// Block is always available after itself. |
available_after[block_num]->Add(block_num); |
} |