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

Unified Diff: runtime/vm/flow_graph_builder.cc

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month 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 | « runtime/vm/flow_graph_builder.h ('k') | runtime/vm/flow_graph_builder_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/flow_graph_builder.cc
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
index 11e4d397d86f135a22cc7f8c5cf42f2a449bc568..e3963d94dea0f76d57bf9f464f5b33bee4a58a33 100644
--- a/runtime/vm/flow_graph_builder.cc
+++ b/runtime/vm/flow_graph_builder.cc
@@ -32,11 +32,15 @@
namespace dart {
-DEFINE_FLAG(bool, eliminate_type_checks, true,
+DEFINE_FLAG(bool,
+ eliminate_type_checks,
+ true,
"Eliminate type checks when allowed by static type analysis.");
DEFINE_FLAG(bool, print_ast, false, "Print abstract syntax tree.");
DEFINE_FLAG(bool, print_scopes, false, "Print scopes of local variables.");
-DEFINE_FLAG(bool, trace_type_check_elimination, false,
+DEFINE_FLAG(bool,
+ trace_type_check_elimination,
+ false,
"Trace type check elimination at compile time.");
DECLARE_FLAG(bool, profile_vm);
@@ -53,13 +57,13 @@ DECLARE_FLAG(bool, support_externalizable_strings);
// TODO(srdjan): Allow compiler to add constants as they are encountered in
// the compilation.
-const double kCommonDoubleConstants[] =
- {-1.0, -0.5, -0.1, 0.0, 0.1, 0.5, 1.0, 2.0, 4.0, 5.0,
- 10.0, 20.0, 30.0, 64.0, 255.0, NAN,
- // From dart:math
- 2.718281828459045, 2.302585092994046, 0.6931471805599453,
- 1.4426950408889634, 0.4342944819032518, 3.1415926535897932,
- 0.7071067811865476, 1.4142135623730951};
+const double kCommonDoubleConstants[] = {
+ -1.0, -0.5, -0.1, 0.0, 0.1, 0.5, 1.0, 2.0, 4.0, 5.0, 10.0, 20.0, 30.0, 64.0,
+ 255.0, NAN,
+ // From dart:math
+ 2.718281828459045, 2.302585092994046, 0.6931471805599453,
+ 1.4426950408889634, 0.4342944819032518, 3.1415926535897932,
+ 0.7071067811865476, 1.4142135623730951};
uword FlowGraphBuilder::FindDoubleConstant(double value) {
intptr_t len = sizeof(kCommonDoubleConstants) / sizeof(double); // NOLINT
@@ -73,18 +77,16 @@ uword FlowGraphBuilder::FindDoubleConstant(double value) {
#define RECOGNIZE_FACTORY(test_factory_symbol, cid, fp) \
- { Symbols::k##test_factory_symbol##Id, cid, \
- fp, #test_factory_symbol ", " #cid },
+ {Symbols::k##test_factory_symbol##Id, cid, fp, \
+ #test_factory_symbol ", " #cid}, // NOLINT
static struct {
intptr_t symbold_id;
intptr_t cid;
intptr_t finger_print;
const char* name;
-} factory_recognizer_list[] = {
- RECOGNIZED_LIST_FACTORY_LIST(RECOGNIZE_FACTORY)
- { Symbols::kIllegal, -1, -1, NULL }
-};
+} factory_recognizer_list[] = {RECOGNIZED_LIST_FACTORY_LIST(RECOGNIZE_FACTORY){
+ Symbols::kIllegal, -1, -1, NULL}};
#undef RECOGNIZE_FACTORY
@@ -96,8 +98,7 @@ intptr_t FactoryRecognizer::ResultCid(const Function& factory) {
(lib.raw() == Library::TypedDataLibrary()));
const String& factory_name = String::Handle(factory.name());
for (intptr_t i = 0;
- factory_recognizer_list[i].symbold_id != Symbols::kIllegal;
- i++) {
+ factory_recognizer_list[i].symbold_id != Symbols::kIllegal; i++) {
if (String::EqualsIgnoringPrivateKey(
factory_name,
Symbols::Symbol(factory_recognizer_list[i].symbold_id))) {
@@ -173,9 +174,8 @@ intptr_t FlowGraphBuilder::context_level() const {
JoinEntryInstr* NestedStatement::BreakTargetFor(SourceLabel* label) {
if (label != label_) return NULL;
if (break_target_ == NULL) {
- break_target_ =
- new(owner()->zone()) JoinEntryInstr(owner()->AllocateBlockId(),
- try_index());
+ break_target_ = new (owner()->zone())
+ JoinEntryInstr(owner()->AllocateBlockId(), try_index());
}
return break_target_;
}
@@ -201,8 +201,8 @@ class NestedBlock : public NestedStatement {
intptr_t NestedBlock::ContextLevel() const {
return ((scope_ == NULL) || (scope_->num_context_variables() == 0))
- ? NestedStatement::ContextLevel()
- : scope_->context_level();
+ ? NestedStatement::ContextLevel()
+ : scope_->context_level();
}
@@ -210,7 +210,7 @@ intptr_t NestedBlock::ContextLevel() const {
class NestedContextAdjustment : public NestedStatement {
public:
NestedContextAdjustment(FlowGraphBuilder* owner, intptr_t context_level)
- : NestedStatement(owner, NULL), context_level_(context_level) { }
+ : NestedStatement(owner, NULL), context_level_(context_level) {}
virtual intptr_t ContextLevel() const { return context_level_; }
@@ -233,9 +233,7 @@ class NestedLoop : public NestedStatement {
owner->IncrementLoopDepth();
}
- virtual ~NestedLoop() {
- owner()->DecrementLoopDepth();
- }
+ virtual ~NestedLoop() { owner()->DecrementLoopDepth(); }
JoinEntryInstr* continue_target() const { return continue_target_; }
@@ -249,9 +247,8 @@ class NestedLoop : public NestedStatement {
JoinEntryInstr* NestedLoop::ContinueTargetFor(SourceLabel* label) {
if (label != this->label()) return NULL;
if (continue_target_ == NULL) {
- continue_target_ =
- new(owner()->zone()) JoinEntryInstr(owner()->AllocateBlockId(),
- try_index());
+ continue_target_ = new (owner()->zone())
+ JoinEntryInstr(owner()->AllocateBlockId(), try_index());
}
return continue_target_;
}
@@ -293,9 +290,8 @@ JoinEntryInstr* NestedSwitch::ContinueTargetFor(SourceLabel* label) {
for (intptr_t i = 0; i < case_labels_.length(); ++i) {
if (label != case_labels_[i]) continue;
if (case_targets_[i] == NULL) {
- case_targets_[i] =
- new(owner()->zone()) JoinEntryInstr(owner()->AllocateBlockId(),
- try_index());
+ case_targets_[i] = new (owner()->zone())
+ JoinEntryInstr(owner()->AllocateBlockId(), try_index());
}
return case_targets_[i];
}
@@ -307,27 +303,28 @@ FlowGraphBuilder::FlowGraphBuilder(
const ParsedFunction& parsed_function,
const ZoneGrowableArray<const ICData*>& ic_data_array,
InlineExitCollector* exit_collector,
- intptr_t osr_id) :
- parsed_function_(parsed_function),
- ic_data_array_(ic_data_array),
- num_copied_params_(parsed_function.num_copied_params()),
- // All parameters are copied if any parameter is.
- num_non_copied_params_((num_copied_params_ == 0)
- ? parsed_function.function().num_fixed_parameters()
- : 0),
- num_stack_locals_(parsed_function.num_stack_locals()),
- exit_collector_(exit_collector),
- last_used_block_id_(0), // 0 is used for the graph entry.
- try_index_(CatchClauseNode::kInvalidTryIndex),
- catch_try_index_(CatchClauseNode::kInvalidTryIndex),
- loop_depth_(0),
- graph_entry_(NULL),
- temp_count_(0),
- args_pushed_(0),
- nesting_stack_(NULL),
- osr_id_(osr_id),
- jump_count_(0),
- await_joins_(new(Z) ZoneGrowableArray<JoinEntryInstr*>()) { }
+ intptr_t osr_id)
+ : parsed_function_(parsed_function),
+ ic_data_array_(ic_data_array),
+ num_copied_params_(parsed_function.num_copied_params()),
+ // All parameters are copied if any parameter is.
+ num_non_copied_params_(
+ (num_copied_params_ == 0)
+ ? parsed_function.function().num_fixed_parameters()
+ : 0),
+ num_stack_locals_(parsed_function.num_stack_locals()),
+ exit_collector_(exit_collector),
+ last_used_block_id_(0), // 0 is used for the graph entry.
+ try_index_(CatchClauseNode::kInvalidTryIndex),
+ catch_try_index_(CatchClauseNode::kInvalidTryIndex),
+ loop_depth_(0),
+ graph_entry_(NULL),
+ temp_count_(0),
+ args_pushed_(0),
+ nesting_stack_(NULL),
+ osr_id_(osr_id),
+ jump_count_(0),
+ await_joins_(new (Z) ZoneGrowableArray<JoinEntryInstr*>()) {}
void FlowGraphBuilder::AddCatchEntry(CatchBlockEntryInstr* entry) {
@@ -349,11 +346,11 @@ void InlineExitCollector::PrepareGraphs(FlowGraph* callee_graph) {
// Attach the outer environment on each instruction in the callee graph.
ASSERT(call_->env() != NULL);
// Scale the edge weights by the call count for the inlined function.
- double scale_factor = static_cast<double>(call_->CallCount())
- / static_cast<double>(caller_graph_->graph_entry()->entry_count());
+ double scale_factor =
+ static_cast<double>(call_->CallCount()) /
+ static_cast<double>(caller_graph_->graph_entry()->entry_count());
for (BlockIterator block_it = callee_graph->postorder_iterator();
- !block_it.Done();
- block_it.Advance()) {
+ !block_it.Done(); block_it.Advance()) {
BlockEntryInstr* block = block_it.Current();
if (block->IsTargetEntry()) {
block->AsTargetEntry()->adjust_edge_weight(scale_factor);
@@ -381,7 +378,7 @@ void InlineExitCollector::PrepareGraphs(FlowGraph* callee_graph) {
void InlineExitCollector::AddExit(ReturnInstr* exit) {
- Data data = { NULL, exit };
+ Data data = {NULL, exit};
exits_.Add(data);
}
@@ -405,8 +402,7 @@ void InlineExitCollector::RemoveUnreachableExits(FlowGraph* callee_graph) {
int j = 0;
for (int i = 0; i < exits_.length(); ++i) {
BlockEntryInstr* block = exits_[i].exit_return->GetBlock();
- if ((block != NULL) &&
- (0 <= block->postorder_number()) &&
+ if ((block != NULL) && (0 <= block->postorder_number()) &&
(block->postorder_number() < postorder.length()) &&
(postorder[block->postorder_number()] == block)) {
if (i != j) {
@@ -446,8 +442,7 @@ Definition* InlineExitCollector::JoinReturns(BlockEntryInstr** exit_block,
// Create a join of the returns.
intptr_t join_id = caller_graph_->max_block_id() + 1;
caller_graph_->set_max_block_id(join_id);
- JoinEntryInstr* join =
- new(Z) JoinEntryInstr(join_id, try_index);
+ JoinEntryInstr* join = new (Z) JoinEntryInstr(join_id, try_index);
// The dominator set of the join is the intersection of the dominator
// sets of all the predecessors. If we keep the dominator sets ordered
@@ -465,7 +460,7 @@ Definition* InlineExitCollector::JoinReturns(BlockEntryInstr** exit_block,
GrowableArray<BlockEntryInstr*> join_dominators;
for (intptr_t i = 0; i < num_exits; ++i) {
// Add the control-flow edge.
- GotoInstr* goto_instr = new(Z) GotoInstr(join);
+ GotoInstr* goto_instr = new (Z) GotoInstr(join);
goto_instr->InheritDeoptTarget(zone(), ReturnAt(i));
LastInstructionAt(i)->LinkTo(goto_instr);
ExitBlockAt(i)->set_last_instruction(LastInstructionAt(i)->next());
@@ -511,7 +506,7 @@ Definition* InlineExitCollector::JoinReturns(BlockEntryInstr** exit_block,
// If the call has uses, create a phi of the returns.
if (call_->HasUses()) {
// Add a phi of the return values.
- PhiInstr* phi = new(Z) PhiInstr(join, num_exits);
+ PhiInstr* phi = new (Z) PhiInstr(join, num_exits);
caller_graph_->AllocateSSAIndexes(phi);
phi->mark_alive();
for (intptr_t i = 0; i < num_exits; ++i) {
@@ -550,21 +545,17 @@ void InlineExitCollector::ReplaceCall(TargetEntryInstr* callee_entry) {
// The true successor is the inlined body, the false successor
// goes to the rest of the caller graph. It is removed as unreachable code
// by the constant propagation.
- TargetEntryInstr* false_block =
- new(Z) TargetEntryInstr(caller_graph_->allocate_block_id(),
- call_block->try_index());
+ TargetEntryInstr* false_block = new (Z) TargetEntryInstr(
+ caller_graph_->allocate_block_id(), call_block->try_index());
false_block->InheritDeoptTargetAfter(caller_graph_, call_, NULL);
false_block->LinkTo(call_->next());
call_block->ReplaceAsPredecessorWith(false_block);
ConstantInstr* true_const = caller_graph_->GetConstant(Bool::True());
- BranchInstr* branch =
- new(Z) BranchInstr(
- new(Z) StrictCompareInstr(TokenPosition::kNoSource,
- Token::kEQ_STRICT,
- new(Z) Value(true_const),
- new(Z) Value(true_const),
- false)); // No number check.
+ BranchInstr* branch = new (Z) BranchInstr(new (Z) StrictCompareInstr(
+ TokenPosition::kNoSource, Token::kEQ_STRICT, new (Z) Value(true_const),
+ new (Z) Value(true_const),
+ false)); // No number check.
branch->InheritDeoptTarget(zone(), call_);
*branch->true_successor_address() = callee_entry;
*branch->false_successor_address() = false_block;
@@ -581,9 +572,8 @@ void InlineExitCollector::ReplaceCall(TargetEntryInstr* callee_entry) {
call_block->AddDominatedBlock(false_block);
} else {
- Definition* callee_result = JoinReturns(&callee_exit,
- &callee_last_instruction,
- call_block->try_index());
+ Definition* callee_result = JoinReturns(
+ &callee_exit, &callee_last_instruction, call_block->try_index());
if (callee_result != NULL) {
call_->ReplaceUsesWith(callee_result);
}
@@ -675,7 +665,7 @@ Value* EffectGraphVisitor::Bind(Definition* definition) {
exit()->LinkTo(definition);
}
exit_ = definition;
- return new(Z) Value(definition);
+ return new (Z) Value(definition);
}
@@ -707,10 +697,9 @@ void EffectGraphVisitor::AddInstruction(Instruction* instruction) {
}
-void EffectGraphVisitor::AddReturnExit(TokenPosition token_pos,
- Value* value) {
+void EffectGraphVisitor::AddReturnExit(TokenPosition token_pos, Value* value) {
ASSERT(is_open());
- ReturnInstr* return_instr = new(Z) ReturnInstr(token_pos, value);
+ ReturnInstr* return_instr = new (Z) ReturnInstr(token_pos, value);
AddInstruction(return_instr);
InlineExitCollector* exit_collector = owner()->exit_collector();
if (exit_collector != NULL) {
@@ -723,7 +712,7 @@ void EffectGraphVisitor::AddReturnExit(TokenPosition token_pos,
void EffectGraphVisitor::Goto(JoinEntryInstr* join) {
ASSERT(is_open());
if (is_empty()) {
- entry_ = new(Z) GotoInstr(join);
+ entry_ = new (Z) GotoInstr(join);
} else {
exit()->Goto(join);
}
@@ -772,8 +761,8 @@ void EffectGraphVisitor::Join(const TestGraphVisitor& test_fragment,
} else if (false_exit == NULL) {
exit_ = true_exit;
} else {
- JoinEntryInstr* join =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
+ JoinEntryInstr* join = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
true_exit->Goto(join);
false_exit->Goto(join);
exit_ = join;
@@ -803,10 +792,10 @@ void EffectGraphVisitor::TieLoop(
Append(test_preamble_fragment);
Append(test_fragment);
} else {
- JoinEntryInstr* join =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
+ JoinEntryInstr* join = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
CheckStackOverflowInstr* check =
- new(Z) CheckStackOverflowInstr(token_pos, owner()->loop_depth());
+ new (Z) CheckStackOverflowInstr(token_pos, owner()->loop_depth());
join->LinkTo(check);
if (!test_preamble_fragment.is_empty()) {
check->LinkTo(test_preamble_fragment.entry());
@@ -826,7 +815,7 @@ void EffectGraphVisitor::TieLoop(
PushArgumentInstr* EffectGraphVisitor::PushArgument(Value* value) {
owner_->add_args_pushed(1);
- PushArgumentInstr* result = new(Z) PushArgumentInstr(value);
+ PushArgumentInstr* result = new (Z) PushArgumentInstr(value);
AddInstruction(result);
return result;
}
@@ -837,15 +826,14 @@ Definition* EffectGraphVisitor::BuildStoreTemp(const LocalVariable& local,
TokenPosition token_pos) {
ASSERT(!local.is_captured());
ASSERT(!token_pos.IsClassifying());
- return new(Z) StoreLocalInstr(local, value, ST(token_pos));
+ return new (Z) StoreLocalInstr(local, value, ST(token_pos));
}
Definition* EffectGraphVisitor::BuildStoreExprTemp(Value* value,
TokenPosition token_pos) {
return BuildStoreTemp(*owner()->parsed_function().expression_temp_var(),
- value,
- token_pos);
+ value, token_pos);
}
@@ -861,26 +849,22 @@ Definition* EffectGraphVisitor::BuildStoreLocal(const LocalVariable& local,
TokenPosition token_pos) {
if (local.is_captured()) {
LocalVariable* tmp_var = EnterTempLocalScope(value);
- intptr_t delta =
- owner()->context_level() - local.owner()->context_level();
+ intptr_t delta = owner()->context_level() - local.owner()->context_level();
ASSERT(delta >= 0);
Value* context = Bind(BuildCurrentContext(token_pos));
while (delta-- > 0) {
- context = Bind(new(Z) LoadFieldInstr(
- context, Context::parent_offset(), Type::ZoneHandle(Z, Type::null()),
- token_pos));
+ context = Bind(new (Z) LoadFieldInstr(context, Context::parent_offset(),
+ Type::ZoneHandle(Z, Type::null()),
+ token_pos));
}
- Value* tmp_val = Bind(new(Z) LoadLocalInstr(*tmp_var, token_pos));
- StoreInstanceFieldInstr* store =
- new(Z) StoreInstanceFieldInstr(Context::variable_offset(local.index()),
- context,
- tmp_val,
- kEmitStoreBarrier,
- token_pos);
+ Value* tmp_val = Bind(new (Z) LoadLocalInstr(*tmp_var, token_pos));
+ StoreInstanceFieldInstr* store = new (Z)
+ StoreInstanceFieldInstr(Context::variable_offset(local.index()),
+ context, tmp_val, kEmitStoreBarrier, token_pos);
Do(store);
return ExitTempLocalScope(value);
} else {
- return new(Z) StoreLocalInstr(local, value, token_pos);
+ return new (Z) StoreLocalInstr(local, value, token_pos);
}
}
@@ -888,34 +872,30 @@ Definition* EffectGraphVisitor::BuildStoreLocal(const LocalVariable& local,
Definition* EffectGraphVisitor::BuildLoadLocal(const LocalVariable& local,
TokenPosition token_pos) {
if (local.IsConst()) {
- return new(Z) ConstantInstr(*local.ConstValue(), token_pos);
+ return new (Z) ConstantInstr(*local.ConstValue(), token_pos);
} else if (local.is_captured()) {
- intptr_t delta =
- owner()->context_level() - local.owner()->context_level();
+ intptr_t delta = owner()->context_level() - local.owner()->context_level();
ASSERT(delta >= 0);
Value* context = Bind(BuildCurrentContext(token_pos));
while (delta-- > 0) {
- context = Bind(new(Z) LoadFieldInstr(
- context, Context::parent_offset(), Type::ZoneHandle(Z, Type::null()),
- token_pos));
+ context = Bind(new (Z) LoadFieldInstr(context, Context::parent_offset(),
+ Type::ZoneHandle(Z, Type::null()),
+ token_pos));
}
- LoadFieldInstr* load = new(Z) LoadFieldInstr(
- context,
- Context::variable_offset(local.index()),
- local.type(),
- token_pos);
+ LoadFieldInstr* load =
+ new (Z) LoadFieldInstr(context, Context::variable_offset(local.index()),
+ local.type(), token_pos);
load->set_is_immutable(local.is_final());
return load;
} else {
- return new(Z) LoadLocalInstr(local, token_pos);
+ return new (Z) LoadLocalInstr(local, token_pos);
}
}
// Stores current context into the 'variable'
-void EffectGraphVisitor::BuildSaveContext(
- const LocalVariable& variable,
- TokenPosition token_pos) {
+void EffectGraphVisitor::BuildSaveContext(const LocalVariable& variable,
+ TokenPosition token_pos) {
ASSERT(token_pos.IsSynthetic() || token_pos.IsNoSource());
Value* context = Bind(BuildCurrentContext(token_pos));
Do(BuildStoreLocal(variable, context, token_pos));
@@ -923,25 +903,23 @@ void EffectGraphVisitor::BuildSaveContext(
// Loads context saved in 'context_variable' into the current context.
-void EffectGraphVisitor::BuildRestoreContext(
- const LocalVariable& variable,
- TokenPosition token_pos) {
+void EffectGraphVisitor::BuildRestoreContext(const LocalVariable& variable,
+ TokenPosition token_pos) {
Value* load_saved_context = Bind(BuildLoadLocal(variable, token_pos));
Do(BuildStoreContext(load_saved_context, token_pos));
}
-Definition* EffectGraphVisitor::BuildStoreContext(
- Value* value, TokenPosition token_pos) {
- return new(Z) StoreLocalInstr(
+Definition* EffectGraphVisitor::BuildStoreContext(Value* value,
+ TokenPosition token_pos) {
+ return new (Z) StoreLocalInstr(
*owner()->parsed_function().current_context_var(), value, token_pos);
}
Definition* EffectGraphVisitor::BuildCurrentContext(TokenPosition token_pos) {
- return new(Z) LoadLocalInstr(
- *owner()->parsed_function().current_context_var(),
- token_pos);
+ return new (Z) LoadLocalInstr(
+ *owner()->parsed_function().current_context_var(), token_pos);
}
@@ -950,9 +928,8 @@ void TestGraphVisitor::ConnectBranchesTo(
JoinEntryInstr* join) const {
ASSERT(!branches.is_empty());
for (intptr_t i = 0; i < branches.length(); i++) {
- TargetEntryInstr* target =
- new(Z) TargetEntryInstr(owner()->AllocateBlockId(),
- owner()->try_index());
+ TargetEntryInstr* target = new (Z)
+ TargetEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
*(branches[i]) = target;
target->Goto(join);
}
@@ -974,15 +951,14 @@ BlockEntryInstr* TestGraphVisitor::CreateSuccessorFor(
ASSERT(!branches.is_empty());
if (branches.length() == 1) {
- TargetEntryInstr* target =
- new(Z) TargetEntryInstr(owner()->AllocateBlockId(),
- owner()->try_index());
+ TargetEntryInstr* target = new (Z)
+ TargetEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
*(branches[0]) = target;
return target;
}
JoinEntryInstr* join =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
+ new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
ConnectBranchesTo(branches, join);
return join;
}
@@ -1001,16 +977,13 @@ BlockEntryInstr* TestGraphVisitor::CreateFalseSuccessor() const {
void TestGraphVisitor::ReturnValue(Value* value) {
Isolate* isolate = Isolate::Current();
if (isolate->type_checks() || isolate->asserts()) {
- value = Bind(new(Z) AssertBooleanInstr(condition_token_pos(), value));
- }
- Value* constant_true = Bind(new(Z) ConstantInstr(Bool::True()));
- StrictCompareInstr* comp =
- new(Z) StrictCompareInstr(condition_token_pos(),
- Token::kEQ_STRICT,
- value,
- constant_true,
- false); // No number check.
- BranchInstr* branch = new(Z) BranchInstr(comp);
+ value = Bind(new (Z) AssertBooleanInstr(condition_token_pos(), value));
+ }
+ Value* constant_true = Bind(new (Z) ConstantInstr(Bool::True()));
+ StrictCompareInstr* comp = new (Z) StrictCompareInstr(
+ condition_token_pos(), Token::kEQ_STRICT, value, constant_true,
+ false); // No number check.
+ BranchInstr* branch = new (Z) BranchInstr(comp);
AddInstruction(branch);
CloseFragment();
@@ -1023,18 +996,17 @@ void TestGraphVisitor::MergeBranchWithComparison(ComparisonInstr* comp) {
BranchInstr* branch;
if (Token::IsStrictEqualityOperator(comp->kind())) {
ASSERT(comp->IsStrictCompare());
- branch = new(Z) BranchInstr(comp);
+ branch = new (Z) BranchInstr(comp);
} else if (Token::IsEqualityOperator(comp->kind()) &&
(comp->left()->BindsToConstantNull() ||
comp->right()->BindsToConstantNull())) {
- branch = new(Z) BranchInstr(new(Z) StrictCompareInstr(
+ branch = new (Z) BranchInstr(new (Z) StrictCompareInstr(
comp->token_pos(),
(comp->kind() == Token::kEQ) ? Token::kEQ_STRICT : Token::kNE_STRICT,
- comp->left(),
- comp->right(),
+ comp->left(), comp->right(),
false)); // No number check.
} else {
- branch = new(Z) BranchInstr(comp);
+ branch = new (Z) BranchInstr(comp);
branch->set_is_checked(Isolate::Current()->type_checks());
}
AddInstruction(branch);
@@ -1046,14 +1018,11 @@ void TestGraphVisitor::MergeBranchWithComparison(ComparisonInstr* comp) {
void TestGraphVisitor::MergeBranchWithNegate(BooleanNegateInstr* neg) {
ASSERT(!Isolate::Current()->type_checks());
- Value* constant_true = Bind(new(Z) ConstantInstr(Bool::True()));
- StrictCompareInstr* comp =
- new(Z) StrictCompareInstr(condition_token_pos(),
- Token::kNE_STRICT,
- neg->value(),
- constant_true,
- false); // No number check.
- BranchInstr* branch = new(Z) BranchInstr(comp);
+ Value* constant_true = Bind(new (Z) ConstantInstr(Bool::True()));
+ StrictCompareInstr* comp = new (Z) StrictCompareInstr(
+ condition_token_pos(), Token::kNE_STRICT, neg->value(), constant_true,
+ false); // No number check.
+ BranchInstr* branch = new (Z) BranchInstr(comp);
AddInstruction(branch);
CloseFragment();
true_successor_addresses_.Add(branch->true_successor_address());
@@ -1135,11 +1104,10 @@ void EffectGraphVisitor::VisitReturnNode(ReturnNode* node) {
// No debugger check is done in native functions or for return
// statements for which there is no associated source position.
const Function& function = owner()->function();
- if (FLAG_support_debugger &&
- node->token_pos().IsDebugPause() &&
+ if (FLAG_support_debugger && node->token_pos().IsDebugPause() &&
!function.is_native()) {
- AddInstruction(new(Z) DebugStepCheckInstr(node->token_pos(),
- RawPcDescriptors::kRuntimeCall));
+ AddInstruction(new (Z) DebugStepCheckInstr(node->token_pos(),
+ RawPcDescriptors::kRuntimeCall));
}
NestedContextAdjustment context_adjustment(owner(), owner()->context_level());
@@ -1163,8 +1131,8 @@ void EffectGraphVisitor::VisitReturnNode(ReturnNode* node) {
if (Isolate::Current()->type_checks()) {
const bool is_implicit_dynamic_getter =
(!function.is_static() &&
- ((function.kind() == RawFunction::kImplicitGetter) ||
- (function.kind() == RawFunction::kImplicitStaticFinalGetter)));
+ ((function.kind() == RawFunction::kImplicitGetter) ||
+ (function.kind() == RawFunction::kImplicitStaticFinalGetter)));
// Implicit getters do not need a type check at return, unless they compute
// the initial value of a static field.
// The body of a constructor cannot modify the type of the
@@ -1173,10 +1141,9 @@ void EffectGraphVisitor::VisitReturnNode(ReturnNode* node) {
if (!is_implicit_dynamic_getter && !function.IsGenerativeConstructor()) {
const AbstractType& dst_type =
AbstractType::ZoneHandle(Z, function.result_type());
- return_value = BuildAssignableValue(node->value()->token_pos(),
- return_value,
- dst_type,
- Symbols::FunctionResult());
+ return_value =
+ BuildAssignableValue(node->value()->token_pos(), return_value,
+ dst_type, Symbols::FunctionResult());
}
}
@@ -1198,19 +1165,14 @@ void EffectGraphVisitor::VisitReturnNode(ReturnNode* node) {
node->scope()->LookupVariable(Symbols::AsyncCompleter(), false);
ASSERT(rcv_var != NULL && rcv_var->is_captured());
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
Value* rcv_value = Bind(BuildLoadLocal(*rcv_var, node->token_pos()));
arguments->Add(PushArgument(rcv_value));
Value* returned_value = Bind(BuildLoadExprTemp(node->token_pos()));
arguments->Add(PushArgument(returned_value));
- InstanceCallInstr* call = new(Z) InstanceCallInstr(
- node->token_pos(),
- Symbols::CompleterComplete(),
- Token::kILLEGAL,
- arguments,
- Object::null_array(),
- 1,
- owner()->ic_data_array());
+ InstanceCallInstr* call = new (Z) InstanceCallInstr(
+ node->token_pos(), Symbols::CompleterComplete(), Token::kILLEGAL,
+ arguments, Object::null_array(), 1, owner()->ic_data_array());
Do(call);
// Rebind the return value for the actual return call to be null.
@@ -1225,12 +1187,11 @@ void EffectGraphVisitor::VisitReturnNode(ReturnNode* node) {
AddReturnExit(node->token_pos(), return_value);
- if ((function.IsAsyncClosure() ||
- function.IsSyncGenClosure() ||
- function.IsAsyncGenClosure()) &&
+ if ((function.IsAsyncClosure() || function.IsSyncGenClosure() ||
+ function.IsAsyncGenClosure()) &&
(node->return_type() == ReturnNode::kContinuationTarget)) {
- JoinEntryInstr* const join = new(Z) JoinEntryInstr(
- owner()->AllocateBlockId(), owner()->try_index());
+ JoinEntryInstr* const join = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
owner()->await_joins()->Add(join);
exit_ = join;
}
@@ -1239,7 +1200,7 @@ void EffectGraphVisitor::VisitReturnNode(ReturnNode* node) {
// <Expression> ::= Literal { literal: Instance }
void EffectGraphVisitor::VisitLiteralNode(LiteralNode* node) {
- ReturnDefinition(new(Z) ConstantInstr(node->literal(), node->token_pos()));
+ ReturnDefinition(new (Z) ConstantInstr(node->literal(), node->token_pos()));
}
@@ -1256,13 +1217,13 @@ void ValueGraphVisitor::VisitTypeNode(TypeNode* node) {
// Type may be malbounded, but not malformed.
ASSERT(type.IsFinalized() && !type.IsMalformed());
if (type.IsInstantiated()) {
- ReturnDefinition(new(Z) ConstantInstr(type));
+ ReturnDefinition(new (Z) ConstantInstr(type));
} else {
- const Class& instantiator_class = Class::ZoneHandle(
- Z, owner()->function().Owner());
+ const Class& instantiator_class =
+ Class::ZoneHandle(Z, owner()->function().Owner());
Value* instantiator_value = BuildInstantiatorTypeArguments(
node->token_pos(), instantiator_class, NULL);
- ReturnDefinition(new(Z) InstantiateTypeInstr(
+ ReturnDefinition(new (Z) InstantiateTypeInstr(
node->token_pos(), type, instantiator_class, instantiator_value));
}
}
@@ -1303,12 +1264,8 @@ bool EffectGraphVisitor::CanSkipTypeCheck(TokenPosition token_pos,
const bool eliminated = value->Type()->IsAssignableTo(dst_type);
if (FLAG_trace_type_check_elimination) {
- FlowGraphPrinter::PrintTypeCheck(owner()->parsed_function(),
- token_pos,
- value,
- dst_type,
- dst_name,
- eliminated);
+ FlowGraphPrinter::PrintTypeCheck(owner()->parsed_function(), token_pos,
+ value, dst_type, dst_name, eliminated);
}
return eliminated;
}
@@ -1321,15 +1278,12 @@ void EffectGraphVisitor::VisitAssignableNode(AssignableNode* node) {
ValueGraphVisitor for_value(owner());
node->expr()->Visit(&for_value);
Append(for_value);
- if (CanSkipTypeCheck(node->expr()->token_pos(),
- for_value.value(),
- node->type(),
- node->dst_name())) {
+ if (CanSkipTypeCheck(node->expr()->token_pos(), for_value.value(),
+ node->type(), node->dst_name())) {
ReturnValue(for_value.value());
} else {
ReturnDefinition(BuildAssertAssignable(node->expr()->token_pos(),
- for_value.value(),
- node->type(),
+ for_value.value(), node->type(),
node->dst_name()));
}
}
@@ -1339,10 +1293,8 @@ void ValueGraphVisitor::VisitAssignableNode(AssignableNode* node) {
ValueGraphVisitor for_value(owner());
node->expr()->Visit(&for_value);
Append(for_value);
- ReturnValue(BuildAssignableValue(node->expr()->token_pos(),
- for_value.value(),
- node->type(),
- node->dst_name()));
+ ReturnValue(BuildAssignableValue(node->expr()->token_pos(), for_value.value(),
+ node->type(), node->dst_name()));
}
@@ -1362,8 +1314,8 @@ void EffectGraphVisitor::VisitBinaryOpNode(BinaryOpNode* node) {
ValueGraphVisitor for_right(owner());
node->right()->Visit(&for_right);
Value* right_value = for_right.value();
- for_right.Do(new(Z) AssertBooleanInstr(node->right()->token_pos(),
- right_value));
+ for_right.Do(
+ new (Z) AssertBooleanInstr(node->right()->token_pos(), right_value));
if (node->kind() == Token::kAND) {
Join(for_left, for_right, empty);
} else {
@@ -1392,18 +1344,14 @@ void EffectGraphVisitor::VisitBinaryOpNode(BinaryOpNode* node) {
PushArgumentInstr* push_right = PushArgument(for_right_value.value());
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
arguments->Add(push_left);
arguments->Add(push_right);
const String& name = Symbols::Token(node->kind());
const intptr_t kNumArgsChecked = 2;
- InstanceCallInstr* call = new(Z) InstanceCallInstr(node->token_pos(),
- name,
- node->kind(),
- arguments,
- Object::null_array(),
- kNumArgsChecked,
- owner()->ic_data_array());
+ InstanceCallInstr* call = new (Z) InstanceCallInstr(
+ node->token_pos(), name, node->kind(), arguments, Object::null_array(),
+ kNumArgsChecked, owner()->ic_data_array());
ReturnDefinition(call);
}
@@ -1426,29 +1374,25 @@ void ValueGraphVisitor::VisitBinaryOpNode(BinaryOpNode* node) {
Value* right_value = for_right.value();
Isolate* isolate = Isolate::Current();
if (isolate->type_checks() || isolate->asserts()) {
- right_value =
- for_right.Bind(new(Z) AssertBooleanInstr(node->right()->token_pos(),
- right_value));
+ right_value = for_right.Bind(
+ new (Z) AssertBooleanInstr(node->right()->token_pos(), right_value));
}
- Value* constant_true = for_right.Bind(new(Z) ConstantInstr(Bool::True()));
- Value* compare =
- for_right.Bind(new(Z) StrictCompareInstr(node->token_pos(),
- Token::kEQ_STRICT,
- right_value,
- constant_true,
- false)); // No number check.
+ Value* constant_true = for_right.Bind(new (Z) ConstantInstr(Bool::True()));
+ Value* compare = for_right.Bind(new (Z) StrictCompareInstr(
+ node->token_pos(), Token::kEQ_STRICT, right_value, constant_true,
+ false)); // No number check.
for_right.Do(BuildStoreExprTemp(compare, node->token_pos()));
if (node->kind() == Token::kAND) {
ValueGraphVisitor for_false(owner());
Value* constant_false =
- for_false.Bind(new(Z) ConstantInstr(Bool::False()));
+ for_false.Bind(new (Z) ConstantInstr(Bool::False()));
for_false.Do(BuildStoreExprTemp(constant_false, node->token_pos()));
Join(for_test, for_right, for_false);
} else {
ASSERT(node->kind() == Token::kOR);
ValueGraphVisitor for_true(owner());
- Value* constant_true = for_true.Bind(new(Z) ConstantInstr(Bool::True()));
+ Value* constant_true = for_true.Bind(new (Z) ConstantInstr(Bool::True()));
for_true.Do(BuildStoreExprTemp(constant_true, node->token_pos()));
Join(for_test, for_true, for_right);
}
@@ -1463,8 +1407,8 @@ void ValueGraphVisitor::VisitBinaryOpNode(BinaryOpNode* node) {
void EffectGraphVisitor::BuildTypecheckPushArguments(
TokenPosition token_pos,
PushArgumentInstr** push_instantiator_type_arguments_result) {
- const Class& instantiator_class = Class::Handle(
- Z, owner()->function().Owner());
+ const Class& instantiator_class =
+ Class::Handle(Z, owner()->function().Owner());
// Since called only when type tested against is not instantiated.
ASSERT(instantiator_class.IsGeneric());
Value* instantiator_type_arguments = NULL;
@@ -1482,14 +1426,13 @@ void EffectGraphVisitor::BuildTypecheckPushArguments(
}
-
void EffectGraphVisitor::BuildTypecheckArguments(
TokenPosition token_pos,
Value** instantiator_type_arguments_result) {
Value* instantiator = NULL;
Value* instantiator_type_arguments = NULL;
- const Class& instantiator_class = Class::Handle(
- Z, owner()->function().Owner());
+ const Class& instantiator_class =
+ Class::Handle(Z, owner()->function().Owner());
// Since called only when type tested against is not instantiated.
ASSERT(instantiator_class.IsGeneric());
instantiator = BuildInstantiator(token_pos);
@@ -1506,8 +1449,8 @@ void EffectGraphVisitor::BuildTypecheckArguments(
Value* EffectGraphVisitor::BuildNullValue(TokenPosition token_pos) {
- return Bind(new(Z) ConstantInstr(Object::ZoneHandle(Z, Object::null()),
- token_pos));
+ return Bind(
+ new (Z) ConstantInstr(Object::ZoneHandle(Z, Object::null()), token_pos));
}
@@ -1526,12 +1469,9 @@ AssertAssignableInstr* EffectGraphVisitor::BuildAssertAssignable(
}
const intptr_t deopt_id = Thread::Current()->GetNextDeoptId();
- return new(Z) AssertAssignableInstr(token_pos,
- value,
- instantiator_type_arguments,
- dst_type,
- dst_name,
- deopt_id);
+ return new (Z)
+ AssertAssignableInstr(token_pos, value, instantiator_type_arguments,
+ dst_type, dst_name, deopt_id);
}
@@ -1577,7 +1517,7 @@ void EffectGraphVisitor::BuildTypeTest(ComparisonNode* node) {
EffectGraphVisitor for_left_value(owner());
node->left()->Visit(&for_left_value);
Append(for_left_value);
- ReturnDefinition(new(Z) ConstantInstr(Bool::Get(!negate_result)));
+ ReturnDefinition(new (Z) ConstantInstr(Bool::Get(!negate_result)));
return;
}
ValueGraphVisitor for_left_value(owner());
@@ -1601,20 +1541,17 @@ void EffectGraphVisitor::BuildTypeTest(ComparisonNode* node) {
ASSERT(!method_name.IsNull());
PushArgumentInstr* push_left = PushArgument(for_left_value.value());
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
arguments->Add(push_left);
const Bool& negate = Bool::Get(node->kind() == Token::kISNOT);
- Value* negate_arg = Bind(new(Z) ConstantInstr(negate));
+ Value* negate_arg = Bind(new (Z) ConstantInstr(negate));
arguments->Add(PushArgument(negate_arg));
const intptr_t kNumArgsChecked = 1;
- InstanceCallInstr* call = new(Z) InstanceCallInstr(
- node->token_pos(),
- Library::PrivateCoreLibName(method_name),
- node->kind(),
- arguments,
+ InstanceCallInstr* call = new (Z) InstanceCallInstr(
+ node->token_pos(), Library::PrivateCoreLibName(method_name),
+ node->kind(), arguments,
Object::null_array(), // No argument names.
- kNumArgsChecked,
- owner()->ic_data_array());
+ kNumArgsChecked, owner()->ic_data_array());
ReturnDefinition(call);
return;
}
@@ -1625,21 +1562,19 @@ void EffectGraphVisitor::BuildTypeTest(ComparisonNode* node) {
if (simpleInstanceOfType(type)) {
ASSERT(!node->right()->AsTypeNode()->type().IsNull());
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
arguments->Add(push_left);
- Value* type_const = Bind(new(Z) ConstantInstr(type));
+ Value* type_const = Bind(new (Z) ConstantInstr(type));
arguments->Add(PushArgument(type_const));
const intptr_t kNumArgsChecked = 2;
- Definition* result = new(Z) InstanceCallInstr(
+ Definition* result = new (Z) InstanceCallInstr(
node->token_pos(),
- Library::PrivateCoreLibName(Symbols::_simpleInstanceOf()),
- node->kind(),
+ Library::PrivateCoreLibName(Symbols::_simpleInstanceOf()), node->kind(),
arguments,
Object::null_array(), // No argument names.
- kNumArgsChecked,
- owner()->ic_data_array());
+ kNumArgsChecked, owner()->ic_data_array());
if (negate_result) {
- result = new(Z) BooleanNegateInstr(Bind(result));
+ result = new (Z) BooleanNegateInstr(Bind(result));
}
ReturnDefinition(result);
return;
@@ -1652,24 +1587,21 @@ void EffectGraphVisitor::BuildTypeTest(ComparisonNode* node) {
BuildTypecheckPushArguments(node->token_pos(), &push_type_args);
}
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(4);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(4);
arguments->Add(push_left);
arguments->Add(push_type_args);
ASSERT(!node->right()->AsTypeNode()->type().IsNull());
- Value* type_const = Bind(new(Z) ConstantInstr(type));
+ Value* type_const = Bind(new (Z) ConstantInstr(type));
arguments->Add(PushArgument(type_const));
const Bool& negate = Bool::Get(node->kind() == Token::kISNOT);
- Value* negate_arg = Bind(new(Z) ConstantInstr(negate));
+ Value* negate_arg = Bind(new (Z) ConstantInstr(negate));
arguments->Add(PushArgument(negate_arg));
const intptr_t kNumArgsChecked = 1;
- InstanceCallInstr* call = new(Z) InstanceCallInstr(
- node->token_pos(),
- Library::PrivateCoreLibName(Symbols::_instanceOf()),
- node->kind(),
- arguments,
+ InstanceCallInstr* call = new (Z) InstanceCallInstr(
+ node->token_pos(), Library::PrivateCoreLibName(Symbols::_instanceOf()),
+ node->kind(), arguments,
Object::null_array(), // No argument names.
- kNumArgsChecked,
- owner()->ic_data_array());
+ kNumArgsChecked, owner()->ic_data_array());
ReturnDefinition(call);
}
@@ -1682,9 +1614,7 @@ void EffectGraphVisitor::BuildTypeCast(ComparisonNode* node) {
ValueGraphVisitor for_value(owner());
node->left()->Visit(&for_value);
Append(for_value);
- if (CanSkipTypeCheck(node->token_pos(),
- for_value.value(),
- type,
+ if (CanSkipTypeCheck(node->token_pos(), for_value.value(), type,
Symbols::InTypeCast())) {
ReturnValue(for_value.value());
return;
@@ -1697,20 +1627,17 @@ void EffectGraphVisitor::BuildTypeCast(ComparisonNode* node) {
BuildTypecheckPushArguments(node->token_pos(), &push_type_args);
}
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(3);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(3);
arguments->Add(push_left);
arguments->Add(push_type_args);
- Value* type_arg = Bind(new(Z) ConstantInstr(type));
+ Value* type_arg = Bind(new (Z) ConstantInstr(type));
arguments->Add(PushArgument(type_arg));
const intptr_t kNumArgsChecked = 1;
- InstanceCallInstr* call = new(Z) InstanceCallInstr(
- node->token_pos(),
- Library::PrivateCoreLibName(Symbols::_as()),
- node->kind(),
- arguments,
+ InstanceCallInstr* call = new (Z) InstanceCallInstr(
+ node->token_pos(), Library::PrivateCoreLibName(Symbols::_as()),
+ node->kind(), arguments,
Object::null_array(), // No argument names.
- kNumArgsChecked,
- owner()->ic_data_array());
+ kNumArgsChecked, owner()->ic_data_array());
ReturnDefinition(call);
}
@@ -1726,11 +1653,9 @@ StrictCompareInstr* EffectGraphVisitor::BuildStrictCompare(
ValueGraphVisitor for_right_value(owner());
right->Visit(&for_right_value);
Append(for_right_value);
- StrictCompareInstr* comp = new(Z) StrictCompareInstr(token_pos,
- kind,
- for_left_value.value(),
- for_right_value.value(),
- true); // Number check.
+ StrictCompareInstr* comp = new (Z) StrictCompareInstr(
+ token_pos, kind, for_left_value.value(), for_right_value.value(),
+ true); // Number check.
return comp;
}
@@ -1763,15 +1688,14 @@ void EffectGraphVisitor::VisitComparisonNode(ComparisonNode* node) {
((right_lit != NULL) && right_lit->literal().IsNull())) {
Token::Kind kind =
(node->kind() == Token::kEQ) ? Token::kEQ_STRICT : Token::kNE_STRICT;
- StrictCompareInstr* compare =
- BuildStrictCompare(node->left(), node->right(),
- kind, node->token_pos());
+ StrictCompareInstr* compare = BuildStrictCompare(
+ node->left(), node->right(), kind, node->token_pos());
ReturnDefinition(compare);
return;
}
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
ValueGraphVisitor for_left_value(owner());
node->left()->Visit(&for_left_value);
@@ -1786,29 +1710,26 @@ void EffectGraphVisitor::VisitComparisonNode(ComparisonNode* node) {
arguments->Add(push_right);
const intptr_t kNumArgsChecked = 2;
- Definition* result = new(Z) InstanceCallInstr(
- node->token_pos(),
- Symbols::EqualOperator(),
- Token::kEQ, // Result is negated later for kNE.
- arguments,
- Object::null_array(),
- kNumArgsChecked,
- owner()->ic_data_array());
+ Definition* result = new (Z)
+ InstanceCallInstr(node->token_pos(), Symbols::EqualOperator(),
+ Token::kEQ, // Result is negated later for kNE.
+ arguments, Object::null_array(), kNumArgsChecked,
+ owner()->ic_data_array());
if (node->kind() == Token::kNE) {
Isolate* isolate = Isolate::Current();
if (isolate->type_checks() || isolate->asserts()) {
Value* value = Bind(result);
- result = new(Z) AssertBooleanInstr(node->token_pos(), value);
+ result = new (Z) AssertBooleanInstr(node->token_pos(), value);
}
Value* value = Bind(result);
- result = new(Z) BooleanNegateInstr(value);
+ result = new (Z) BooleanNegateInstr(value);
}
ReturnDefinition(result);
return;
}
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
ValueGraphVisitor for_left_value(owner());
node->left()->Visit(&for_left_value);
@@ -1823,14 +1744,9 @@ void EffectGraphVisitor::VisitComparisonNode(ComparisonNode* node) {
arguments->Add(push_right);
ASSERT(Token::IsRelationalOperator(node->kind()));
- InstanceCallInstr* comp = new(Z) InstanceCallInstr(
- node->token_pos(),
- Symbols::Token(node->kind()),
- node->kind(),
- arguments,
- Object::null_array(),
- 2,
- owner()->ic_data_array());
+ InstanceCallInstr* comp = new (Z) InstanceCallInstr(
+ node->token_pos(), Symbols::Token(node->kind()), node->kind(), arguments,
+ Object::null_array(), 2, owner()->ic_data_array());
ReturnDefinition(comp);
}
@@ -1845,9 +1761,9 @@ void EffectGraphVisitor::VisitUnaryOpNode(UnaryOpNode* node) {
Isolate* isolate = Isolate::Current();
if (isolate->type_checks() || isolate->asserts()) {
value =
- Bind(new(Z) AssertBooleanInstr(node->operand()->token_pos(), value));
+ Bind(new (Z) AssertBooleanInstr(node->operand()->token_pos(), value));
}
- BooleanNegateInstr* negate = new(Z) BooleanNegateInstr(value);
+ BooleanNegateInstr* negate = new (Z) BooleanNegateInstr(value);
ReturnDefinition(negate);
return;
}
@@ -1857,16 +1773,11 @@ void EffectGraphVisitor::VisitUnaryOpNode(UnaryOpNode* node) {
Append(for_value);
PushArgumentInstr* push_value = PushArgument(for_value.value());
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(1);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
arguments->Add(push_value);
- InstanceCallInstr* call = new(Z) InstanceCallInstr(
- node->token_pos(),
- Symbols::Token(node->kind()),
- node->kind(),
- arguments,
- Object::null_array(),
- 1,
- owner()->ic_data_array());
+ InstanceCallInstr* call = new (Z) InstanceCallInstr(
+ node->token_pos(), Symbols::Token(node->kind()), node->kind(), arguments,
+ Object::null_array(), 1, owner()->ic_data_array());
ReturnDefinition(call);
}
@@ -1892,14 +1803,14 @@ void ValueGraphVisitor::VisitConditionalExprNode(ConditionalExprNode* node) {
ValueGraphVisitor for_true(owner());
node->true_expr()->Visit(&for_true);
ASSERT(for_true.is_open());
- for_true.Do(BuildStoreExprTemp(for_true.value(),
- node->true_expr()->token_pos()));
+ for_true.Do(
+ BuildStoreExprTemp(for_true.value(), node->true_expr()->token_pos()));
ValueGraphVisitor for_false(owner());
node->false_expr()->Visit(&for_false);
ASSERT(for_false.is_open());
- for_false.Do(BuildStoreExprTemp(for_false.value(),
- node->false_expr()->token_pos()));
+ for_false.Do(
+ BuildStoreExprTemp(for_false.value(), node->false_expr()->token_pos()));
Join(for_test, for_true, for_false);
ReturnDefinition(BuildLoadExprTemp(node->token_pos()));
@@ -1964,8 +1875,8 @@ void EffectGraphVisitor::VisitCaseNode(CaseNode* node) {
// Compute the start of the statements fragment.
JoinEntryInstr* statement_start = NULL;
if (node->label() == NULL) {
- statement_start = new(Z) JoinEntryInstr(owner()->AllocateBlockId(),
- owner()->try_index());
+ statement_start = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
} else {
// The case nodes are nested inside a SequenceNode that is the body of a
// SwitchNode. The SwitchNode on the nesting stack contains the
@@ -2016,8 +1927,8 @@ void EffectGraphVisitor::VisitCaseNode(CaseNode* node) {
exit_instruction = statement_exit;
} else {
if (statement_exit != NULL) {
- JoinEntryInstr* join = new(Z) JoinEntryInstr(owner()->AllocateBlockId(),
- owner()->try_index());
+ JoinEntryInstr* join = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
statement_exit->Goto(join);
next_target->Goto(join);
exit_instruction = join;
@@ -2100,19 +2011,18 @@ void EffectGraphVisitor::VisitDoWhileNode(DoWhileNode* node) {
// Tie do-while loop (test is after the body).
JoinEntryInstr* body_entry_join =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(),
- owner()->try_index());
+ new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
Goto(body_entry_join);
Instruction* body_exit = AppendFragment(body_entry_join, for_body);
JoinEntryInstr* join = nested_loop.continue_target();
if ((body_exit != NULL) || (join != NULL)) {
if (join == NULL) {
- join = new(Z) JoinEntryInstr(owner()->AllocateBlockId(),
- owner()->try_index());
+ join = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
}
- CheckStackOverflowInstr* check = new(Z) CheckStackOverflowInstr(
- node->token_pos(), owner()->loop_depth());
+ CheckStackOverflowInstr* check = new (Z)
+ CheckStackOverflowInstr(node->token_pos(), owner()->loop_depth());
join->LinkTo(check);
check->LinkTo(for_test.entry());
if (body_exit != NULL) {
@@ -2160,8 +2070,8 @@ void EffectGraphVisitor::VisitForNode(ForNode* node) {
// Join the loop body and increment and then tie the loop.
JoinEntryInstr* continue_join = nested_loop.continue_target();
if ((continue_join != NULL) || for_body.is_open()) {
- JoinEntryInstr* loop_entry =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
+ JoinEntryInstr* loop_entry = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
if (continue_join != NULL) {
if (for_body.is_open()) for_body.Goto(continue_join);
Instruction* current = AppendFragment(continue_join, for_increment);
@@ -2177,9 +2087,8 @@ void EffectGraphVisitor::VisitForNode(ForNode* node) {
// check must match the position of the increment expression, so that
// the context level (if any) matches the that of the increment
// expression.
- AddInstruction(
- new(Z) CheckStackOverflowInstr(node->increment()->token_pos(),
- owner()->loop_depth()));
+ AddInstruction(new (Z) CheckStackOverflowInstr(
+ node->increment()->token_pos(), owner()->loop_depth()));
}
if (node->condition() == NULL) {
@@ -2230,8 +2139,8 @@ void EffectGraphVisitor::VisitJumpNode(JumpNode* node) {
NestedStatement* current = owner()->nesting_stack();
while (current != NULL) {
jump_target = (node->kind() == Token::kBREAK)
- ? current->BreakTargetFor(node->label())
- : current->ContinueTargetFor(node->label());
+ ? current->BreakTargetFor(node->label())
+ : current->ContinueTargetFor(node->label());
if (jump_target != NULL) break;
current = current->outer();
}
@@ -2258,10 +2167,10 @@ void EffectGraphVisitor::VisitAwaitMarkerNode(AwaitMarkerNode* node) {
ASSERT(node->token_pos().IsSynthetic() || node->token_pos().IsNoSource());
ASSERT(node->async_scope() != NULL);
ASSERT(node->await_scope() != NULL);
- LocalVariable* jump_var = node->async_scope()->LookupVariable(
- Symbols::AwaitJumpVar(), false);
- LocalVariable* ctx_var = node->async_scope()->LookupVariable(
- Symbols::AwaitContextVar(), false);
+ LocalVariable* jump_var =
+ node->async_scope()->LookupVariable(Symbols::AwaitJumpVar(), false);
+ LocalVariable* ctx_var =
+ node->async_scope()->LookupVariable(Symbols::AwaitContextVar(), false);
ASSERT((jump_var != NULL) && jump_var->is_captured());
ASSERT((ctx_var != NULL) && ctx_var->is_captured());
const intptr_t jump_count = owner()->next_await_counter();
@@ -2270,7 +2179,7 @@ void EffectGraphVisitor::VisitAwaitMarkerNode(AwaitMarkerNode* node) {
// state.
ASSERT(jump_count == owner()->await_joins()->length());
// Store the counter in :await_jump_var.
- Value* jump_val = Bind(new(Z) ConstantInstr(
+ Value* jump_val = Bind(new (Z) ConstantInstr(
Smi::ZoneHandle(Z, Smi::New(jump_count)), node->token_pos()));
Do(BuildStoreLocal(*jump_var, jump_val, node->token_pos()));
// Save the current context for resuming.
@@ -2279,11 +2188,9 @@ void EffectGraphVisitor::VisitAwaitMarkerNode(AwaitMarkerNode* node) {
intptr_t EffectGraphVisitor::GetCurrentTempLocalIndex() const {
- return kFirstLocalSlotFromFp
- - owner()->num_stack_locals()
- - owner()->num_copied_params()
- - owner()->args_pushed()
- - owner()->temp_count() + 1;
+ return kFirstLocalSlotFromFp - owner()->num_stack_locals() -
+ owner()->num_copied_params() - owner()->args_pushed() -
+ owner()->temp_count() + 1;
}
@@ -2292,18 +2199,17 @@ LocalVariable* EffectGraphVisitor::EnterTempLocalScope(Value* value) {
intptr_t index = GetCurrentTempLocalIndex();
char name[64];
OS::SNPrint(name, 64, ":tmp_local%" Pd, index);
- LocalVariable* var =
- new(Z) LocalVariable(TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- String::ZoneHandle(Z, Symbols::New(T, name)),
- *value->Type()->ToAbstractType());
+ LocalVariable* var =
+ new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ String::ZoneHandle(Z, Symbols::New(T, name)),
+ *value->Type()->ToAbstractType());
var->set_index(index);
return var;
}
Definition* EffectGraphVisitor::ExitTempLocalScope(Value* value) {
- return new(Z) DropTempsInstr(0, value);
+ return new (Z) DropTempsInstr(0, value);
}
@@ -2333,7 +2239,7 @@ void EffectGraphVisitor::VisitLetNode(LetNode* node) {
intptr_t num_temps = node->num_temps();
if (num_temps > 0) {
owner()->DeallocateTemps(num_temps);
- Do(new(Z) DropTempsInstr(num_temps, NULL));
+ Do(new (Z) DropTempsInstr(num_temps, NULL));
}
}
@@ -2356,7 +2262,7 @@ void ValueGraphVisitor::VisitLetNode(LetNode* node) {
intptr_t num_temps = node->num_temps();
if (num_temps > 0) {
owner()->DeallocateTemps(num_temps);
- ReturnDefinition(new(Z) DropTempsInstr(num_temps, result_value));
+ ReturnDefinition(new (Z) DropTempsInstr(num_temps, result_value));
} else {
ReturnValue(result_value);
}
@@ -2366,35 +2272,33 @@ void ValueGraphVisitor::VisitLetNode(LetNode* node) {
void EffectGraphVisitor::VisitArrayNode(ArrayNode* node) {
const TypeArguments& type_args =
TypeArguments::ZoneHandle(Z, node->type().arguments());
- Value* element_type = BuildInstantiatedTypeArguments(node->token_pos(),
- type_args);
+ Value* element_type =
+ BuildInstantiatedTypeArguments(node->token_pos(), type_args);
Value* num_elements =
- Bind(new(Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(node->length()))));
- CreateArrayInstr* create = new(Z) CreateArrayInstr(node->token_pos(),
- element_type,
- num_elements);
+ Bind(new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(node->length()))));
+ CreateArrayInstr* create =
+ new (Z) CreateArrayInstr(node->token_pos(), element_type, num_elements);
Value* array_val = Bind(create);
- { LocalVariable* tmp_var = EnterTempLocalScope(array_val);
+ {
+ LocalVariable* tmp_var = EnterTempLocalScope(array_val);
const intptr_t class_id = kArrayCid;
const intptr_t deopt_id = Thread::kNoDeoptId;
for (int i = 0; i < node->length(); ++i) {
- Value* array = Bind(new(Z) LoadLocalInstr(*tmp_var, node->token_pos()));
- Value* index =
- Bind(new(Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(i)),
- node->token_pos()));
+ Value* array = Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
+ Value* index = Bind(new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(i)),
+ node->token_pos()));
ValueGraphVisitor for_value(owner());
node->ElementAt(i)->Visit(&for_value);
Append(for_value);
// No store barrier needed for constants.
const StoreBarrierType emit_store_barrier =
- for_value.value()->BindsToConstant()
- ? kNoStoreBarrier
- : kEmitStoreBarrier;
+ for_value.value()->BindsToConstant() ? kNoStoreBarrier
+ : kEmitStoreBarrier;
const intptr_t index_scale = Instance::ElementSizeFor(class_id);
- StoreIndexedInstr* store = new(Z) StoreIndexedInstr(
- array, index, for_value.value(), emit_store_barrier,
- index_scale, class_id, kAlignedAccess, deopt_id, node->token_pos());
+ StoreIndexedInstr* store = new (Z) StoreIndexedInstr(
+ array, index, for_value.value(), emit_store_barrier, index_scale,
+ class_id, kAlignedAccess, deopt_id, node->token_pos());
Do(store);
}
ReturnDefinition(ExitTempLocalScope(array_val));
@@ -2408,7 +2312,7 @@ void EffectGraphVisitor::VisitStringInterpolateNode(
ArrayNode* arguments = node->value();
if (arguments->length() == 1) {
ZoneGrowableArray<PushArgumentInstr*>* values =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(1);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
arguments->ElementAt(0)->Visit(&for_argument);
Append(for_argument);
PushArgumentInstr* push_arg = PushArgument(for_argument.value());
@@ -2419,25 +2323,19 @@ void EffectGraphVisitor::VisitStringInterpolateNode(
Class::Handle(Library::LookupCoreClass(Symbols::StringBase()));
ASSERT(!cls.IsNull());
const Function& function = Function::ZoneHandle(
- Z,
- Resolver::ResolveStatic(
- cls,
- Library::PrivateCoreLibName(Symbols::InterpolateSingle()),
- kNumberOfArguments,
- kNoArgumentNames));
+ Z, Resolver::ResolveStatic(
+ cls, Library::PrivateCoreLibName(Symbols::InterpolateSingle()),
+ kNumberOfArguments, kNoArgumentNames));
StaticCallInstr* call =
- new(Z) StaticCallInstr(node->token_pos(),
- function,
- kNoArgumentNames,
- values,
- owner()->ic_data_array());
+ new (Z) StaticCallInstr(node->token_pos(), function, kNoArgumentNames,
+ values, owner()->ic_data_array());
ReturnDefinition(call);
return;
}
arguments->Visit(&for_argument);
Append(for_argument);
StringInterpolateInstr* instr =
- new(Z) StringInterpolateInstr(for_argument.value(), node->token_pos());
+ new (Z) StringInterpolateInstr(for_argument.value(), node->token_pos());
ReturnDefinition(instr);
}
@@ -2447,7 +2345,7 @@ void EffectGraphVisitor::VisitClosureNode(ClosureNode* node) {
if (function.IsImplicitStaticClosureFunction()) {
const Instance& closure =
Instance::ZoneHandle(Z, function.ImplicitStaticClosure());
- ReturnDefinition(new(Z) ConstantInstr(closure));
+ ReturnDefinition(new (Z) ConstantInstr(closure));
return;
}
@@ -2471,8 +2369,8 @@ void EffectGraphVisitor::VisitClosureNode(ClosureNode* node) {
// same closure, do not add a second one. We compare token position,
// and parent function to detect duplicates.
const Function& parent = Function::Handle(function.parent_function());
- const Function& found_func = Function::Handle(Z,
- isolate()->LookupClosureFunction(parent, function.token_pos()));
+ const Function& found_func = Function::Handle(
+ Z, isolate()->LookupClosureFunction(parent, function.token_pos()));
if (found_func.IsNull()) {
isolate()->AddClosureFunction(function);
}
@@ -2484,84 +2382,73 @@ void EffectGraphVisitor::VisitClosureNode(ClosureNode* node) {
const Class& closure_class =
Class::ZoneHandle(Z, isolate()->object_store()->closure_class());
ZoneGrowableArray<PushArgumentInstr*>* no_arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(0);
- AllocateObjectInstr* alloc = new(Z) AllocateObjectInstr(node->token_pos(),
- closure_class,
- no_arguments);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(0);
+ AllocateObjectInstr* alloc = new (Z)
+ AllocateObjectInstr(node->token_pos(), closure_class, no_arguments);
alloc->set_closure_function(function);
Value* closure_val = Bind(alloc);
- { LocalVariable* closure_tmp_var = EnterTempLocalScope(closure_val);
+ {
+ LocalVariable* closure_tmp_var = EnterTempLocalScope(closure_val);
// Store type arguments if scope class is generic.
const Type& function_type = Type::ZoneHandle(Z, function.SignatureType());
const Class& scope_cls = Class::ZoneHandle(Z, function_type.type_class());
if (scope_cls.IsGeneric()) {
ASSERT(function.Owner() == scope_cls.raw());
- Value* closure_tmp_val = Bind(new(Z) LoadLocalInstr(*closure_tmp_var,
- node->token_pos()));
- const Class& instantiator_class = Class::Handle(
- Z, owner()->function().Owner());
- Value* type_arguments = BuildInstantiatorTypeArguments(node->token_pos(),
- instantiator_class,
- NULL);
- Do(new(Z) StoreInstanceFieldInstr(Closure::type_arguments_offset(),
- closure_tmp_val,
- type_arguments,
- kEmitStoreBarrier,
- node->token_pos()));
+ Value* closure_tmp_val =
+ Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
+ const Class& instantiator_class =
+ Class::Handle(Z, owner()->function().Owner());
+ Value* type_arguments = BuildInstantiatorTypeArguments(
+ node->token_pos(), instantiator_class, NULL);
+ Do(new (Z) StoreInstanceFieldInstr(Closure::type_arguments_offset(),
+ closure_tmp_val, type_arguments,
+ kEmitStoreBarrier, node->token_pos()));
}
// Store function.
Value* closure_tmp_val =
- Bind(new(Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
+ Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
Value* func_val =
- Bind(new(Z) ConstantInstr(Function::ZoneHandle(Z, function.raw())));
- Do(new(Z) StoreInstanceFieldInstr(Closure::function_offset(),
- closure_tmp_val,
- func_val,
- kEmitStoreBarrier,
- node->token_pos()));
+ Bind(new (Z) ConstantInstr(Function::ZoneHandle(Z, function.raw())));
+ Do(new (Z) StoreInstanceFieldInstr(Closure::function_offset(),
+ closure_tmp_val, func_val,
+ kEmitStoreBarrier, node->token_pos()));
if (is_implicit) {
// Create new context containing the receiver.
const intptr_t kNumContextVariables = 1; // The receiver.
- Value* allocated_context =
- Bind(new(Z) AllocateContextInstr(node->token_pos(),
- kNumContextVariables));
- { LocalVariable* context_tmp_var = EnterTempLocalScope(allocated_context);
+ Value* allocated_context = Bind(new (Z) AllocateContextInstr(
+ node->token_pos(), kNumContextVariables));
+ {
+ LocalVariable* context_tmp_var = EnterTempLocalScope(allocated_context);
// Store receiver in context.
Value* context_tmp_val =
- Bind(new(Z) LoadLocalInstr(*context_tmp_var, node->token_pos()));
+ Bind(new (Z) LoadLocalInstr(*context_tmp_var, node->token_pos()));
ValueGraphVisitor for_receiver(owner());
node->receiver()->Visit(&for_receiver);
Append(for_receiver);
Value* receiver = for_receiver.value();
- Do(new(Z) StoreInstanceFieldInstr(Context::variable_offset(0),
- context_tmp_val,
- receiver,
- kEmitStoreBarrier,
- node->token_pos()));
+ Do(new (Z) StoreInstanceFieldInstr(
+ Context::variable_offset(0), context_tmp_val, receiver,
+ kEmitStoreBarrier, node->token_pos()));
// Store new context in closure.
closure_tmp_val =
- Bind(new(Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
+ Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
context_tmp_val =
- Bind(new(Z) LoadLocalInstr(*context_tmp_var, node->token_pos()));
- Do(new(Z) StoreInstanceFieldInstr(Closure::context_offset(),
- closure_tmp_val,
- context_tmp_val,
- kEmitStoreBarrier,
- node->token_pos()));
+ Bind(new (Z) LoadLocalInstr(*context_tmp_var, node->token_pos()));
+ Do(new (Z) StoreInstanceFieldInstr(
+ Closure::context_offset(), closure_tmp_val, context_tmp_val,
+ kEmitStoreBarrier, node->token_pos()));
Do(ExitTempLocalScope(allocated_context));
}
} else {
// Store current context in closure.
- closure_tmp_val = Bind(
- new(Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
+ closure_tmp_val =
+ Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
Value* context = Bind(BuildCurrentContext(node->token_pos()));
- Do(new(Z) StoreInstanceFieldInstr(Closure::context_offset(),
- closure_tmp_val,
- context,
- kEmitStoreBarrier,
- node->token_pos()));
+ Do(new (Z) StoreInstanceFieldInstr(Closure::context_offset(),
+ closure_tmp_val, context,
+ kEmitStoreBarrier, node->token_pos()));
}
ReturnDefinition(ExitTempLocalScope(closure_val));
}
@@ -2584,15 +2471,12 @@ void EffectGraphVisitor::BuildPushArguments(
void EffectGraphVisitor::BuildInstanceCallConditional(InstanceCallNode* node) {
const TokenPosition token_pos = node->token_pos();
LocalVariable* temp_var = owner()->parsed_function().expression_temp_var();
- LoadLocalNode* load_temp = new(Z) LoadLocalNode(token_pos, temp_var);
+ LoadLocalNode* load_temp = new (Z) LoadLocalNode(token_pos, temp_var);
LiteralNode* null_constant =
- new(Z) LiteralNode(ST(token_pos), Object::null_instance());
- ComparisonNode* check_is_null =
- new(Z) ComparisonNode(ST(token_pos),
- Token::kEQ,
- load_temp,
- null_constant);
+ new (Z) LiteralNode(ST(token_pos), Object::null_instance());
+ ComparisonNode* check_is_null = new (Z)
+ ComparisonNode(ST(token_pos), Token::kEQ, load_temp, null_constant);
TestGraphVisitor for_test(owner(), ST(token_pos));
check_is_null->Visit(&for_test);
@@ -2600,16 +2484,13 @@ void EffectGraphVisitor::BuildInstanceCallConditional(InstanceCallNode* node) {
EffectGraphVisitor for_false(owner());
StoreLocalNode* store_null =
- new(Z) StoreLocalNode(ST(token_pos), temp_var, null_constant);
+ new (Z) StoreLocalNode(ST(token_pos), temp_var, null_constant);
store_null->Visit(&for_true);
- InstanceCallNode* call =
- new(Z) InstanceCallNode(token_pos,
- load_temp,
- node->function_name(),
- node->arguments());
+ InstanceCallNode* call = new (Z) InstanceCallNode(
+ token_pos, load_temp, node->function_name(), node->arguments());
StoreLocalNode* store_result =
- new(Z) StoreLocalNode(ST(token_pos), temp_var, call);
+ new (Z) StoreLocalNode(ST(token_pos), temp_var, call);
store_result->Visit(&for_false);
Join(for_test, for_true, for_false);
@@ -2639,20 +2520,14 @@ void EffectGraphVisitor::VisitInstanceCallNode(InstanceCallNode* node) {
BuildInstanceCallConditional(node);
} else {
PushArgumentInstr* push_receiver = PushArgument(for_receiver.value());
- ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(
- node->arguments()->length() + 1);
+ ZoneGrowableArray<PushArgumentInstr*>* arguments = new (Z)
+ ZoneGrowableArray<PushArgumentInstr*>(node->arguments()->length() + 1);
arguments->Add(push_receiver);
BuildPushArguments(*node->arguments(), arguments);
- InstanceCallInstr* call = new(Z) InstanceCallInstr(
- node->token_pos(),
- node->function_name(),
- Token::kILLEGAL,
- arguments,
- node->arguments()->names(),
- 1,
- owner()->ic_data_array());
+ InstanceCallInstr* call = new (Z) InstanceCallInstr(
+ node->token_pos(), node->function_name(), Token::kILLEGAL, arguments,
+ node->arguments()->names(), 1, owner()->ic_data_array());
ReturnDefinition(call);
}
}
@@ -2661,15 +2536,12 @@ void EffectGraphVisitor::VisitInstanceCallNode(InstanceCallNode* node) {
// <Expression> ::= StaticCall { function: Function
// arguments: <ArgumentList> }
void EffectGraphVisitor::VisitStaticCallNode(StaticCallNode* node) {
- ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(node->arguments()->length());
+ ZoneGrowableArray<PushArgumentInstr*>* arguments = new (Z)
+ ZoneGrowableArray<PushArgumentInstr*>(node->arguments()->length());
BuildPushArguments(*node->arguments(), arguments);
- StaticCallInstr* call =
- new(Z) StaticCallInstr(node->token_pos(),
- node->function(),
- node->arguments()->names(),
- arguments,
- owner()->ic_data_array());
+ StaticCallInstr* call = new (Z) StaticCallInstr(
+ node->token_pos(), node->function(), node->arguments()->names(),
+ arguments, owner()->ic_data_array());
if (node->function().recognized_kind() != MethodRecognizer::kUnknown) {
call->set_result_cid(MethodRecognizer::ResultCid(node->function()));
}
@@ -2677,8 +2549,8 @@ void EffectGraphVisitor::VisitStaticCallNode(StaticCallNode* node) {
}
-void EffectGraphVisitor::BuildClosureCall(
- ClosureCallNode* node, bool result_needed) {
+void EffectGraphVisitor::BuildClosureCall(ClosureCallNode* node,
+ bool result_needed) {
ValueGraphVisitor for_closure(owner());
node->closure()->Visit(&for_closure);
Append(for_closure);
@@ -2686,27 +2558,26 @@ void EffectGraphVisitor::BuildClosureCall(
Value* closure_value = for_closure.value();
LocalVariable* tmp_var = EnterTempLocalScope(closure_value);
- ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(node->arguments()->length());
- Value* closure_val = Bind(new(Z) LoadLocalInstr(*tmp_var, node->token_pos()));
+ ZoneGrowableArray<PushArgumentInstr*>* arguments = new (Z)
+ ZoneGrowableArray<PushArgumentInstr*>(node->arguments()->length());
+ Value* closure_val =
+ Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
PushArgumentInstr* push_closure = PushArgument(closure_val);
arguments->Add(push_closure);
BuildPushArguments(*node->arguments(), arguments);
- closure_val = Bind(new(Z) LoadLocalInstr(*tmp_var, node->token_pos()));
- LoadFieldInstr* function_load = new(Z) LoadFieldInstr(
- closure_val,
- Closure::function_offset(),
- AbstractType::ZoneHandle(Z, AbstractType::null()),
- node->token_pos());
+ closure_val = Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
+ LoadFieldInstr* function_load = new (Z) LoadFieldInstr(
+ closure_val, Closure::function_offset(),
+ AbstractType::ZoneHandle(Z, AbstractType::null()), node->token_pos());
function_load->set_is_immutable(true);
Value* function_val = Bind(function_load);
Definition* closure_call =
- new(Z) ClosureCallInstr(function_val, node, arguments);
+ new (Z) ClosureCallInstr(function_val, node, arguments);
if (result_needed) {
Value* result = Bind(closure_call);
- Do(new(Z) StoreLocalInstr(*tmp_var, result, ST(node->token_pos())));
+ Do(new (Z) StoreLocalInstr(*tmp_var, result, ST(node->token_pos())));
} else {
Do(closure_call);
}
@@ -2725,15 +2596,15 @@ void ValueGraphVisitor::VisitClosureCallNode(ClosureCallNode* node) {
void EffectGraphVisitor::VisitInitStaticFieldNode(InitStaticFieldNode* node) {
- Value* field = Bind(new(Z) ConstantInstr(
- Field::ZoneHandle(Z, node->field().Original())));
- AddInstruction(new(Z) InitStaticFieldInstr(field, node->field()));
+ Value* field = Bind(
+ new (Z) ConstantInstr(Field::ZoneHandle(Z, node->field().Original())));
+ AddInstruction(new (Z) InitStaticFieldInstr(field, node->field()));
}
void EffectGraphVisitor::VisitCloneContextNode(CloneContextNode* node) {
Value* context = Bind(BuildCurrentContext(node->token_pos()));
- Value* clone = Bind(new(Z) CloneContextInstr(node->token_pos(), context));
+ Value* clone = Bind(new (Z) CloneContextInstr(node->token_pos(), context));
Do(BuildStoreContext(clone, node->token_pos()));
}
@@ -2742,18 +2613,16 @@ Value* EffectGraphVisitor::BuildObjectAllocation(ConstructorCallNode* node) {
const Class& cls = Class::ZoneHandle(Z, node->constructor().Owner());
const bool cls_is_parameterized = cls.NumTypeArguments() > 0;
- ZoneGrowableArray<PushArgumentInstr*>* allocate_arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(
- cls_is_parameterized ? 1 : 0);
+ ZoneGrowableArray<PushArgumentInstr*>* allocate_arguments = new (Z)
+ ZoneGrowableArray<PushArgumentInstr*>(cls_is_parameterized ? 1 : 0);
if (cls_is_parameterized) {
Value* type_args = BuildInstantiatedTypeArguments(node->token_pos(),
node->type_arguments());
allocate_arguments->Add(PushArgument(type_args));
}
- Definition* allocation = new(Z) AllocateObjectInstr(
- node->token_pos(),
- Class::ZoneHandle(Z, node->constructor().Owner()),
+ Definition* allocation = new (Z) AllocateObjectInstr(
+ node->token_pos(), Class::ZoneHandle(Z, node->constructor().Owner()),
allocate_arguments);
return Bind(allocation);
@@ -2763,17 +2632,14 @@ Value* EffectGraphVisitor::BuildObjectAllocation(ConstructorCallNode* node) {
void EffectGraphVisitor::BuildConstructorCall(
ConstructorCallNode* node,
PushArgumentInstr* push_alloc_value) {
-
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
arguments->Add(push_alloc_value);
BuildPushArguments(*node->arguments(), arguments);
- Do(new(Z) StaticCallInstr(node->token_pos(),
- node->constructor(),
- node->arguments()->names(),
- arguments,
- owner()->ic_data_array()));
+ Do(new (Z) StaticCallInstr(node->token_pos(), node->constructor(),
+ node->arguments()->names(), arguments,
+ owner()->ic_data_array()));
}
@@ -2797,26 +2663,23 @@ static intptr_t GetResultCidOfListFactory(ConstructorCallNode* node) {
}
return FactoryRecognizer::ResultCid(function);
}
- return kDynamicCid; // Not a known list constructor.
+ return kDynamicCid; // Not a known list constructor.
}
void EffectGraphVisitor::VisitConstructorCallNode(ConstructorCallNode* node) {
if (node->constructor().IsFactory()) {
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>();
- PushArgumentInstr* push_type_arguments = PushArgument(
- BuildInstantiatedTypeArguments(node->token_pos(),
- node->type_arguments()));
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>();
+ PushArgumentInstr* push_type_arguments =
+ PushArgument(BuildInstantiatedTypeArguments(node->token_pos(),
+ node->type_arguments()));
arguments->Add(push_type_arguments);
ASSERT(arguments->length() == 1);
BuildPushArguments(*node->arguments(), arguments);
- StaticCallInstr* call =
- new(Z) StaticCallInstr(node->token_pos(),
- node->constructor(),
- node->arguments()->names(),
- arguments,
- owner()->ic_data_array());
+ StaticCallInstr* call = new (Z) StaticCallInstr(
+ node->token_pos(), node->constructor(), node->arguments()->names(),
+ arguments, owner()->ic_data_array());
const intptr_t result_cid = GetResultCidOfListFactory(node);
if (result_cid != kDynamicCid) {
call->set_result_cid(result_cid);
@@ -2871,15 +2734,14 @@ Value* EffectGraphVisitor::BuildInstantiatorTypeArguments(
TypeArguments& type_arguments =
TypeArguments::ZoneHandle(Z, TypeArguments::null());
// Type is temporary. Only its type arguments are preserved.
- Type& type = Type::Handle(
- Z,
- Type::New(instantiator_class, type_arguments, token_pos, Heap::kNew));
- type ^= ClassFinalizer::FinalizeType(
- instantiator_class, type, ClassFinalizer::kFinalize);
+ Type& type = Type::Handle(Z, Type::New(instantiator_class, type_arguments,
+ token_pos, Heap::kNew));
+ type ^= ClassFinalizer::FinalizeType(instantiator_class, type,
+ ClassFinalizer::kFinalize);
ASSERT(!type.IsMalformedOrMalbounded());
type_arguments = type.arguments();
type_arguments = type_arguments.Canonicalize();
- return Bind(new(Z) ConstantInstr(type_arguments));
+ return Bind(new (Z) ConstantInstr(type_arguments));
}
Function& outer_function = Function::Handle(Z, owner()->function().raw());
while (outer_function.IsLocalFunction()) {
@@ -2888,8 +2750,7 @@ Value* EffectGraphVisitor::BuildInstantiatorTypeArguments(
if (outer_function.IsFactory()) {
// No instantiator for factories.
ASSERT(instantiator == NULL);
- LocalVariable* instantiator_var =
- owner()->parsed_function().instantiator();
+ LocalVariable* instantiator_var = owner()->parsed_function().instantiator();
ASSERT(instantiator_var != NULL);
return Bind(BuildLoadLocal(*instantiator_var, token_pos));
}
@@ -2904,9 +2765,8 @@ Value* EffectGraphVisitor::BuildInstantiatorTypeArguments(
instantiator_class.type_arguments_field_offset();
ASSERT(type_arguments_field_offset != Class::kNoTypeArguments);
- return Bind(new(Z) LoadFieldInstr(
- instantiator,
- type_arguments_field_offset,
+ return Bind(new (Z) LoadFieldInstr(
+ instantiator, type_arguments_field_offset,
Type::ZoneHandle(Z, Type::null()), // Not an instance, no type.
token_pos));
}
@@ -2916,11 +2776,11 @@ Value* EffectGraphVisitor::BuildInstantiatedTypeArguments(
TokenPosition token_pos,
const TypeArguments& type_arguments) {
if (type_arguments.IsNull() || type_arguments.IsInstantiated()) {
- return Bind(new(Z) ConstantInstr(type_arguments));
+ return Bind(new (Z) ConstantInstr(type_arguments));
}
// The type arguments are uninstantiated.
- const Class& instantiator_class = Class::ZoneHandle(
- Z, owner()->function().Owner());
+ const Class& instantiator_class =
+ Class::ZoneHandle(Z, owner()->function().Owner());
Value* instantiator_value =
BuildInstantiatorTypeArguments(token_pos, instantiator_class, NULL);
const bool use_instantiator_type_args =
@@ -2929,10 +2789,8 @@ Value* EffectGraphVisitor::BuildInstantiatedTypeArguments(
if (use_instantiator_type_args) {
return instantiator_value;
} else {
- return Bind(new(Z) InstantiateTypeArgumentsInstr(token_pos,
- type_arguments,
- instantiator_class,
- instantiator_value));
+ return Bind(new (Z) InstantiateTypeArgumentsInstr(
+ token_pos, type_arguments, instantiator_class, instantiator_value));
}
}
@@ -2952,9 +2810,10 @@ void ValueGraphVisitor::VisitConstructorCallNode(ConstructorCallNode* node) {
// tn <- LoadLocal(temp)
Value* allocate = BuildObjectAllocation(node);
- { LocalVariable* tmp_var = EnterTempLocalScope(allocate);
+ {
+ LocalVariable* tmp_var = EnterTempLocalScope(allocate);
Value* allocated_tmp =
- Bind(new(Z) LoadLocalInstr(*tmp_var, node->token_pos()));
+ Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
PushArgumentInstr* push_allocated_value = PushArgument(allocated_tmp);
BuildConstructorCall(node, push_allocated_value);
ReturnDefinition(ExitTempLocalScope(allocate));
@@ -2962,20 +2821,16 @@ void ValueGraphVisitor::VisitConstructorCallNode(ConstructorCallNode* node) {
}
-
void EffectGraphVisitor::BuildInstanceGetterConditional(
InstanceGetterNode* node) {
const TokenPosition token_pos = node->token_pos();
LocalVariable* temp_var = owner()->parsed_function().expression_temp_var();
- LoadLocalNode* load_temp = new(Z) LoadLocalNode(token_pos, temp_var);
+ LoadLocalNode* load_temp = new (Z) LoadLocalNode(token_pos, temp_var);
LiteralNode* null_constant =
- new(Z) LiteralNode(ST(token_pos), Object::null_instance());
- ComparisonNode* check_is_null =
- new(Z) ComparisonNode(ST(token_pos),
- Token::kEQ,
- load_temp,
- null_constant);
+ new (Z) LiteralNode(ST(token_pos), Object::null_instance());
+ ComparisonNode* check_is_null = new (Z)
+ ComparisonNode(ST(token_pos), Token::kEQ, load_temp, null_constant);
TestGraphVisitor for_test(owner(), ST(token_pos));
check_is_null->Visit(&for_test);
@@ -2983,14 +2838,13 @@ void EffectGraphVisitor::BuildInstanceGetterConditional(
EffectGraphVisitor for_false(owner());
StoreLocalNode* store_null =
- new(Z) StoreLocalNode(ST(token_pos), temp_var, null_constant);
+ new (Z) StoreLocalNode(ST(token_pos), temp_var, null_constant);
store_null->Visit(&for_true);
- InstanceGetterNode* getter = new(Z) InstanceGetterNode(token_pos,
- load_temp,
- node->field_name());
+ InstanceGetterNode* getter =
+ new (Z) InstanceGetterNode(token_pos, load_temp, node->field_name());
StoreLocalNode* store_getter =
- new(Z) StoreLocalNode(ST(token_pos), temp_var, getter);
+ new (Z) StoreLocalNode(ST(token_pos), temp_var, getter);
store_getter->Visit(&for_false);
Join(for_test, for_true, for_false);
@@ -3021,17 +2875,13 @@ void EffectGraphVisitor::VisitInstanceGetterNode(InstanceGetterNode* node) {
} else {
PushArgumentInstr* push_receiver = PushArgument(for_receiver.value());
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(1);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
arguments->Add(push_receiver);
const String& name =
String::ZoneHandle(Z, Field::GetterSymbol(node->field_name()));
- InstanceCallInstr* call = new(Z) InstanceCallInstr(
- node->token_pos(),
- name,
- Token::kGET,
- arguments, Object::null_array(),
- 1,
- owner()->ic_data_array());
+ InstanceCallInstr* call = new (Z)
+ InstanceCallInstr(node->token_pos(), name, Token::kGET, arguments,
+ Object::null_array(), 1, owner()->ic_data_array());
ReturnDefinition(call);
}
}
@@ -3069,43 +2919,32 @@ void EffectGraphVisitor::VisitInstanceSetterNode(InstanceSetterNode* node) {
Do(BuildStoreExprTemp(for_receiver.value(), token_pos));
LocalVariable* temp_var = owner()->parsed_function().expression_temp_var();
- LoadLocalNode* load_temp =
- new(Z) LoadLocalNode(ST(token_pos), temp_var);
+ LoadLocalNode* load_temp = new (Z) LoadLocalNode(ST(token_pos), temp_var);
LiteralNode* null_constant =
- new(Z) LiteralNode(ST(token_pos), Object::null_instance());
- ComparisonNode* check_is_null =
- new(Z) ComparisonNode(ST(token_pos),
- Token::kEQ,
- load_temp,
- null_constant);
+ new (Z) LiteralNode(ST(token_pos), Object::null_instance());
+ ComparisonNode* check_is_null = new (Z)
+ ComparisonNode(ST(token_pos), Token::kEQ, load_temp, null_constant);
TestGraphVisitor for_test(owner(), ST(token_pos));
check_is_null->Visit(&for_test);
EffectGraphVisitor for_true(owner());
EffectGraphVisitor for_false(owner());
- InstanceSetterNode* setter =
- new(Z) InstanceSetterNode(token_pos,
- load_temp,
- node->field_name(),
- node->value());
+ InstanceSetterNode* setter = new (Z) InstanceSetterNode(
+ token_pos, load_temp, node->field_name(), node->value());
setter->Visit(&for_false);
Join(for_test, for_true, for_false);
return;
}
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
BuildInstanceSetterArguments(node, arguments, kResultNotNeeded);
const String& name =
String::ZoneHandle(Z, Field::SetterSymbol(node->field_name()));
const intptr_t kNumArgsChecked = 1; // Do not check value type.
- InstanceCallInstr* call = new(Z) InstanceCallInstr(token_pos,
- name,
- Token::kSET,
- arguments,
- Object::null_array(),
- kNumArgsChecked,
- owner()->ic_data_array());
+ InstanceCallInstr* call = new (Z) InstanceCallInstr(
+ token_pos, name, Token::kSET, arguments, Object::null_array(),
+ kNumArgsChecked, owner()->ic_data_array());
ReturnDefinition(call);
}
@@ -3119,15 +2958,11 @@ void ValueGraphVisitor::VisitInstanceSetterNode(InstanceSetterNode* node) {
Do(BuildStoreExprTemp(for_receiver.value(), token_pos));
LocalVariable* temp_var = owner()->parsed_function().expression_temp_var();
- LoadLocalNode* load_temp =
- new(Z) LoadLocalNode(ST(token_pos), temp_var);
+ LoadLocalNode* load_temp = new (Z) LoadLocalNode(ST(token_pos), temp_var);
LiteralNode* null_constant =
- new(Z) LiteralNode(ST(token_pos), Object::null_instance());
- ComparisonNode* check_is_null =
- new(Z) ComparisonNode(ST(token_pos),
- Token::kEQ,
- load_temp,
- null_constant);
+ new (Z) LiteralNode(ST(token_pos), Object::null_instance());
+ ComparisonNode* check_is_null = new (Z)
+ ComparisonNode(ST(token_pos), Token::kEQ, load_temp, null_constant);
TestGraphVisitor for_test(owner(), ST(token_pos));
check_is_null->Visit(&for_test);
@@ -3136,11 +2971,8 @@ void ValueGraphVisitor::VisitInstanceSetterNode(InstanceSetterNode* node) {
for_true.Do(BuildStoreExprTemp(for_true.value(), token_pos));
ValueGraphVisitor for_false(owner());
- InstanceSetterNode* setter =
- new(Z) InstanceSetterNode(token_pos,
- load_temp,
- node->field_name(),
- node->value());
+ InstanceSetterNode* setter = new (Z) InstanceSetterNode(
+ token_pos, load_temp, node->field_name(), node->value());
setter->Visit(&for_false);
for_false.Do(BuildStoreExprTemp(for_false.value(), token_pos));
@@ -3149,18 +2981,14 @@ void ValueGraphVisitor::VisitInstanceSetterNode(InstanceSetterNode* node) {
return;
}
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
BuildInstanceSetterArguments(node, arguments, kResultNeeded);
const String& name =
String::ZoneHandle(Z, Field::SetterSymbol(node->field_name()));
const intptr_t kNumArgsChecked = 1; // Do not check value type.
- Do(new(Z) InstanceCallInstr(token_pos,
- name,
- Token::kSET,
- arguments,
- Object::null_array(),
- kNumArgsChecked,
- owner()->ic_data_array()));
+ Do(new (Z) InstanceCallInstr(token_pos, name, Token::kSET, arguments,
+ Object::null_array(), kNumArgsChecked,
+ owner()->ic_data_array()));
ReturnDefinition(BuildLoadExprTemp(token_pos));
}
@@ -3169,24 +2997,21 @@ void EffectGraphVisitor::VisitStaticGetterNode(StaticGetterNode* node) {
const String& getter_name =
String::ZoneHandle(Z, Field::GetterSymbol(node->field_name()));
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>();
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>();
Function& getter_function = Function::ZoneHandle(Z, Function::null());
if (node->is_super_getter()) {
// Statically resolved instance getter, i.e. "super getter".
ASSERT(node->receiver() != NULL);
- getter_function = Resolver::ResolveDynamicAnyArgs(Z,
- node->cls(), getter_name);
+ getter_function =
+ Resolver::ResolveDynamicAnyArgs(Z, node->cls(), getter_name);
if (getter_function.IsNull()) {
// Resolve and call noSuchMethod.
- ArgumentListNode* arguments = new(Z) ArgumentListNode(node->token_pos());
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(node->token_pos());
arguments->Add(node->receiver());
- StaticCallInstr* call =
- BuildStaticNoSuchMethodCall(node->cls(),
- node->receiver(),
- getter_name,
- arguments,
- false, // Don't save last argument.
- true); // Super invocation.
+ StaticCallInstr* call = BuildStaticNoSuchMethodCall(
+ node->cls(), node->receiver(), getter_name, arguments,
+ false, // Don't save last argument.
+ true); // Super invocation.
ReturnDefinition(call);
return;
} else {
@@ -3214,26 +3039,21 @@ void EffectGraphVisitor::VisitStaticGetterNode(StaticGetterNode* node) {
// Throw a NoSuchMethodError.
StaticCallInstr* call = BuildThrowNoSuchMethodError(
- node->token_pos(),
- node->cls(),
- getter_name,
+ node->token_pos(), node->cls(), getter_name,
NULL, // No Arguments to getter.
- InvocationMirror::EncodeType(
- node->cls().IsTopLevel() ?
- InvocationMirror::kTopLevel :
- InvocationMirror::kStatic,
- InvocationMirror::kGetter));
+ InvocationMirror::EncodeType(node->cls().IsTopLevel()
+ ? InvocationMirror::kTopLevel
+ : InvocationMirror::kStatic,
+ InvocationMirror::kGetter));
ReturnDefinition(call);
return;
}
}
ASSERT(!getter_function.IsNull());
- StaticCallInstr* call = new(Z) StaticCallInstr(
- node->token_pos(),
- getter_function,
- Object::null_array(), // No names
- arguments,
- owner()->ic_data_array());
+ StaticCallInstr* call =
+ new (Z) StaticCallInstr(node->token_pos(), getter_function,
+ Object::null_array(), // No names
+ arguments, owner()->ic_data_array());
ReturnDefinition(call);
}
@@ -3243,7 +3063,7 @@ void EffectGraphVisitor::BuildStaticSetter(StaticSetterNode* node,
const String& setter_name =
String::ZoneHandle(Z, Field::SetterSymbol(node->field_name()));
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(1);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
const TokenPosition token_pos = node->token_pos();
// A super setter is an instance setter whose setter function is
// resolved at compile time (in the caller instance getter's super class).
@@ -3255,30 +3075,24 @@ void EffectGraphVisitor::BuildStaticSetter(StaticSetterNode* node,
if (is_super_setter) {
ASSERT(node->receiver() != NULL);
// Resolve and call noSuchMethod.
- ArgumentListNode* arguments = new(Z) ArgumentListNode(token_pos);
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(token_pos);
arguments->Add(node->receiver());
arguments->Add(node->value());
call = BuildStaticNoSuchMethodCall(
- node->cls(),
- node->receiver(),
- setter_name,
- arguments,
+ node->cls(), node->receiver(), setter_name, arguments,
result_is_needed, // Save last arg if result is needed.
- true); // Super invocation.
+ true); // Super invocation.
} else {
// Throw a NoSuchMethodError.
- ArgumentListNode* arguments = new(Z) ArgumentListNode(token_pos);
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(token_pos);
arguments->Add(node->value());
call = BuildThrowNoSuchMethodError(
- token_pos,
- node->cls(),
- setter_name,
+ token_pos, node->cls(), setter_name,
arguments, // Argument is the value passed to the setter.
- InvocationMirror::EncodeType(
- node->cls().IsTopLevel() ?
- InvocationMirror::kTopLevel :
- InvocationMirror::kStatic,
- InvocationMirror::kSetter));
+ InvocationMirror::EncodeType(node->cls().IsTopLevel()
+ ? InvocationMirror::kTopLevel
+ : InvocationMirror::kStatic,
+ InvocationMirror::kSetter));
}
} else {
if (is_super_setter) {
@@ -3299,11 +3113,9 @@ void EffectGraphVisitor::BuildStaticSetter(StaticSetterNode* node,
}
arguments->Add(PushArgument(value));
- call = new(Z) StaticCallInstr(token_pos,
- setter_function,
- Object::null_array(), // No names.
- arguments,
- owner()->ic_data_array());
+ call = new (Z) StaticCallInstr(token_pos, setter_function,
+ Object::null_array(), // No names.
+ arguments, owner()->ic_data_array());
}
if (result_is_needed) {
Do(call);
@@ -3343,11 +3155,11 @@ static intptr_t OffsetForLengthGetter(MethodRecognizer::Kind kind) {
}
-LoadLocalInstr* EffectGraphVisitor::BuildLoadThisVar(
- LocalScope* scope, TokenPosition token_pos) {
+LoadLocalInstr* EffectGraphVisitor::BuildLoadThisVar(LocalScope* scope,
+ TokenPosition token_pos) {
LocalVariable* receiver_var = scope->LookupVariable(Symbols::This(),
true); // Test only.
- return new(Z) LoadLocalInstr(*receiver_var, token_pos);
+ return new (Z) LoadLocalInstr(*receiver_var, token_pos);
}
@@ -3358,10 +3170,8 @@ LoadFieldInstr* EffectGraphVisitor::BuildNativeGetter(
const Type& type,
intptr_t class_id) {
Value* receiver = Bind(BuildLoadThisVar(node->scope(), node->token_pos()));
- LoadFieldInstr* load = new(Z) LoadFieldInstr(receiver,
- offset,
- type,
- node->token_pos());
+ LoadFieldInstr* load =
+ new (Z) LoadFieldInstr(receiver, offset, type, node->token_pos());
load->set_result_cid(class_id);
load->set_recognized_kind(kind);
return load;
@@ -3375,15 +3185,11 @@ ConstantInstr* EffectGraphVisitor::DoNativeSetterStoreValue(
Value* receiver = Bind(BuildLoadThisVar(node->scope(), node->token_pos()));
LocalVariable* value_var =
node->scope()->LookupVariable(Symbols::Value(), true);
- Value* value = Bind(new(Z) LoadLocalInstr(*value_var, node->token_pos()));
- StoreInstanceFieldInstr* store = new(Z) StoreInstanceFieldInstr(
- offset,
- receiver,
- value,
- emit_store_barrier,
- node->token_pos());
+ Value* value = Bind(new (Z) LoadLocalInstr(*value_var, node->token_pos()));
+ StoreInstanceFieldInstr* store = new (Z) StoreInstanceFieldInstr(
+ offset, receiver, value, emit_store_barrier, node->token_pos());
Do(store);
- return new(Z) ConstantInstr(Object::ZoneHandle(Z, Object::null()));
+ return new (Z) ConstantInstr(Object::ZoneHandle(Z, Object::null()));
}
@@ -3398,15 +3204,11 @@ void EffectGraphVisitor::VisitNativeBodyNode(NativeBodyNode* node) {
LocalVariable* other_var =
node->scope()->LookupVariable(Symbols::Other(),
true); // Test only.
- Value* other = Bind(new(Z) LoadLocalInstr(*other_var, token_pos));
+ Value* other = Bind(new (Z) LoadLocalInstr(*other_var, token_pos));
// Receiver is not a number because numbers override equality.
const bool kNoNumberCheck = false;
- StrictCompareInstr* compare =
- new(Z) StrictCompareInstr(token_pos,
- Token::kEQ_STRICT,
- receiver,
- other,
- kNoNumberCheck);
+ StrictCompareInstr* compare = new (Z) StrictCompareInstr(
+ token_pos, Token::kEQ_STRICT, receiver, other, kNoNumberCheck);
return ReturnDefinition(compare);
}
case MethodRecognizer::kStringBaseLength:
@@ -3423,102 +3225,90 @@ void EffectGraphVisitor::VisitNativeBodyNode(NativeBodyNode* node) {
return ReturnDefinition(load);
}
ASSERT(kind == MethodRecognizer::kStringBaseIsEmpty);
- Value* zero_val = Bind(new(Z) ConstantInstr(
- Smi::ZoneHandle(Z, Smi::New(0))));
+ Value* zero_val =
+ Bind(new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(0))));
Value* load_val = Bind(load);
- StrictCompareInstr* compare =
- new(Z) StrictCompareInstr(token_pos,
- Token::kEQ_STRICT,
- load_val,
- zero_val,
- false); // No number check.
+ StrictCompareInstr* compare = new (Z)
+ StrictCompareInstr(token_pos, Token::kEQ_STRICT, load_val, zero_val,
+ false); // No number check.
return ReturnDefinition(compare);
}
case MethodRecognizer::kGrowableArrayLength:
case MethodRecognizer::kObjectArrayLength:
case MethodRecognizer::kImmutableArrayLength:
case MethodRecognizer::kTypedDataLength: {
- LoadFieldInstr* load = BuildNativeGetter(
- node, kind, OffsetForLengthGetter(kind),
- Type::ZoneHandle(Z, Type::SmiType()), kSmiCid);
+ LoadFieldInstr* load =
+ BuildNativeGetter(node, kind, OffsetForLengthGetter(kind),
+ Type::ZoneHandle(Z, Type::SmiType()), kSmiCid);
load->set_is_immutable(kind != MethodRecognizer::kGrowableArrayLength);
return ReturnDefinition(load);
}
case MethodRecognizer::kClassIDgetID: {
LocalVariable* value_var =
node->scope()->LookupVariable(Symbols::Value(), true);
- Value* value = Bind(new(Z) LoadLocalInstr(*value_var, token_pos));
- LoadClassIdInstr* load = new(Z) LoadClassIdInstr(value);
+ Value* value = Bind(new (Z) LoadLocalInstr(*value_var, token_pos));
+ LoadClassIdInstr* load = new (Z) LoadClassIdInstr(value);
return ReturnDefinition(load);
}
case MethodRecognizer::kGrowableArrayCapacity: {
Value* receiver = Bind(BuildLoadThisVar(node->scope(), token_pos));
- LoadFieldInstr* data_load = new(Z) LoadFieldInstr(
- receiver,
- Array::data_offset(),
- Object::dynamic_type(),
- node->token_pos());
+ LoadFieldInstr* data_load =
+ new (Z) LoadFieldInstr(receiver, Array::data_offset(),
+ Object::dynamic_type(), node->token_pos());
data_load->set_result_cid(kArrayCid);
Value* data = Bind(data_load);
- LoadFieldInstr* length_load = new(Z) LoadFieldInstr(
- data,
- Array::length_offset(),
- Type::ZoneHandle(Z, Type::SmiType()),
+ LoadFieldInstr* length_load = new (Z) LoadFieldInstr(
+ data, Array::length_offset(), Type::ZoneHandle(Z, Type::SmiType()),
node->token_pos());
length_load->set_result_cid(kSmiCid);
length_load->set_recognized_kind(MethodRecognizer::kObjectArrayLength);
return ReturnDefinition(length_load);
}
case MethodRecognizer::kObjectArrayAllocate: {
- LocalVariable* type_args_parameter =
- node->scope()->LookupVariable(Symbols::TypeArgumentsParameter(),
- true);
+ LocalVariable* type_args_parameter = node->scope()->LookupVariable(
+ Symbols::TypeArgumentsParameter(), true);
Value* element_type =
- Bind(new(Z) LoadLocalInstr(*type_args_parameter, token_pos));
+ Bind(new (Z) LoadLocalInstr(*type_args_parameter, token_pos));
LocalVariable* length_parameter =
node->scope()->LookupVariable(Symbols::Length(), true);
Value* length =
- Bind(new(Z) LoadLocalInstr(*length_parameter, token_pos));
+ Bind(new (Z) LoadLocalInstr(*length_parameter, token_pos));
CreateArrayInstr* create_array =
new CreateArrayInstr(token_pos, element_type, length);
return ReturnDefinition(create_array);
}
case MethodRecognizer::kBigint_getDigits: {
return ReturnDefinition(BuildNativeGetter(
- node, kind, Bigint::digits_offset(),
- Object::dynamic_type(),
+ node, kind, Bigint::digits_offset(), Object::dynamic_type(),
kTypedDataUint32ArrayCid));
}
case MethodRecognizer::kBigint_getUsed: {
- return ReturnDefinition(BuildNativeGetter(
- node, kind, Bigint::used_offset(),
- Type::ZoneHandle(Z, Type::SmiType()), kSmiCid));
+ return ReturnDefinition(
+ BuildNativeGetter(node, kind, Bigint::used_offset(),
+ Type::ZoneHandle(Z, Type::SmiType()), kSmiCid));
}
case MethodRecognizer::kLinkedHashMap_getIndex: {
- return ReturnDefinition(BuildNativeGetter(
- node, kind, LinkedHashMap::index_offset(),
- Object::dynamic_type(),
- kDynamicCid));
+ return ReturnDefinition(
+ BuildNativeGetter(node, kind, LinkedHashMap::index_offset(),
+ Object::dynamic_type(), kDynamicCid));
}
case MethodRecognizer::kLinkedHashMap_setIndex: {
return ReturnDefinition(DoNativeSetterStoreValue(
node, LinkedHashMap::index_offset(), kEmitStoreBarrier));
}
case MethodRecognizer::kLinkedHashMap_getData: {
- return ReturnDefinition(BuildNativeGetter(
- node, kind, LinkedHashMap::data_offset(),
- Object::dynamic_type(),
- kArrayCid));
+ return ReturnDefinition(
+ BuildNativeGetter(node, kind, LinkedHashMap::data_offset(),
+ Object::dynamic_type(), kArrayCid));
}
case MethodRecognizer::kLinkedHashMap_setData: {
return ReturnDefinition(DoNativeSetterStoreValue(
node, LinkedHashMap::data_offset(), kEmitStoreBarrier));
}
case MethodRecognizer::kLinkedHashMap_getHashMask: {
- return ReturnDefinition(BuildNativeGetter(
- node, kind, LinkedHashMap::hash_mask_offset(),
- Type::ZoneHandle(Z, Type::SmiType()),
- kSmiCid));
+ return ReturnDefinition(
+ BuildNativeGetter(node, kind, LinkedHashMap::hash_mask_offset(),
+ Type::ZoneHandle(Z, Type::SmiType()), kSmiCid));
}
case MethodRecognizer::kLinkedHashMap_setHashMask: {
// Smi field; no barrier needed.
@@ -3526,10 +3316,9 @@ void EffectGraphVisitor::VisitNativeBodyNode(NativeBodyNode* node) {
node, LinkedHashMap::hash_mask_offset(), kNoStoreBarrier));
}
case MethodRecognizer::kLinkedHashMap_getUsedData: {
- return ReturnDefinition(BuildNativeGetter(
- node, kind, LinkedHashMap::used_data_offset(),
- Type::ZoneHandle(Z, Type::SmiType()),
- kSmiCid));
+ return ReturnDefinition(
+ BuildNativeGetter(node, kind, LinkedHashMap::used_data_offset(),
+ Type::ZoneHandle(Z, Type::SmiType()), kSmiCid));
}
case MethodRecognizer::kLinkedHashMap_setUsedData: {
// Smi field; no barrier needed.
@@ -3537,10 +3326,9 @@ void EffectGraphVisitor::VisitNativeBodyNode(NativeBodyNode* node) {
node, LinkedHashMap::used_data_offset(), kNoStoreBarrier));
}
case MethodRecognizer::kLinkedHashMap_getDeletedKeys: {
- return ReturnDefinition(BuildNativeGetter(
- node, kind, LinkedHashMap::deleted_keys_offset(),
- Type::ZoneHandle(Z, Type::SmiType()),
- kSmiCid));
+ return ReturnDefinition(
+ BuildNativeGetter(node, kind, LinkedHashMap::deleted_keys_offset(),
+ Type::ZoneHandle(Z, Type::SmiType()), kSmiCid));
}
case MethodRecognizer::kLinkedHashMap_setDeletedKeys: {
// Smi field; no barrier needed.
@@ -3548,16 +3336,16 @@ void EffectGraphVisitor::VisitNativeBodyNode(NativeBodyNode* node) {
node, LinkedHashMap::deleted_keys_offset(), kNoStoreBarrier));
}
case MethodRecognizer::kBigint_getNeg: {
- return ReturnDefinition(BuildNativeGetter(
- node, kind, Bigint::neg_offset(),
- Type::ZoneHandle(Z, Type::BoolType()), kBoolCid));
+ return ReturnDefinition(
+ BuildNativeGetter(node, kind, Bigint::neg_offset(),
+ Type::ZoneHandle(Z, Type::BoolType()), kBoolCid));
}
default:
break;
}
}
InlineBailout("EffectGraphVisitor::VisitNativeBodyNode");
- NativeCallInstr* native_call = new(Z) NativeCallInstr(node);
+ NativeCallInstr* native_call = new (Z) NativeCallInstr(node);
ReturnDefinition(native_call);
}
@@ -3596,9 +3384,8 @@ void EffectGraphVisitor::VisitStoreLocalNode(StoreLocalNode* node) {
(rhs->IsLoadLocalNode() &&
!rhs->AsLoadLocalNode()->local().IsInternal()) ||
rhs->IsClosureNode()) &&
- !node->local().IsInternal() &&
- node->token_pos().IsDebugPause()) {
- AddInstruction(new(Z) DebugStepCheckInstr(
+ !node->local().IsInternal() && node->token_pos().IsDebugPause()) {
+ AddInstruction(new (Z) DebugStepCheckInstr(
node->token_pos(), RawPcDescriptors::kRuntimeCall));
}
}
@@ -3608,14 +3395,12 @@ void EffectGraphVisitor::VisitStoreLocalNode(StoreLocalNode* node) {
Append(for_value);
Value* store_value = for_value.value();
if (Isolate::Current()->type_checks()) {
- store_value = BuildAssignableValue(node->value()->token_pos(),
- store_value,
- node->local().type(),
- node->local().name());
- }
- Definition* store = BuildStoreLocal(node->local(),
- store_value,
- node->token_pos());
+ store_value =
+ BuildAssignableValue(node->value()->token_pos(), store_value,
+ node->local().type(), node->local().name());
+ }
+ Definition* store =
+ BuildStoreLocal(node->local(), store_value, node->token_pos());
ReturnDefinition(store);
}
@@ -3625,11 +3410,9 @@ void EffectGraphVisitor::VisitLoadInstanceFieldNode(
ValueGraphVisitor for_instance(owner());
node->instance()->Visit(&for_instance);
Append(for_instance);
- LoadFieldInstr* load = new(Z) LoadFieldInstr(
- for_instance.value(),
- &node->field(),
- AbstractType::ZoneHandle(Z, node->field().type()),
- node->token_pos());
+ LoadFieldInstr* load = new (Z) LoadFieldInstr(
+ for_instance.value(), &node->field(),
+ AbstractType::ZoneHandle(Z, node->field().type()), node->token_pos());
if (node->field().guarded_cid() != kIllegalCid) {
if (!node->field().is_nullable() ||
(node->field().guarded_cid() == kNullCid)) {
@@ -3655,33 +3438,24 @@ void EffectGraphVisitor::VisitStoreInstanceFieldNode(
const AbstractType& type =
AbstractType::ZoneHandle(Z, node->field().type());
const String& dst_name = String::ZoneHandle(Z, node->field().name());
- store_value = BuildAssignableValue(node->value()->token_pos(),
- store_value,
- type,
- dst_name);
+ store_value = BuildAssignableValue(node->value()->token_pos(), store_value,
+ type, dst_name);
}
if (FLAG_use_field_guards) {
store_value = Bind(BuildStoreExprTemp(store_value, token_pos));
- GuardFieldClassInstr* guard_field_class =
- new(Z) GuardFieldClassInstr(store_value,
- node->field(),
- thread()->GetNextDeoptId());
+ GuardFieldClassInstr* guard_field_class = new (Z) GuardFieldClassInstr(
+ store_value, node->field(), thread()->GetNextDeoptId());
AddInstruction(guard_field_class);
store_value = Bind(BuildLoadExprTemp(token_pos));
- GuardFieldLengthInstr* guard_field_length =
- new(Z) GuardFieldLengthInstr(store_value,
- node->field(),
- thread()->GetNextDeoptId());
+ GuardFieldLengthInstr* guard_field_length = new (Z) GuardFieldLengthInstr(
+ store_value, node->field(), thread()->GetNextDeoptId());
AddInstruction(guard_field_length);
store_value = Bind(BuildLoadExprTemp(token_pos));
}
- StoreInstanceFieldInstr* store =
- new(Z) StoreInstanceFieldInstr(node->field(),
- for_instance.value(),
- store_value,
- kEmitStoreBarrier,
- token_pos);
+ StoreInstanceFieldInstr* store = new (Z)
+ StoreInstanceFieldInstr(node->field(), for_instance.value(), store_value,
+ kEmitStoreBarrier, token_pos);
// Maybe initializing unboxed store.
store->set_is_initialization(node->is_initializer());
ReturnDefinition(store);
@@ -3692,16 +3466,15 @@ void EffectGraphVisitor::VisitLoadStaticFieldNode(LoadStaticFieldNode* node) {
const TokenPosition token_pos = node->token_pos();
if (node->field().is_const()) {
ASSERT(node->field().StaticValue() != Object::sentinel().raw());
- ASSERT(node->field().StaticValue() !=
- Object::transition_sentinel().raw());
- Definition* result = new(Z) ConstantInstr(
+ ASSERT(node->field().StaticValue() != Object::transition_sentinel().raw());
+ Definition* result = new (Z) ConstantInstr(
Instance::ZoneHandle(Z, node->field().StaticValue()), token_pos);
return ReturnDefinition(result);
}
- Value* field_value = Bind(new(Z) ConstantInstr(
+ Value* field_value = Bind(new (Z) ConstantInstr(
Field::ZoneHandle(Z, node->field().Original()), token_pos));
LoadStaticFieldInstr* load =
- new(Z) LoadStaticFieldInstr(field_value, token_pos);
+ new (Z) LoadStaticFieldInstr(field_value, token_pos);
ReturnDefinition(load);
}
@@ -3718,11 +3491,10 @@ Definition* EffectGraphVisitor::BuildStoreStaticField(
if (rhs->IsAssignableNode()) {
rhs = rhs->AsAssignableNode()->expr();
}
- if ((rhs->IsLiteralNode() ||
- rhs->IsLoadLocalNode() ||
+ if ((rhs->IsLiteralNode() || rhs->IsLoadLocalNode() ||
rhs->IsClosureNode()) &&
- node->token_pos().IsDebugPause()) {
- AddInstruction(new(Z) DebugStepCheckInstr(
+ node->token_pos().IsDebugPause()) {
+ AddInstruction(new (Z) DebugStepCheckInstr(
node->token_pos(), RawPcDescriptors::kRuntimeCall));
}
}
@@ -3737,7 +3509,7 @@ Definition* EffectGraphVisitor::BuildStoreStaticField(
store_value = for_value.value();
}
StoreStaticFieldInstr* store =
- new(Z) StoreStaticFieldInstr(node->field(), store_value, token_pos);
+ new (Z) StoreStaticFieldInstr(node->field(), store_value, token_pos);
if (result_is_needed) {
Do(store);
@@ -3764,27 +3536,25 @@ void EffectGraphVisitor::VisitLoadIndexedNode(LoadIndexedNode* node) {
Function* super_function = NULL;
if (node->IsSuperLoad()) {
// Resolve the load indexed operator in the super class.
- super_function = &Function::ZoneHandle(Z, Resolver::ResolveDynamicAnyArgs(Z,
- node->super_class(), Symbols::IndexToken()));
+ super_function = &Function::ZoneHandle(
+ Z, Resolver::ResolveDynamicAnyArgs(Z, node->super_class(),
+ Symbols::IndexToken()));
if (super_function->IsNull()) {
// Could not resolve super operator. Generate call noSuchMethod() of the
// super class instead.
- ArgumentListNode* arguments = new(Z) ArgumentListNode(node->token_pos());
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(node->token_pos());
arguments->Add(node->array());
arguments->Add(node->index_expr());
- StaticCallInstr* call =
- BuildStaticNoSuchMethodCall(node->super_class(),
- node->array(),
- Symbols::IndexToken(),
- arguments,
- false, // Don't save last arg.
- true); // Super invocation.
+ StaticCallInstr* call = BuildStaticNoSuchMethodCall(
+ node->super_class(), node->array(), Symbols::IndexToken(), arguments,
+ false, // Don't save last arg.
+ true); // Super invocation.
ReturnDefinition(call);
return;
}
}
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
ValueGraphVisitor for_array(owner());
node->array()->Visit(&for_array);
Append(for_array);
@@ -3797,51 +3567,42 @@ void EffectGraphVisitor::VisitLoadIndexedNode(LoadIndexedNode* node) {
if (super_function != NULL) {
// Generate static call to super operator.
- StaticCallInstr* load = new(Z) StaticCallInstr(node->token_pos(),
- *super_function,
- Object::null_array(),
- arguments,
- owner()->ic_data_array());
+ StaticCallInstr* load = new (Z) StaticCallInstr(
+ node->token_pos(), *super_function, Object::null_array(), arguments,
+ owner()->ic_data_array());
ReturnDefinition(load);
} else {
// Generate dynamic call to index operator.
const intptr_t checked_argument_count = 1;
- InstanceCallInstr* load = new(Z) InstanceCallInstr(
- node->token_pos(),
- Symbols::IndexToken(),
- Token::kINDEX,
- arguments,
- Object::null_array(),
- checked_argument_count,
- owner()->ic_data_array());
+ InstanceCallInstr* load = new (Z) InstanceCallInstr(
+ node->token_pos(), Symbols::IndexToken(), Token::kINDEX, arguments,
+ Object::null_array(), checked_argument_count, owner()->ic_data_array());
ReturnDefinition(load);
}
}
-Definition* EffectGraphVisitor::BuildStoreIndexedValues(
- StoreIndexedNode* node,
- bool result_is_needed) {
+Definition* EffectGraphVisitor::BuildStoreIndexedValues(StoreIndexedNode* node,
+ bool result_is_needed) {
Function* super_function = NULL;
const TokenPosition token_pos = node->token_pos();
if (node->IsSuperStore()) {
// Resolve the store indexed operator in the super class.
- super_function = &Function::ZoneHandle(Z, Resolver::ResolveDynamicAnyArgs(Z,
- node->super_class(), Symbols::AssignIndexToken()));
+ super_function = &Function::ZoneHandle(
+ Z, Resolver::ResolveDynamicAnyArgs(Z, node->super_class(),
+ Symbols::AssignIndexToken()));
if (super_function->IsNull()) {
// Could not resolve super operator. Generate call noSuchMethod() of the
// super class instead.
- ArgumentListNode* arguments = new(Z) ArgumentListNode(token_pos);
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(token_pos);
arguments->Add(node->array());
arguments->Add(node->index_expr());
arguments->Add(node->value());
StaticCallInstr* call = BuildStaticNoSuchMethodCall(
- node->super_class(),
- node->array(),
- Symbols::AssignIndexToken(),
+ node->super_class(), node->array(), Symbols::AssignIndexToken(),
arguments,
result_is_needed, // Save last arg if result is needed.
- true); // Super invocation.
+ true); // Super invocation.
if (result_is_needed) {
Do(call);
// BuildStaticNoSuchMethodCall stores the value in expression_temp.
@@ -3853,7 +3614,7 @@ Definition* EffectGraphVisitor::BuildStoreIndexedValues(
}
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(3);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(3);
ValueGraphVisitor for_array(owner());
node->array()->Visit(&for_array);
Append(for_array);
@@ -3878,12 +3639,9 @@ Definition* EffectGraphVisitor::BuildStoreIndexedValues(
if (super_function != NULL) {
// Generate static call to super operator []=.
- StaticCallInstr* store =
- new(Z) StaticCallInstr(token_pos,
- *super_function,
- Object::null_array(),
- arguments,
- owner()->ic_data_array());
+ StaticCallInstr* store = new (Z)
+ StaticCallInstr(token_pos, *super_function, Object::null_array(),
+ arguments, owner()->ic_data_array());
if (result_is_needed) {
Do(store);
return BuildLoadExprTemp(token_pos);
@@ -3893,14 +3651,9 @@ Definition* EffectGraphVisitor::BuildStoreIndexedValues(
} else {
// Generate dynamic call to operator []=.
const intptr_t checked_argument_count = 2; // Do not check for value type.
- InstanceCallInstr* store =
- new(Z) InstanceCallInstr(token_pos,
- Symbols::AssignIndexToken(),
- Token::kASSIGN_INDEX,
- arguments,
- Object::null_array(),
- checked_argument_count,
- owner()->ic_data_array());
+ InstanceCallInstr* store = new (Z) InstanceCallInstr(
+ token_pos, Symbols::AssignIndexToken(), Token::kASSIGN_INDEX, arguments,
+ Object::null_array(), checked_argument_count, owner()->ic_data_array());
if (result_is_needed) {
Do(store);
return BuildLoadExprTemp(token_pos);
@@ -3922,8 +3675,8 @@ void ValueGraphVisitor::VisitStoreIndexedNode(StoreIndexedNode* node) {
bool EffectGraphVisitor::HasContextScope() const {
- const ContextScope& context_scope = ContextScope::Handle(
- owner()->function().context_scope());
+ const ContextScope& context_scope =
+ ContextScope::Handle(owner()->function().context_scope());
return !context_scope.IsNull() && (context_scope.num_variables() > 0);
}
@@ -3934,12 +3687,10 @@ void EffectGraphVisitor::UnchainContexts(intptr_t n) {
if (n > 0) {
Value* context = Bind(BuildCurrentContext(token_pos));
while (n-- > 0) {
- context = Bind(
- new(Z) LoadFieldInstr(context,
- Context::parent_offset(),
- // Not an instance, no type.
- Type::ZoneHandle(Z, Type::null()),
- token_pos));
+ context = Bind(new (Z) LoadFieldInstr(context, Context::parent_offset(),
+ // Not an instance, no type.
+ Type::ZoneHandle(Z, Type::null()),
+ token_pos));
}
Do(BuildStoreContext(context, token_pos));
}
@@ -3991,26 +3742,23 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
// The local scope declares variables that are captured.
// Allocate and chain a new context (Except don't chain when at the function
// entry if the function does not capture any variables from outer scopes).
- Value* allocated_context =
- Bind(new(Z) AllocateContextInstr(node->token_pos(),
- num_context_variables));
- { LocalVariable* tmp_var = EnterTempLocalScope(allocated_context);
+ Value* allocated_context = Bind(
+ new (Z) AllocateContextInstr(node->token_pos(), num_context_variables));
+ {
+ LocalVariable* tmp_var = EnterTempLocalScope(allocated_context);
if (!is_top_level_sequence || HasContextScope()) {
ASSERT(is_top_level_sequence ||
(nested_block.ContextLevel() ==
nested_block.outer()->ContextLevel() + 1));
- Value* tmp_val = Bind(
- new(Z) LoadLocalInstr(*tmp_var, node->token_pos()));
+ Value* tmp_val =
+ Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
Value* parent_context = Bind(BuildCurrentContext(node->token_pos()));
- Do(new(Z) StoreInstanceFieldInstr(Context::parent_offset(),
- tmp_val,
- parent_context,
- kEmitStoreBarrier,
- node->token_pos()));
+ Do(new (Z) StoreInstanceFieldInstr(Context::parent_offset(), tmp_val,
+ parent_context, kEmitStoreBarrier,
+ node->token_pos()));
}
- Do(BuildStoreContext(
- Bind(ExitTempLocalScope(allocated_context)),
- node->token_pos()));
+ Do(BuildStoreContext(Bind(ExitTempLocalScope(allocated_context)),
+ node->token_pos()));
}
// If this node_sequence is the body of the function being compiled, copy
@@ -4018,19 +3766,20 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
if (is_top_level_sequence) {
ASSERT(scope->context_level() == 1);
const int num_params = function.NumParameters();
- int param_frame_index = (num_params == function.num_fixed_parameters()) ?
- (kParamEndSlotFromFp + num_params) : kFirstLocalSlotFromFp;
+ int param_frame_index = (num_params == function.num_fixed_parameters())
+ ? (kParamEndSlotFromFp + num_params)
+ : kFirstLocalSlotFromFp;
for (int pos = 0; pos < num_params; param_frame_index--, pos++) {
const LocalVariable& parameter = *scope->VariableAt(pos);
ASSERT(parameter.owner() == scope);
if (parameter.is_captured()) {
// Create a temporary local describing the original position.
const String& temp_name = Symbols::TempParam();
- LocalVariable* temp_local = new(Z) LocalVariable(
- TokenPosition::kNoSource, // Token index.
- TokenPosition::kNoSource, // Token index.
- temp_name,
- Object::dynamic_type()); // Type.
+ LocalVariable* temp_local =
+ new (Z) LocalVariable(TokenPosition::kNoSource, // Token index.
+ TokenPosition::kNoSource, // Token index.
+ temp_name,
+ Object::dynamic_type()); // Type.
temp_local->set_index(param_frame_index);
// Mark this local as captured parameter so that the optimizer
@@ -4045,18 +3794,16 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
// Write NULL to the source location to detect buggy accesses and
// allow GC of passed value if it gets overwritten by a new value in
// the function.
- Value* null_constant = Bind(new(Z) ConstantInstr(
- Object::ZoneHandle(Z, Object::null())));
- Do(BuildStoreLocal(*temp_local,
- null_constant,
+ Value* null_constant = Bind(
+ new (Z) ConstantInstr(Object::ZoneHandle(Z, Object::null())));
+ Do(BuildStoreLocal(*temp_local, null_constant,
ST(node->token_pos())));
}
}
}
}
- if (FLAG_support_debugger &&
- is_top_level_sequence &&
+ if (FLAG_support_debugger && is_top_level_sequence &&
function.is_debuggable()) {
// Place a debug check at method entry to ensure breaking on a method always
// happens, even if there are no assignments/calls/runtimecalls in the first
@@ -4074,8 +3821,8 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
check_pos = node->token_pos();
ASSERT(check_pos.IsDebugPause());
}
- AddInstruction(new(Z) DebugStepCheckInstr(check_pos,
- RawPcDescriptors::kRuntimeCall));
+ AddInstruction(
+ new (Z) DebugStepCheckInstr(check_pos, RawPcDescriptors::kRuntimeCall));
}
// This check may be deleted if the generated code is leaf.
@@ -4086,7 +3833,7 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
if (!function.IsImplicitGetterFunction() &&
!function.IsImplicitSetterFunction()) {
CheckStackOverflowInstr* check =
- new(Z) CheckStackOverflowInstr(node->token_pos(), 0);
+ new (Z) CheckStackOverflowInstr(node->token_pos(), 0);
// If we are inlining don't actually attach the stack check. We must still
// create the stack check in order to allocate a deopt id.
if (!owner()->IsInlining()) {
@@ -4098,8 +3845,7 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
if (Isolate::Current()->type_checks() && is_top_level_sequence) {
const int num_params = function.NumParameters();
int pos = 0;
- if (function.IsFactory() ||
- function.IsDynamicFunction() ||
+ if (function.IsFactory() || function.IsDynamicFunction() ||
function.IsGenerativeConstructor()) {
// Skip type checking of type arguments for factory functions.
// Skip type checking of receiver for instance functions and constructors.
@@ -4108,16 +3854,12 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
while (pos < num_params) {
const LocalVariable& parameter = *scope->VariableAt(pos);
ASSERT(parameter.owner() == scope);
- if (!CanSkipTypeCheck(parameter.token_pos(),
- NULL,
- parameter.type(),
+ if (!CanSkipTypeCheck(parameter.token_pos(), NULL, parameter.type(),
parameter.name())) {
Value* parameter_value =
Bind(BuildLoadLocal(parameter, parameter.token_pos()));
- Do(BuildAssertAssignable(parameter.token_pos(),
- parameter_value,
- parameter.type(),
- parameter.name()));
+ Do(BuildAssertAssignable(parameter.token_pos(), parameter_value,
+ parameter.type(), parameter.name()));
}
pos++;
}
@@ -4129,11 +3871,10 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
// The preamble is generated after visiting the body.
GotoInstr* preamble_start = NULL;
if (is_top_level_sequence &&
- (function.IsAsyncClosure() ||
- function.IsSyncGenClosure() ||
- function.IsAsyncGenClosure())) {
- JoinEntryInstr* preamble_end = new(Z) JoinEntryInstr(
- owner()->AllocateBlockId(), owner()->try_index());
+ (function.IsAsyncClosure() || function.IsSyncGenClosure() ||
+ function.IsAsyncGenClosure())) {
+ JoinEntryInstr* preamble_end = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
ASSERT(exit() != NULL);
exit()->Goto(preamble_end);
ASSERT(exit()->next()->IsGoto());
@@ -4157,14 +3898,13 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
// After generating the CFG for the body we can create the preamble
// because we know exactly how many continuation states we need.
if (is_top_level_sequence &&
- (function.IsAsyncClosure() ||
- function.IsSyncGenClosure() ||
- function.IsAsyncGenClosure())) {
+ (function.IsAsyncClosure() || function.IsSyncGenClosure() ||
+ function.IsAsyncGenClosure())) {
ASSERT(preamble_start != NULL);
// We are at the top level. Fetch the corresponding scope.
LocalScope* top_scope = node->scope();
- LocalVariable* jump_var = top_scope->LookupVariable(
- Symbols::AwaitJumpVar(), false);
+ LocalVariable* jump_var =
+ top_scope->LookupVariable(Symbols::AwaitJumpVar(), false);
ASSERT(jump_var != NULL && jump_var->is_captured());
Instruction* saved_entry = entry_;
Instruction* saved_exit = exit_;
@@ -4172,27 +3912,24 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
exit_ = NULL;
LoadLocalNode* load_jump_count =
- new(Z) LoadLocalNode(node->token_pos(), jump_var);
+ new (Z) LoadLocalNode(node->token_pos(), jump_var);
ComparisonNode* check_jump_count;
const intptr_t num_await_states = owner()->await_joins()->length();
- LocalVariable* old_context = top_scope->LookupVariable(
- Symbols::AwaitContextVar(), false);
+ LocalVariable* old_context =
+ top_scope->LookupVariable(Symbols::AwaitContextVar(), false);
for (intptr_t i = 0; i < num_await_states; i++) {
- check_jump_count = new(Z) ComparisonNode(
- ST(node->token_pos()),
- Token::kEQ,
- load_jump_count,
- new(Z) LiteralNode(
- ST(node->token_pos()), Smi::ZoneHandle(Z, Smi::New(i))));
+ check_jump_count = new (Z)
+ ComparisonNode(ST(node->token_pos()), Token::kEQ, load_jump_count,
+ new (Z) LiteralNode(ST(node->token_pos()),
+ Smi::ZoneHandle(Z, Smi::New(i))));
TestGraphVisitor for_test(owner(), ST(node->token_pos()));
check_jump_count->Visit(&for_test);
EffectGraphVisitor for_true(owner());
EffectGraphVisitor for_false(owner());
// Build async jump or sync yield jump.
- ASSERT(function.IsAsyncClosure() ||
- function.IsAsyncGenClosure() ||
+ ASSERT(function.IsAsyncClosure() || function.IsAsyncGenClosure() ||
function.IsSyncGenClosure());
// Restore the saved continuation context, i.e. the context that was
@@ -4221,8 +3958,7 @@ void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
exit_ = saved_exit;
}
- if (is_open() &&
- (num_context_variables > 0) &&
+ if (is_open() && (num_context_variables > 0) &&
(!is_top_level_sequence || HasContextScope())) {
UnchainContexts(1);
}
@@ -4279,15 +4015,14 @@ void EffectGraphVisitor::VisitTryCatchNode(TryCatchNode* node) {
node->try_block()->Visit(&for_try);
if (for_try.is_open()) {
- JoinEntryInstr* after_try =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(),
- original_handler_index);
+ JoinEntryInstr* after_try = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), original_handler_index);
for_try.Goto(after_try);
for_try.exit_ = after_try;
}
JoinEntryInstr* try_entry =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(), try_handler_index);
+ new (Z) JoinEntryInstr(owner()->AllocateBlockId(), try_handler_index);
Goto(try_entry);
AppendFragment(try_entry, for_try);
@@ -4299,8 +4034,8 @@ void EffectGraphVisitor::VisitTryCatchNode(TryCatchNode* node) {
// If there is a finally block, it is the handler for code in the catch
// block.
const intptr_t catch_handler_index = (finally_block == NULL)
- ? original_handler_index
- : catch_block->catch_handler_index();
+ ? original_handler_index
+ : catch_block->catch_handler_index();
const intptr_t prev_catch_try_index = owner()->catch_try_index();
@@ -4316,22 +4051,17 @@ void EffectGraphVisitor::VisitTryCatchNode(TryCatchNode* node) {
ASSERT(!catch_block->exception_var().is_captured());
ASSERT(!catch_block->stacktrace_var().is_captured());
- CatchBlockEntryInstr* catch_entry =
- new(Z) CatchBlockEntryInstr(owner()->AllocateBlockId(),
- catch_handler_index,
- owner()->graph_entry(),
- catch_block->handler_types(),
- try_handler_index,
- catch_block->exception_var(),
- catch_block->stacktrace_var(),
- catch_block->needs_stacktrace(),
- Thread::Current()->GetNextDeoptId());
+ CatchBlockEntryInstr* catch_entry = new (Z) CatchBlockEntryInstr(
+ owner()->AllocateBlockId(), catch_handler_index, owner()->graph_entry(),
+ catch_block->handler_types(), try_handler_index,
+ catch_block->exception_var(), catch_block->stacktrace_var(),
+ catch_block->needs_stacktrace(), Thread::Current()->GetNextDeoptId());
owner()->AddCatchEntry(catch_entry);
AppendFragment(catch_entry, for_catch);
if (for_catch.is_open()) {
- JoinEntryInstr* join = new(Z) JoinEntryInstr(owner()->AllocateBlockId(),
- original_handler_index);
+ JoinEntryInstr* join = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), original_handler_index);
for_catch.Goto(join);
if (is_open()) Goto(join);
exit_ = join;
@@ -4356,23 +4086,18 @@ void EffectGraphVisitor::VisitTryCatchNode(TryCatchNode* node) {
catch_block->rethrow_stacktrace_var(), finally_block->token_pos()));
for_finally.PushArgument(stacktrace);
for_finally.AddInstruction(
- new(Z) ReThrowInstr(catch_block->token_pos(), catch_handler_index));
+ new (Z) ReThrowInstr(catch_block->token_pos(), catch_handler_index));
for_finally.CloseFragment();
}
ASSERT(!for_finally.is_open());
const Array& types = Array::ZoneHandle(Z, Array::New(1, Heap::kOld));
types.SetAt(0, Object::dynamic_type());
- CatchBlockEntryInstr* finally_entry =
- new(Z) CatchBlockEntryInstr(owner()->AllocateBlockId(),
- original_handler_index,
- owner()->graph_entry(),
- types,
- catch_handler_index,
- catch_block->exception_var(),
- catch_block->stacktrace_var(),
- catch_block->needs_stacktrace(),
- Thread::Current()->GetNextDeoptId());
+ CatchBlockEntryInstr* finally_entry = new (Z) CatchBlockEntryInstr(
+ owner()->AllocateBlockId(), original_handler_index,
+ owner()->graph_entry(), types, catch_handler_index,
+ catch_block->exception_var(), catch_block->stacktrace_var(),
+ catch_block->needs_stacktrace(), Thread::Current()->GetNextDeoptId());
owner()->AddCatchEntry(finally_entry);
AppendFragment(finally_entry, for_finally);
}
@@ -4400,39 +4125,30 @@ StaticCallInstr* EffectGraphVisitor::BuildStaticNoSuchMethodCall(
if (save_last_arg) {
temp = owner()->parsed_function().expression_temp_var();
}
- ArgumentListNode* args =
- Parser::BuildNoSuchMethodArguments(args_pos,
- method_name,
- *method_arguments,
- temp,
- is_super_invocation);
+ ArgumentListNode* args = Parser::BuildNoSuchMethodArguments(
+ args_pos, method_name, *method_arguments, temp, is_super_invocation);
// Make sure we resolve to a compatible noSuchMethod, otherwise call
// noSuchMethod of class Object.
const int kNumArguments = 2;
ArgumentsDescriptor args_desc(
Array::ZoneHandle(Z, ArgumentsDescriptor::New(kNumArguments)));
- Function& no_such_method_func = Function::ZoneHandle(Z,
- Resolver::ResolveDynamicForReceiverClass(target_class,
- Symbols::NoSuchMethod(),
- args_desc));
+ Function& no_such_method_func = Function::ZoneHandle(
+ Z, Resolver::ResolveDynamicForReceiverClass(
+ target_class, Symbols::NoSuchMethod(), args_desc));
if (no_such_method_func.IsNull()) {
const Class& object_class =
Class::ZoneHandle(Z, isolate()->object_store()->object_class());
- no_such_method_func =
- Resolver::ResolveDynamicForReceiverClass(object_class,
- Symbols::NoSuchMethod(),
- args_desc);
+ no_such_method_func = Resolver::ResolveDynamicForReceiverClass(
+ object_class, Symbols::NoSuchMethod(), args_desc);
}
// We are guaranteed to find noSuchMethod of class Object.
ASSERT(!no_such_method_func.IsNull());
ZoneGrowableArray<PushArgumentInstr*>* push_arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(2);
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
BuildPushArguments(*args, push_arguments);
- return new(Z) StaticCallInstr(args_pos,
- no_such_method_func,
- Object::null_array(),
- push_arguments,
- owner()->ic_data_array());
+ return new (Z)
+ StaticCallInstr(args_pos, no_such_method_func, Object::null_array(),
+ push_arguments, owner()->ic_data_array());
}
@@ -4443,43 +4159,41 @@ StaticCallInstr* EffectGraphVisitor::BuildThrowNoSuchMethodError(
ArgumentListNode* function_arguments,
int invocation_type) {
ZoneGrowableArray<PushArgumentInstr*>* arguments =
- new(Z) ZoneGrowableArray<PushArgumentInstr*>();
+ new (Z) ZoneGrowableArray<PushArgumentInstr*>();
// Object receiver, actually a class literal of the unresolved method's owner.
AbstractType& type = Type::ZoneHandle(
Z,
- Type::New(function_class,
- TypeArguments::Handle(Z, TypeArguments::null()),
- token_pos,
- Heap::kOld));
- type ^= ClassFinalizer::FinalizeType(
- function_class, type, ClassFinalizer::kCanonicalize);
- Value* receiver_value = Bind(new(Z) ConstantInstr(type));
+ Type::New(function_class, TypeArguments::Handle(Z, TypeArguments::null()),
+ token_pos, Heap::kOld));
+ type ^= ClassFinalizer::FinalizeType(function_class, type,
+ ClassFinalizer::kCanonicalize);
+ Value* receiver_value = Bind(new (Z) ConstantInstr(type));
arguments->Add(PushArgument(receiver_value));
// String memberName.
const String& member_name =
String::ZoneHandle(Z, Symbols::New(T, function_name));
- Value* member_name_value = Bind(new(Z) ConstantInstr(member_name));
+ Value* member_name_value = Bind(new (Z) ConstantInstr(member_name));
arguments->Add(PushArgument(member_name_value));
// Smi invocation_type.
- Value* invocation_type_value = Bind(new(Z) ConstantInstr(
- Smi::ZoneHandle(Z, Smi::New(invocation_type))));
+ Value* invocation_type_value = Bind(
+ new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(invocation_type))));
arguments->Add(PushArgument(invocation_type_value));
// List arguments.
if (function_arguments == NULL) {
- Value* arguments_value = Bind(
- new(Z) ConstantInstr(Array::ZoneHandle(Z, Array::null())));
+ Value* arguments_value =
+ Bind(new (Z) ConstantInstr(Array::ZoneHandle(Z, Array::null())));
arguments->Add(PushArgument(arguments_value));
} else {
ValueGraphVisitor array_val(owner());
ArrayNode* array =
- new(Z) ArrayNode(token_pos, Type::ZoneHandle(Z, Type::ArrayType()),
- function_arguments->nodes());
+ new (Z) ArrayNode(token_pos, Type::ZoneHandle(Z, Type::ArrayType()),
+ function_arguments->nodes());
array->Visit(&array_val);
Append(array_val);
arguments->Add(PushArgument(array_val.value()));
}
// List argumentNames.
- ConstantInstr* cinstr = new(Z) ConstantInstr(
+ ConstantInstr* cinstr = new (Z) ConstantInstr(
(function_arguments == NULL) ? Array::ZoneHandle(Z, Array::null())
: function_arguments->names());
Value* argument_names_value = Bind(cinstr);
@@ -4487,25 +4201,21 @@ StaticCallInstr* EffectGraphVisitor::BuildThrowNoSuchMethodError(
// List existingArgumentNames.
Value* existing_argument_names_value =
- Bind(new(Z) ConstantInstr(Array::ZoneHandle(Z, Array::null())));
+ Bind(new (Z) ConstantInstr(Array::ZoneHandle(Z, Array::null())));
arguments->Add(PushArgument(existing_argument_names_value));
// Resolve and call NoSuchMethodError._throwNew.
const Library& core_lib = Library::Handle(Z, Library::CoreLibrary());
- const Class& cls = Class::Handle(
- Z, core_lib.LookupClass(Symbols::NoSuchMethodError()));
+ const Class& cls =
+ Class::Handle(Z, core_lib.LookupClass(Symbols::NoSuchMethodError()));
ASSERT(!cls.IsNull());
const Function& func = Function::ZoneHandle(
- Z,
- Resolver::ResolveStatic(cls,
- Library::PrivateCoreLibName(Symbols::ThrowNew()),
- arguments->length(),
- Object::null_array()));
+ Z, Resolver::ResolveStatic(
+ cls, Library::PrivateCoreLibName(Symbols::ThrowNew()),
+ arguments->length(), Object::null_array()));
ASSERT(!func.IsNull());
- return new(Z) StaticCallInstr(token_pos,
- func,
- Object::null_array(), // No names.
- arguments,
- owner()->ic_data_array());
+ return new (Z) StaticCallInstr(token_pos, func,
+ Object::null_array(), // No names.
+ arguments, owner()->ic_data_array());
}
@@ -4514,7 +4224,7 @@ void EffectGraphVisitor::BuildThrowNode(ThrowNode* node) {
if (node->exception()->IsLiteralNode() ||
node->exception()->IsLoadLocalNode() ||
node->exception()->IsClosureNode()) {
- AddInstruction(new(Z) DebugStepCheckInstr(
+ AddInstruction(new (Z) DebugStepCheckInstr(
node->token_pos(), RawPcDescriptors::kRuntimeCall));
}
}
@@ -4524,13 +4234,13 @@ void EffectGraphVisitor::BuildThrowNode(ThrowNode* node) {
PushArgument(for_exception.value());
Instruction* instr = NULL;
if (node->stacktrace() == NULL) {
- instr = new(Z) ThrowInstr(node->token_pos());
+ instr = new (Z) ThrowInstr(node->token_pos());
} else {
ValueGraphVisitor for_stack_trace(owner());
node->stacktrace()->Visit(&for_stack_trace);
Append(for_stack_trace);
PushArgument(for_stack_trace.value());
- instr = new(Z) ReThrowInstr(node->token_pos(), owner()->catch_try_index());
+ instr = new (Z) ReThrowInstr(node->token_pos(), owner()->catch_try_index());
}
AddInstruction(instr);
}
@@ -4547,8 +4257,8 @@ void EffectGraphVisitor::VisitThrowNode(ThrowNode* node) {
// so that the fragment is not closed in the middle of an expression.
void ValueGraphVisitor::VisitThrowNode(ThrowNode* node) {
BuildThrowNode(node);
- ReturnDefinition(new(Z) ConstantInstr(
- Instance::ZoneHandle(Z, Instance::null())));
+ ReturnDefinition(
+ new (Z) ConstantInstr(Instance::ZoneHandle(Z, Instance::null())));
}
@@ -4570,7 +4280,7 @@ void EffectGraphVisitor::VisitInlinedFinallyNode(InlinedFinallyNode* node) {
// context variable.
JoinEntryInstr* finally_entry =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
+ new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
EffectGraphVisitor for_finally_block(owner());
for_finally_block.AdjustContextLevel(node->finally_block()->scope());
node->finally_block()->Visit(&for_finally_block);
@@ -4580,8 +4290,8 @@ void EffectGraphVisitor::VisitInlinedFinallyNode(InlinedFinallyNode* node) {
}
if (for_finally_block.is_open()) {
- JoinEntryInstr* after_finally =
- new(Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
+ JoinEntryInstr* after_finally = new (Z)
+ JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index());
for_finally_block.Goto(after_finally);
for_finally_block.exit_ = after_finally;
}
@@ -4593,13 +4303,12 @@ void EffectGraphVisitor::VisitInlinedFinallyNode(InlinedFinallyNode* node) {
void EffectGraphVisitor::VisitStopNode(StopNode* node) {
- AddInstruction(new(Z) StopInstr(node->message()));
+ AddInstruction(new (Z) StopInstr(node->message()));
}
FlowGraph* FlowGraphBuilder::BuildGraph() {
- VMTagScope tagScope(thread(),
- VMTag::kCompileFlowGraphBuilderTagId,
+ VMTagScope tagScope(thread(), VMTag::kCompileFlowGraphBuilderTagId,
FLAG_profile_vm);
if (FLAG_support_ast_printer && FLAG_print_ast) {
// Print the function ast before IL generation.
@@ -4610,11 +4319,10 @@ FlowGraph* FlowGraphBuilder::BuildGraph() {
AstPrinter ast_printer;
ast_printer.PrintFunctionScope(parsed_function());
}
- TargetEntryInstr* normal_entry =
- new(Z) TargetEntryInstr(AllocateBlockId(),
- CatchClauseNode::kInvalidTryIndex);
+ TargetEntryInstr* normal_entry = new (Z)
+ TargetEntryInstr(AllocateBlockId(), CatchClauseNode::kInvalidTryIndex);
graph_entry_ =
- new(Z) GraphEntryInstr(parsed_function(), normal_entry, osr_id_);
+ new (Z) GraphEntryInstr(parsed_function(), normal_entry, osr_id_);
EffectGraphVisitor for_effect(this);
parsed_function().node_sequence()->Visit(&for_effect);
AppendFragment(normal_entry, for_effect);
@@ -4629,16 +4337,16 @@ FlowGraph* FlowGraphBuilder::BuildGraph() {
}
FlowGraph* graph =
- new(Z) FlowGraph(parsed_function(), graph_entry_, last_used_block_id_);
+ new (Z) FlowGraph(parsed_function(), graph_entry_, last_used_block_id_);
return graph;
}
void FlowGraphBuilder::PruneUnreachable() {
ASSERT(osr_id_ != Compiler::kNoOSRDeoptId);
- BitVector* block_marks = new(Z) BitVector(Z, last_used_block_id_ + 1);
- bool found = graph_entry_->PruneUnreachable(graph_entry_, NULL, osr_id_,
- block_marks);
+ BitVector* block_marks = new (Z) BitVector(Z, last_used_block_id_ + 1);
+ bool found =
+ graph_entry_->PruneUnreachable(graph_entry_, NULL, osr_id_, block_marks);
ASSERT(found);
}
« no previous file with comments | « runtime/vm/flow_graph_builder.h ('k') | runtime/vm/flow_graph_builder_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698