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

Unified Diff: vm/flow_graph_builder.cc

Issue 10632009: Make the parser agnostic to the TokenStream implementation. This is the first step towards compacti… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « vm/flow_graph_builder.h ('k') | vm/flow_graph_compiler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/flow_graph_builder.cc
===================================================================
--- vm/flow_graph_builder.cc (revision 9042)
+++ vm/flow_graph_builder.cc (working copy)
@@ -221,7 +221,7 @@
void TestGraphVisitor::ReturnValue(Value* value) {
if (FLAG_enable_type_checks) {
BindInstr* assert_boolean =
- new BindInstr(new AssertBooleanComp(condition_token_index(),
+ new BindInstr(new AssertBooleanComp(condition_token_pos(),
owner()->try_index(),
value));
AddInstruction(assert_boolean);
@@ -269,7 +269,7 @@
owner()->parsed_function().function().result_type());
const String& dst_name =
String::ZoneHandle(String::NewSymbol("function result"));
- return_value = BuildAssignableValue(node->value()->token_index(),
+ return_value = BuildAssignableValue(node->value()->token_pos(),
return_value,
dst_type,
dst_name);
@@ -288,7 +288,7 @@
}
AddInstruction(
- new ReturnInstr(node->token_index(), return_value));
+ new ReturnInstr(node->token_pos(), return_value));
CloseFragment();
}
@@ -394,7 +394,7 @@
ValueGraphVisitor for_value(owner(), temp_index());
node->expr()->Visit(&for_value);
Append(for_value);
- ReturnValue(BuildAssignableValue(node->expr()->token_index(),
+ ReturnValue(BuildAssignableValue(node->expr()->token_pos(),
for_value.value(),
node->type(),
node->dst_name()));
@@ -411,7 +411,7 @@
// See ValueGraphVisitor::VisitBinaryOpNode.
TestGraphVisitor for_left(owner(),
temp_index(),
- node->left()->token_index());
+ node->left()->token_pos());
node->left()->Visit(&for_left);
EffectGraphVisitor for_right(owner(), temp_index());
node->right()->Visit(&for_right);
@@ -433,7 +433,7 @@
arguments->Add(for_left_value.value());
arguments->Add(for_right_value.value());
const String& name = String::ZoneHandle(String::NewSymbol(node->Name()));
- InstanceCallComp* call = new InstanceCallComp(node->token_index(),
+ InstanceCallComp* call = new InstanceCallComp(node->token_pos(),
owner()->try_index(),
name,
node->kind(),
@@ -458,7 +458,7 @@
TestGraphVisitor for_test(owner(),
temp_index(),
- node->left()->token_index());
+ node->left()->token_pos());
node->left()->Visit(&for_test);
ValueGraphVisitor for_right(owner(), temp_index());
@@ -466,7 +466,7 @@
Value* right_value = for_right.value();
if (FLAG_enable_type_checks) {
BindInstr* assert_boolean =
- new BindInstr(new AssertBooleanComp(node->right()->token_index(),
+ new BindInstr(new AssertBooleanComp(node->right()->token_pos(),
owner()->try_index(),
right_value));
for_right.AddInstruction(assert_boolean);
@@ -576,11 +576,11 @@
}
// Runtime string interpolation.
ZoneGrowableArray<Value*>* values = new ZoneGrowableArray<Value*>();
- ArgumentListNode* interpol_arg = new ArgumentListNode(node->token_index());
+ ArgumentListNode* interpol_arg = new ArgumentListNode(node->token_pos());
interpol_arg->Add(node->values());
TranslateArgumentList(*interpol_arg, values);
StaticCallComp* call =
- new StaticCallComp(node->token_index(),
+ new StaticCallComp(node->token_pos(),
owner()->try_index(),
interpol_func,
interpol_arg->names(),
@@ -590,7 +590,7 @@
void EffectGraphVisitor::BuildTypecheckArguments(
- intptr_t token_index,
+ intptr_t token_pos,
Value** instantiator_result,
Value** instantiator_type_arguments_result) {
Value* instantiator = NULL;
@@ -604,7 +604,7 @@
// No instantiator when inside factory.
instantiator = BuildNullValue();
instantiator_type_arguments =
- BuildInstantiatorTypeArguments(token_index, NULL);
+ BuildInstantiatorTypeArguments(token_pos, NULL);
} else {
// Preserve instantiator.
const LocalVariable& expr_temp =
@@ -616,7 +616,7 @@
BindInstr* loaded = new BindInstr(BuildLoadLocal(expr_temp));
AddInstruction(loaded);
instantiator_type_arguments =
- BuildInstantiatorTypeArguments(token_index, new UseVal(loaded));
+ BuildInstantiatorTypeArguments(token_pos, new UseVal(loaded));
}
*instantiator_result = instantiator;
*instantiator_type_arguments_result = instantiator_type_arguments;
@@ -632,7 +632,7 @@
// Used for testing incoming arguments.
AssertAssignableComp* EffectGraphVisitor::BuildAssertAssignable(
- intptr_t token_index,
+ intptr_t token_pos,
Value* value,
const AbstractType& dst_type,
const String& dst_name) {
@@ -643,11 +643,11 @@
instantiator = BuildNullValue();
instantiator_type_arguments = BuildNullValue();
} else {
- BuildTypecheckArguments(token_index,
+ BuildTypecheckArguments(token_pos,
&instantiator,
&instantiator_type_arguments);
}
- return new AssertAssignableComp(token_index,
+ return new AssertAssignableComp(token_pos,
owner()->try_index(),
value,
instantiator,
@@ -658,14 +658,14 @@
// Used to to test assignments.
-Value* EffectGraphVisitor::BuildAssignableValue(intptr_t token_index,
+Value* EffectGraphVisitor::BuildAssignableValue(intptr_t token_pos,
Value* value,
const AbstractType& dst_type,
const String& dst_name) {
if (CanSkipTypeCheck(value, dst_type)) {
return value;
}
- AssertAssignableComp* comp = BuildAssertAssignable(token_index,
+ AssertAssignableComp* comp = BuildAssertAssignable(token_pos,
value,
dst_type,
dst_name);
@@ -741,12 +741,12 @@
instantiator = BuildNullValue();
instantiator_type_arguments = BuildNullValue();
} else {
- BuildTypecheckArguments(node->token_index(),
+ BuildTypecheckArguments(node->token_pos(),
&instantiator,
&instantiator_type_arguments);
}
InstanceOfComp* instance_of =
- new InstanceOfComp(node->token_index(),
+ new InstanceOfComp(node->token_pos(),
owner()->try_index(),
for_left_value.value(),
instantiator,
@@ -788,7 +788,7 @@
node->right()->Visit(&for_right_value);
Append(for_right_value);
EqualityCompareComp* comp = new EqualityCompareComp(
- node->token_index(), owner()->try_index(),
+ node->token_pos(), owner()->try_index(),
for_left_value.value(), for_right_value.value());
if (node->kind() == Token::kEQ) {
ReturnComputation(comp);
@@ -797,7 +797,7 @@
AddInstruction(eq_result);
if (FLAG_enable_type_checks) {
eq_result =
- new BindInstr(new AssertBooleanComp(node->token_index(),
+ new BindInstr(new AssertBooleanComp(node->token_pos(),
owner()->try_index(),
new UseVal(eq_result)));
AddInstruction(eq_result);
@@ -814,7 +814,7 @@
ValueGraphVisitor for_right_value(owner(), temp_index());
node->right()->Visit(&for_right_value);
Append(for_right_value);
- RelationalOpComp* comp = new RelationalOpComp(node->token_index(),
+ RelationalOpComp* comp = new RelationalOpComp(node->token_pos(),
owner()->try_index(),
node->kind(),
for_left_value.value(),
@@ -832,7 +832,7 @@
Value* value = for_value.value();
if (FLAG_enable_type_checks) {
BindInstr* assert_boolean =
- new BindInstr(new AssertBooleanComp(node->operand()->token_index(),
+ new BindInstr(new AssertBooleanComp(node->operand()->token_pos(),
owner()->try_index(),
value));
AddInstruction(assert_boolean);
@@ -853,7 +853,7 @@
const String& name =
String::ZoneHandle(String::NewSymbol(Token::Str(token_kind)));
InstanceCallComp* call = new InstanceCallComp(
- node->token_index(), owner()->try_index(), name, token_kind,
+ node->token_pos(), owner()->try_index(), name, token_kind,
arguments, Array::ZoneHandle(), 1);
ReturnComputation(call);
}
@@ -862,7 +862,7 @@
void EffectGraphVisitor::VisitConditionalExprNode(ConditionalExprNode* node) {
TestGraphVisitor for_test(owner(),
temp_index(),
- node->condition()->token_index());
+ node->condition()->token_pos());
node->condition()->Visit(&for_test);
// Translate the subexpressions for their effects.
@@ -878,7 +878,7 @@
void ValueGraphVisitor::VisitConditionalExprNode(ConditionalExprNode* node) {
TestGraphVisitor for_test(owner(),
temp_index(),
- node->condition()->token_index());
+ node->condition()->token_pos());
node->condition()->Visit(&for_test);
ValueGraphVisitor for_true(owner(), temp_index());
@@ -905,7 +905,7 @@
void EffectGraphVisitor::VisitIfNode(IfNode* node) {
TestGraphVisitor for_test(owner(),
temp_index(),
- node->condition()->token_index());
+ node->condition()->token_pos());
node->condition()->Visit(&for_test);
EffectGraphVisitor for_true(owner(), temp_index());
@@ -995,7 +995,7 @@
AstNode* case_expr = node->case_expressions()->NodeAt(i);
TestGraphVisitor for_case_expression(owner(),
temp_index(),
- case_expr->token_index());
+ case_expr->token_pos());
if (i == 0) {
case_entries.Add(NULL); // Not to be used
case_expr->Visit(&for_case_expression);
@@ -1077,13 +1077,13 @@
void EffectGraphVisitor::VisitWhileNode(WhileNode* node) {
TestGraphVisitor for_test(owner(),
temp_index(),
- node->condition()->token_index());
+ node->condition()->token_pos());
node->condition()->Visit(&for_test);
ASSERT(!for_test.is_empty()); // Language spec.
EffectGraphVisitor for_body(owner(), temp_index());
CheckStackOverflowComp* comp =
- new CheckStackOverflowComp(node->token_index(), owner()->try_index());
+ new CheckStackOverflowComp(node->token_pos(), owner()->try_index());
for_body.AddInstruction(new DoInstr(comp));
node->body()->Visit(&for_body);
@@ -1112,13 +1112,13 @@
// Traverse body first in order to generate continue and break labels.
EffectGraphVisitor for_body(owner(), temp_index());
CheckStackOverflowComp* comp =
- new CheckStackOverflowComp(node->token_index(), owner()->try_index());
+ new CheckStackOverflowComp(node->token_pos(), owner()->try_index());
for_body.AddInstruction(new DoInstr(comp));
node->body()->Visit(&for_body);
TestGraphVisitor for_test(owner(),
temp_index(),
- node->condition()->token_index());
+ node->condition()->token_pos());
node->condition()->Visit(&for_test);
ASSERT(is_open());
@@ -1179,7 +1179,7 @@
TargetEntryInstr* body_entry = new TargetEntryInstr();
for_body.AddInstruction(body_entry);
CheckStackOverflowComp* comp =
- new CheckStackOverflowComp(node->token_index(), owner()->try_index());
+ new CheckStackOverflowComp(node->token_pos(), owner()->try_index());
for_body.AddInstruction(new DoInstr(comp));
node->body()->Visit(&for_body);
@@ -1229,7 +1229,7 @@
TargetEntryInstr* loop_exit = new TargetEntryInstr();
TestGraphVisitor for_test(owner(),
temp_index(),
- node->condition()->token_index());
+ node->condition()->token_pos());
node->condition()->Visit(&for_test);
Append(for_test);
*for_test.true_successor_address() = body_entry;
@@ -1313,9 +1313,9 @@
values->Add(for_value.value());
}
Value* element_type = new UseVal(
- BuildInstantiatedTypeArguments(node->token_index(),
+ BuildInstantiatedTypeArguments(node->token_pos(),
node->type_arguments()));
- CreateArrayComp* create = new CreateArrayComp(node->token_index(),
+ CreateArrayComp* create = new CreateArrayComp(node->token_pos(),
owner()->try_index(),
values,
element_type);
@@ -1356,7 +1356,7 @@
Value* type_arguments = NULL;
if (requires_type_arguments) {
ASSERT(!function.IsImplicitStaticClosureFunction());
- type_arguments = BuildInstantiatorTypeArguments(node->token_index(), NULL);
+ type_arguments = BuildInstantiatorTypeArguments(node->token_pos(), NULL);
} else {
type_arguments = BuildNullValue();
}
@@ -1390,7 +1390,7 @@
TranslateArgumentList(*arguments, values);
InstanceCallComp* call = new InstanceCallComp(
- node->token_index(), owner()->try_index(),
+ node->token_pos(), owner()->try_index(),
node->function_name(), Token::kILLEGAL, values,
arguments->names(), 1);
ReturnComputation(call);
@@ -1404,7 +1404,7 @@
ZoneGrowableArray<Value*>* values = new ZoneGrowableArray<Value*>(length);
TranslateArgumentList(*node->arguments(), values);
StaticCallComp* call =
- new StaticCallComp(node->token_index(),
+ new StaticCallComp(node->token_pos(),
owner()->try_index(),
node->function(),
node->arguments()->names(),
@@ -1455,7 +1455,7 @@
BindInstr* context = new BindInstr(new CurrentContextComp());
AddInstruction(context);
BindInstr* clone =
- new BindInstr(new CloneContextComp(node->token_index(),
+ new BindInstr(new CloneContextComp(node->token_pos(),
owner()->try_index(),
new UseVal(context)));
AddInstruction(clone);
@@ -1516,7 +1516,7 @@
TranslateArgumentList(*node->arguments(), values);
StaticCallComp* call =
- new StaticCallComp(node->token_index(),
+ new StaticCallComp(node->token_pos(),
owner()->try_index(),
node->constructor(),
node->arguments()->names(),
@@ -1530,12 +1530,12 @@
ZoneGrowableArray<Value*>* factory_arguments =
new ZoneGrowableArray<Value*>();
factory_arguments->Add(
- new UseVal(BuildInstantiatedTypeArguments(node->token_index(),
+ new UseVal(BuildInstantiatedTypeArguments(node->token_pos(),
node->type_arguments())));
ASSERT(factory_arguments->length() == 1);
TranslateArgumentList(*node->arguments(), factory_arguments);
StaticCallComp* call =
- new StaticCallComp(node->token_index(),
+ new StaticCallComp(node->token_pos(),
owner()->try_index(),
node->constructor(),
node->arguments()->names(),
@@ -1580,7 +1580,7 @@
// 'expression_temp_var' may not be used inside this method if 'instantiator'
// is not NULL.
Value* EffectGraphVisitor::BuildInstantiatorTypeArguments(
- intptr_t token_index, Value* instantiator) {
+ intptr_t token_pos, Value* instantiator) {
const Class& instantiator_class = Class::Handle(
owner()->parsed_function().function().owner());
if (instantiator_class.NumTypeParameters() == 0) {
@@ -1588,7 +1588,7 @@
AbstractTypeArguments& type_arguments = AbstractTypeArguments::ZoneHandle();
// TODO(regis): Temporary type should be allocated in new gen heap.
Type& type = Type::Handle(
- Type::New(instantiator_class, type_arguments, token_index));
+ Type::New(instantiator_class, type_arguments, token_pos));
type ^= ClassFinalizer::FinalizeType(
instantiator_class, type, ClassFinalizer::kFinalizeWellFormed);
type_arguments = type.arguments();
@@ -1632,7 +1632,7 @@
BindInstr* EffectGraphVisitor::BuildInstantiatedTypeArguments(
- intptr_t token_index,
+ intptr_t token_pos,
const AbstractTypeArguments& type_arguments) {
if (type_arguments.IsNull() || type_arguments.IsInstantiated()) {
BindInstr* type_args =
@@ -1642,9 +1642,9 @@
}
// The type arguments are uninstantiated.
Value* instantiator_value =
- BuildInstantiatorTypeArguments(token_index, NULL);
+ BuildInstantiatorTypeArguments(token_pos, NULL);
BindInstr* instantiate =
- new BindInstr(new InstantiateTypeArgumentsComp(token_index,
+ new BindInstr(new InstantiateTypeArgumentsComp(token_pos,
owner()->try_index(),
type_arguments,
instantiator_value));
@@ -1685,7 +1685,7 @@
const LocalVariable& t1 = *owner()->parsed_function().expression_temp_var();
const LocalVariable& t2 = node->allocated_object_var();
Value* instantiator_type_arguments = BuildInstantiatorTypeArguments(
- node->token_index(), NULL);
+ node->token_pos(), NULL);
ASSERT(instantiator_type_arguments->IsUse());
BindInstr* stored_instantiator = new BindInstr(
BuildStoreLocal(t1, instantiator_type_arguments));
@@ -1694,7 +1694,7 @@
BindInstr* extract_type_arguments = new BindInstr(
new ExtractConstructorTypeArgumentsComp(
- node->token_index(),
+ node->token_pos(),
owner()->try_index(),
node->type_arguments(),
new UseVal(stored_instantiator)));
@@ -1763,7 +1763,7 @@
const String& name =
String::ZoneHandle(Field::GetterSymbol(node->field_name()));
InstanceCallComp* call = new InstanceCallComp(
- node->token_index(), owner()->try_index(), name, Token::kGET,
+ node->token_pos(), owner()->try_index(), name, Token::kGET,
arguments, Array::ZoneHandle(), 1);
ReturnComputation(call);
}
@@ -1786,7 +1786,7 @@
Value *receiver, *value;
BuildInstanceSetterValues(node, &receiver, &value);
InstanceSetterComp* setter =
- new InstanceSetterComp(node->token_index(),
+ new InstanceSetterComp(node->token_pos(),
owner()->try_index(),
node->field_name(),
receiver,
@@ -1804,7 +1804,7 @@
AddInstruction(store_local_instr);
UseVal* saved_value = new UseVal(store_local_instr);
InstanceSetterComp* setter =
- new InstanceSetterComp(node->token_index(),
+ new InstanceSetterComp(node->token_pos(),
owner()->try_index(),
node->field_name(),
receiver,
@@ -1822,7 +1822,7 @@
Function::ZoneHandle(node->cls().LookupStaticFunction(getter_name));
ASSERT(!getter_function.IsNull());
ZoneGrowableArray<Value*>* values = new ZoneGrowableArray<Value*>();
- StaticCallComp* call = new StaticCallComp(node->token_index(),
+ StaticCallComp* call = new StaticCallComp(node->token_pos(),
owner()->try_index(),
getter_function,
Array::ZoneHandle(), // No names.
@@ -1840,7 +1840,7 @@
ValueGraphVisitor for_value(owner(), temp_index());
node->value()->Visit(&for_value);
Append(for_value);
- StaticSetterComp* call = new StaticSetterComp(node->token_index(),
+ StaticSetterComp* call = new StaticSetterComp(node->token_pos(),
owner()->try_index(),
setter_function,
for_value.value());
@@ -1886,7 +1886,7 @@
Append(for_value);
Value* store_value = for_value.value();
if (FLAG_enable_type_checks) {
- store_value = BuildAssignableValue(node->value()->token_index(),
+ store_value = BuildAssignableValue(node->value()->token_pos(),
store_value,
node->local().type(),
node->local().name());
@@ -1919,7 +1919,7 @@
if (FLAG_enable_type_checks) {
const AbstractType& type = AbstractType::ZoneHandle(node->field().type());
const String& dst_name = String::ZoneHandle(node->field().name());
- store_value = BuildAssignableValue(node->value()->token_index(),
+ store_value = BuildAssignableValue(node->value()->token_pos(),
store_value,
type,
dst_name);
@@ -1951,7 +1951,7 @@
if (FLAG_enable_type_checks) {
const AbstractType& type = AbstractType::ZoneHandle(node->field().type());
const String& dst_name = String::ZoneHandle(node->field().name());
- store_value = BuildAssignableValue(node->value()->token_index(),
+ store_value = BuildAssignableValue(node->value()->token_pos(),
store_value,
type,
dst_name);
@@ -1971,7 +1971,7 @@
Append(for_index);
LoadIndexedComp* load = new LoadIndexedComp(
- node->token_index(),
+ node->token_pos(),
owner()->try_index(),
for_array.value(),
for_index.value());
@@ -1999,7 +1999,7 @@
void EffectGraphVisitor::VisitStoreIndexedNode(StoreIndexedNode* node) {
Value *array, *index, *value;
BuildStoreIndexedValues(node, &array, &index, &value);
- StoreIndexedComp* store = new StoreIndexedComp(node->token_index(),
+ StoreIndexedComp* store = new StoreIndexedComp(node->token_pos(),
owner()->try_index(),
array,
index,
@@ -2016,7 +2016,7 @@
value));
AddInstruction(store_local_instr);
UseVal* saved_value = new UseVal(store_local_instr);
- StoreIndexedComp* store = new StoreIndexedComp(node->token_index(),
+ StoreIndexedComp* store = new StoreIndexedComp(node->token_pos(),
owner()->try_index(),
array,
index,
@@ -2060,7 +2060,7 @@
// Allocate and chain a new context.
// Allocate context computation (uses current CTX)
BindInstr* allocated_context =
- new BindInstr(new AllocateContextComp(node->token_index(),
+ new BindInstr(new AllocateContextComp(node->token_pos(),
owner()->try_index(),
num_context_variables));
AddInstruction(allocated_context);
@@ -2150,7 +2150,7 @@
BindInstr* load = new BindInstr(BuildLoadLocal(parameter));
AddInstruction(load);
AssertAssignableComp* assert_assignable =
- BuildAssertAssignable(parameter.token_index(),
+ BuildAssertAssignable(parameter.token_pos(),
new UseVal(load),
parameter.type(),
parameter.name());
@@ -2268,14 +2268,14 @@
Append(for_exception);
Instruction* instr = NULL;
if (node->stacktrace() == NULL) {
- instr = new ThrowInstr(node->token_index(),
+ instr = new ThrowInstr(node->token_pos(),
owner()->try_index(),
for_exception.value());
} else {
ValueGraphVisitor for_stack_trace(owner(), temp_index());
node->stacktrace()->Visit(&for_stack_trace);
Append(for_stack_trace);
- instr = new ReThrowInstr(node->token_index(),
+ instr = new ReThrowInstr(node->token_pos(),
owner()->try_index(),
for_exception.value(),
for_stack_trace.value());
« no previous file with comments | « vm/flow_graph_builder.h ('k') | vm/flow_graph_compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698