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

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

Issue 10915087: Execute deoptimization instruction in reverse order. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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_macros.h" 7 #include "vm/assembler_macros.h"
8 #include "vm/ast.h" 8 #include "vm/ast.h"
9 #include "vm/code_patcher.h" 9 #include "vm/code_patcher.h"
10 #include "vm/compiler.h" 10 #include "vm/compiler.h"
(...skipping 1570 matching lines...) Expand 10 before | Expand all | Expand 10 after
1581 0 : function.num_fixed_parameters(); 1581 0 : function.num_fixed_parameters();
1582 intptr_t to_frame_size = 1582 intptr_t to_frame_size =
1583 1 // Deoptimized function's return address. 1583 1 // Deoptimized function's return address.
1584 + (caller_frame.fp() - caller_frame.sp()) / kWordSize 1584 + (caller_frame.fp() - caller_frame.sp()) / kWordSize
1585 + 3 // caller-fp, pc, pc-marker. 1585 + 3 // caller-fp, pc, pc-marker.
1586 + num_args; 1586 + num_args;
1587 DeoptimizationContext deopt_context(start, 1587 DeoptimizationContext deopt_context(start,
1588 to_frame_size, 1588 to_frame_size,
1589 Array::Handle(code.object_table()), 1589 Array::Handle(code.object_table()),
1590 num_args); 1590 num_args);
1591 for (intptr_t to_index = 0; to_index < len; to_index++) { 1591 for (intptr_t to_index = len - 1; to_index >= 0; to_index--) {
1592 deopt_instructions[to_index]->Execute(&deopt_context, to_index); 1592 deopt_instructions[to_index]->Execute(&deopt_context, to_index);
1593 } 1593 }
1594 if (FLAG_trace_deopt) { 1594 if (FLAG_trace_deopt) {
1595 for (intptr_t i = 0; i < len; i++) { 1595 for (intptr_t i = 0; i < len; i++) {
1596 OS::Print("*%d. [0x%0" PRIxPTR "] 0x%012" PRIxPTR " [%s]\n", 1596 OS::Print("*%d. [0x%0" PRIxPTR "] 0x%012" PRIxPTR " [%s]\n",
1597 i, 1597 i,
1598 &start[i], 1598 &start[i],
1599 start[i], 1599 start[i],
1600 deopt_instructions[i]->ToCString()); 1600 deopt_instructions[i]->ToCString());
1601 } 1601 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1676 current->slot(), 1676 current->slot(),
1677 current->value()); 1677 current->value());
1678 } 1678 }
1679 1679
1680 delete current; 1680 delete current;
1681 } 1681 }
1682 } 1682 }
1683 1683
1684 1684
1685 } // namespace dart 1685 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698