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

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

Issue 10832214: Move deopt reason into PcDescriptor so the EAX/RAX register is not destroyed. Some cleanups in PC d… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 4 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 | « runtime/vm/flow_graph_compiler_x64.cc ('k') | runtime/vm/intermediate_language_ia32.cc » ('j') | 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/intermediate_language.h" 5 #include "vm/intermediate_language.h"
6 6
7 #include "vm/bit_vector.h" 7 #include "vm/bit_vector.h"
8 #include "vm/dart_entry.h" 8 #include "vm/dart_entry.h"
9 #include "vm/flow_graph_allocator.h" 9 #include "vm/flow_graph_allocator.h"
10 #include "vm/flow_graph_builder.h" 10 #include "vm/flow_graph_builder.h"
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 } 811 }
812 812
813 813
814 void StoreInstanceFieldComp::EmitNativeCode(FlowGraphCompiler* compiler) { 814 void StoreInstanceFieldComp::EmitNativeCode(FlowGraphCompiler* compiler) {
815 Register instance_reg = locs()->in(0).reg(); 815 Register instance_reg = locs()->in(0).reg();
816 Register value_reg = locs()->in(1).reg(); 816 Register value_reg = locs()->in(1).reg();
817 817
818 if (HasICData()) { 818 if (HasICData()) {
819 ASSERT(original() != NULL); 819 ASSERT(original() != NULL);
820 Label* deopt = compiler->AddDeoptStub(original()->deopt_id(), 820 Label* deopt = compiler->AddDeoptStub(original()->deopt_id(),
821 original()->token_pos(),
822 original()->try_index(), 821 original()->try_index(),
823 kDeoptInstanceGetterSameTarget, 822 kDeoptInstanceGetterSameTarget,
824 instance_reg, 823 instance_reg,
825 value_reg); 824 value_reg);
826 // Smis do not have instance fields (Smi class is always first). 825 // Smis do not have instance fields (Smi class is always first).
827 Register temp_reg = locs()->temp(0).reg(); 826 Register temp_reg = locs()->temp(0).reg();
828 ASSERT(temp_reg != instance_reg); 827 ASSERT(temp_reg != instance_reg);
829 ASSERT(temp_reg != value_reg); 828 ASSERT(temp_reg != value_reg);
830 ASSERT(ic_data() != NULL); 829 ASSERT(ic_data() != NULL);
831 compiler->EmitClassChecksNoSmi(*ic_data(), instance_reg, temp_reg, deopt); 830 compiler->EmitClassChecksNoSmi(*ic_data(), instance_reg, temp_reg, deopt);
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
1211 locations_[i] = Location::NoLocation(); 1210 locations_[i] = Location::NoLocation();
1212 } 1211 }
1213 } 1212 }
1214 } 1213 }
1215 } 1214 }
1216 1215
1217 1216
1218 #undef __ 1217 #undef __
1219 1218
1220 } // namespace dart 1219 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_compiler_x64.cc ('k') | runtime/vm/intermediate_language_ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698