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

Side by Side Diff: dart/runtime/vm/code_generator.cc

Issue 328663002: Version 1.5.0-dev.4.5 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/code_generator.h" 5 #include "vm/code_generator.h"
6 6
7 #include "vm/assembler.h" 7 #include "vm/assembler.h"
8 #include "vm/ast.h" 8 #include "vm/ast.h"
9 #include "vm/bigint_operations.h" 9 #include "vm/bigint_operations.h"
10 #include "vm/code_patcher.h" 10 #include "vm/code_patcher.h"
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 CodePatcher::GetStaticCallTargetAt(caller_frame->pc(), caller_code)); 626 CodePatcher::GetStaticCallTargetAt(caller_frame->pc(), caller_code));
627 const Instructions& instrs = 627 const Instructions& instrs =
628 Instructions::Handle(caller_code.instructions()); 628 Instructions::Handle(caller_code.instructions());
629 { 629 {
630 WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size()); 630 WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
631 CodePatcher::PatchStaticCallAt(caller_frame->pc(), caller_code, 631 CodePatcher::PatchStaticCallAt(caller_frame->pc(), caller_code,
632 target_code.EntryPoint()); 632 target_code.EntryPoint());
633 caller_code.SetStaticCallTargetCodeAt(caller_frame->pc(), target_code); 633 caller_code.SetStaticCallTargetCodeAt(caller_frame->pc(), target_code);
634 } 634 }
635 if (FLAG_trace_patching) { 635 if (FLAG_trace_patching) {
636 OS::PrintErr("PatchStaticCall: patching from %#" Px " to '%s' %#" Px "\n", 636 OS::PrintErr("PatchStaticCall: patching caller pc %#" Px ""
637 " to '%s' new entry point %#" Px " (%s)\n",
637 caller_frame->pc(), 638 caller_frame->pc(),
638 target_function.ToFullyQualifiedCString(), 639 target_function.ToFullyQualifiedCString(),
639 target_code.EntryPoint()); 640 target_code.EntryPoint(),
641 target_code.is_optimized() ? "optimized" : "unoptimized");
640 } 642 }
641 arguments.SetReturn(target_code); 643 arguments.SetReturn(target_code);
642 } 644 }
643 645
644 646
645 // Result of an invoke may be an unhandled exception, in which case we 647 // Result of an invoke may be an unhandled exception, in which case we
646 // rethrow it. 648 // rethrow it.
647 static void CheckResultError(const Object& result) { 649 static void CheckResultError(const Object& result) {
648 if (result.IsError()) { 650 if (result.IsError()) {
649 Exceptions::PropagateError(Error::Cast(result)); 651 Exceptions::PropagateError(Error::Cast(result));
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 isolate, target_function.CurrentCode()); 1288 isolate, target_function.CurrentCode());
1287 const Instructions& instrs = Instructions::Handle( 1289 const Instructions& instrs = Instructions::Handle(
1288 isolate, caller_code.instructions()); 1290 isolate, caller_code.instructions());
1289 { 1291 {
1290 WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size()); 1292 WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
1291 CodePatcher::PatchStaticCallAt(frame->pc(), caller_code, 1293 CodePatcher::PatchStaticCallAt(frame->pc(), caller_code,
1292 current_target_code.EntryPoint()); 1294 current_target_code.EntryPoint());
1293 caller_code.SetStaticCallTargetCodeAt(frame->pc(), current_target_code); 1295 caller_code.SetStaticCallTargetCodeAt(frame->pc(), current_target_code);
1294 } 1296 }
1295 if (FLAG_trace_patching) { 1297 if (FLAG_trace_patching) {
1296 OS::PrintErr("FixCallersTarget: patching from %#" Px " to '%s' %#" Px "\n", 1298 OS::PrintErr("FixCallersTarget: caller %#" Px " "
1299 "target '%s' %#" Px " -> %#" Px "\n",
1297 frame->pc(), 1300 frame->pc(),
1298 target_function.ToFullyQualifiedCString(), 1301 target_function.ToFullyQualifiedCString(),
1302 target_code.EntryPoint(),
1299 current_target_code.EntryPoint()); 1303 current_target_code.EntryPoint());
1300 } 1304 }
1301 arguments.SetReturn(current_target_code); 1305 arguments.SetReturn(current_target_code);
1302 } 1306 }
1303 1307
1304 1308
1305 const char* DeoptReasonToCString(ICData::DeoptReasonId deopt_reason) { 1309 const char* DeoptReasonToCString(ICData::DeoptReasonId deopt_reason) {
1306 switch (deopt_reason) { 1310 switch (deopt_reason) {
1307 #define DEOPT_REASON_TO_TEXT(name) case ICData::kDeopt##name: return #name; 1311 #define DEOPT_REASON_TO_TEXT(name) case ICData::kDeopt##name: return #name;
1308 DEOPT_REASONS(DEOPT_REASON_TO_TEXT) 1312 DEOPT_REASONS(DEOPT_REASON_TO_TEXT)
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 // of the given value. 1534 // of the given value.
1531 // Arg0: Field object; 1535 // Arg0: Field object;
1532 // Arg1: Value that is being stored. 1536 // Arg1: Value that is being stored.
1533 DEFINE_RUNTIME_ENTRY(UpdateFieldCid, 2) { 1537 DEFINE_RUNTIME_ENTRY(UpdateFieldCid, 2) {
1534 const Field& field = Field::CheckedHandle(arguments.ArgAt(0)); 1538 const Field& field = Field::CheckedHandle(arguments.ArgAt(0));
1535 const Object& value = Object::Handle(arguments.ArgAt(1)); 1539 const Object& value = Object::Handle(arguments.ArgAt(1));
1536 field.RecordStore(value); 1540 field.RecordStore(value);
1537 } 1541 }
1538 1542
1539 } // namespace dart 1543 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698