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

Unified Diff: runtime/vm/code_generator_ia32.cc

Issue 9460012: StepOver, StepInto, StepOut (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 10 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
Index: runtime/vm/code_generator_ia32.cc
===================================================================
--- runtime/vm/code_generator_ia32.cc (revision 4191)
+++ runtime/vm/code_generator_ia32.cc (working copy)
@@ -792,7 +792,7 @@
// in breakpoints during debugging.
__ nop(1);
AddCurrentDescriptor(PcDescriptors::kReturn,
- AstNode::kNoId,
+ node->id(),
node->token_index());
#ifdef DEBUG
@@ -900,7 +900,7 @@
const Code& stub = Code::Handle(
StubCode::GetAllocationStubForClosure(function));
const ExternalLabel label(function.ToCString(), stub.EntryPoint());
- GenerateCall(node->token_index(), &label);
+ GenerateCall(node->token_index(), &label, PcDescriptors::kOther);
if (requires_type_arguments) {
__ popl(ECX); // Pop type arguments.
}
@@ -942,7 +942,7 @@
__ movl(EDX, Immediate(num_context_variables));
const ExternalLabel label("alloc_context",
StubCode::AllocateContextEntryPoint());
- GenerateCall(node_sequence->token_index(), &label);
+ GenerateCall(node_sequence->token_index(), &label, PcDescriptors::kOther);
// Chain the new context in EAX to its parent in CTX.
__ StoreIntoObject(EAX, FieldAddress(EAX, Context::parent_offset()), CTX);
@@ -1019,7 +1019,9 @@
const AbstractTypeArguments& element_type = node->type_arguments();
ASSERT(element_type.IsNull() || element_type.IsInstantiated());
__ LoadObject(ECX, element_type);
- GenerateCall(node->token_index(), &StubCode::AllocateArrayLabel());
+ GenerateCall(node->token_index(),
+ &StubCode::AllocateArrayLabel(),
+ PcDescriptors::kOther);
// Pop the element values from the stack into the array.
__ leal(ECX, FieldAddress(EAX, Array::data_offset()));
@@ -2224,7 +2226,9 @@
__ LoadObject(ECX, interpol_func);
__ LoadObject(EDX, ArgumentsDescriptor(interpol_arg->length(),
interpol_arg->names()));
- GenerateCall(node->token_index(), &StubCode::CallStaticFunctionLabel());
+ GenerateCall(node->token_index(),
+ &StubCode::CallStaticFunctionLabel(),
+ PcDescriptors::kFuncCall);
__ addl(ESP, Immediate(interpol_arg->length() * kWordSize));
// Result is in EAX.
if (IsResultNeeded(node)) {
@@ -2261,7 +2265,9 @@
__ LoadObject(ECX, node->function());
__ LoadObject(EDX, ArgumentsDescriptor(node->arguments()->length(),
node->arguments()->names()));
- GenerateCall(node->token_index(), &StubCode::CallStaticFunctionLabel());
+ GenerateCall(node->token_index(),
+ &StubCode::CallStaticFunctionLabel(),
+ PcDescriptors::kFuncCall);
__ addl(ESP, Immediate(node->arguments()->length() * kWordSize));
// Result is in EAX.
if (IsResultNeeded(node)) {
@@ -2286,7 +2292,9 @@
// NOTE: The stub accesses the closure before the parameter list.
__ LoadObject(EDX, ArgumentsDescriptor(node->arguments()->length(),
node->arguments()->names()));
- GenerateCall(node->token_index(), &StubCode::CallClosureFunctionLabel());
+ GenerateCall(node->token_index(),
+ &StubCode::CallClosureFunctionLabel(),
+ PcDescriptors::kOther);
__ addl(ESP, Immediate((node->arguments()->length() + 1) * kWordSize));
// Restore the context.
__ popl(CTX);
@@ -2431,7 +2439,9 @@
__ LoadObject(ECX, node->constructor());
__ LoadObject(EDX, ArgumentsDescriptor(num_args,
node->arguments()->names()));
- GenerateCall(node->token_index(), &StubCode::CallStaticFunctionLabel());
+ GenerateCall(node->token_index(),
+ &StubCode::CallStaticFunctionLabel(),
+ PcDescriptors::kFuncCall);
// Factory constructor returns object in EAX.
__ addl(ESP, Immediate(num_args * kWordSize));
if (IsResultNeeded(node)) {
@@ -2448,7 +2458,7 @@
// type arguments are on the stack.
const Code& stub = Code::Handle(StubCode::GetAllocationStubForClass(cls));
const ExternalLabel label(cls.ToCString(), stub.EntryPoint());
- GenerateCall(node->token_index(), &label);
+ GenerateCall(node->token_index(), &label, PcDescriptors::kOther);
if (requires_type_arguments) {
__ popl(ECX); // Pop type arguments.
__ popl(ECX); // Pop instantiator type arguments.
@@ -2473,7 +2483,9 @@
int num_args = node->arguments()->length() + 2;
__ LoadObject(ECX, node->constructor());
__ LoadObject(EDX, ArgumentsDescriptor(num_args, node->arguments()->names()));
- GenerateCall(node->token_index(), &StubCode::CallStaticFunctionLabel());
+ GenerateCall(node->token_index(),
+ &StubCode::CallStaticFunctionLabel(),
+ PcDescriptors::kFuncCall);
// Constructors do not return any value.
// Pop out all the other arguments on the stack.
@@ -2567,7 +2579,9 @@
const int kNumberOfArguments = 0;
const Array& kNoArgumentNames = Array::Handle();
__ LoadObject(EDX, ArgumentsDescriptor(kNumberOfArguments, kNoArgumentNames));
- GenerateCall(token_index, &StubCode::CallStaticFunctionLabel());
+ GenerateCall(token_index,
+ &StubCode::CallStaticFunctionLabel(),
+ PcDescriptors::kFuncCall);
// No arguments were pushed, hence nothing to pop.
}
@@ -2595,7 +2609,9 @@
const int kNumberOfArguments = 1; // value.
const Array& kNoArgumentNames = Array::Handle();
__ LoadObject(EDX, ArgumentsDescriptor(kNumberOfArguments, kNoArgumentNames));
- GenerateCall(token_index, &StubCode::CallStaticFunctionLabel());
+ GenerateCall(token_index,
+ &StubCode::CallStaticFunctionLabel(),
+ PcDescriptors::kFuncCall);
__ addl(ESP, Immediate(kNumberOfArguments * kWordSize));
}
@@ -2628,7 +2644,9 @@
}
__ movl(ECX, Immediate(reinterpret_cast<uword>(node->native_c_function())));
__ movl(EDX, Immediate(node->argument_count()));
- GenerateCall(node->token_index(), &StubCode::CallNativeCFunctionLabel());
+ GenerateCall(node->token_index(),
+ &StubCode::CallNativeCFunctionLabel(),
+ PcDescriptors::kOther);
// Result is on the stack.
if (!IsResultNeeded(node)) {
__ popl(EAX);
@@ -2754,9 +2772,10 @@
void CodeGenerator::GenerateCall(intptr_t token_index,
- const ExternalLabel* ext_label) {
+ const ExternalLabel* ext_label,
+ PcDescriptors::Kind desc_kind) {
__ call(ext_label);
- AddCurrentDescriptor(PcDescriptors::kOther, AstNode::kNoId, token_index);
+ AddCurrentDescriptor(desc_kind, AstNode::kNoId, token_index);
}

Powered by Google App Engine
This is Rietveld 408576698