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

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

Issue 10987031: Call compiled static targets directly instead of resolving them at first call. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 2 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_ia32.cc ('k') | 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/globals.h" // Needed here to get TARGET_ARCH_X64. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_X64.
6 #if defined(TARGET_ARCH_X64) 6 #if defined(TARGET_ARCH_X64)
7 7
8 #include "vm/flow_graph_compiler.h" 8 #include "vm/flow_graph_compiler.h"
9 9
10 #include "lib/error.h" 10 #include "lib/error.h"
(...skipping 1096 matching lines...) Expand 10 before | Expand all | Expand 10 after
1107 1107
1108 void FlowGraphCompiler::EmitStaticCall(const Function& function, 1108 void FlowGraphCompiler::EmitStaticCall(const Function& function,
1109 const Array& arguments_descriptor, 1109 const Array& arguments_descriptor,
1110 intptr_t argument_count, 1110 intptr_t argument_count,
1111 intptr_t deopt_id, 1111 intptr_t deopt_id,
1112 intptr_t token_pos, 1112 intptr_t token_pos,
1113 LocationSummary* locs) { 1113 LocationSummary* locs) {
1114 ASSERT(!IsLeaf()); 1114 ASSERT(!IsLeaf());
1115 __ LoadObject(RBX, function); 1115 __ LoadObject(RBX, function);
1116 __ LoadObject(R10, arguments_descriptor); 1116 __ LoadObject(R10, arguments_descriptor);
1117 GenerateDartCall(deopt_id, 1117 if (function.HasCode()) {
1118 token_pos, 1118 const Code& code = Code::Handle(function.CurrentCode());
1119 &StubCode::CallStaticFunctionLabel(), 1119 ExternalLabel target_label(function.ToFullyQualifiedCString(),
1120 PcDescriptors::kFuncCall, 1120 code.EntryPoint());
1121 locs); 1121 GenerateDartCall(deopt_id,
1122 token_pos,
1123 &target_label,
1124 PcDescriptors::kFuncCall,
1125 locs);
1126 } else {
1127 GenerateDartCall(deopt_id,
1128 token_pos,
1129 &StubCode::CallStaticFunctionLabel(),
1130 PcDescriptors::kFuncCall,
1131 locs);
1132 }
1122 __ Drop(argument_count); 1133 __ Drop(argument_count);
1123 } 1134 }
1124 1135
1125 1136
1126 void FlowGraphCompiler::LoadDoubleOrSmiToXmm(XmmRegister result, 1137 void FlowGraphCompiler::LoadDoubleOrSmiToXmm(XmmRegister result,
1127 Register reg, 1138 Register reg,
1128 Register temp, 1139 Register temp,
1129 Label* not_double_or_smi) { 1140 Label* not_double_or_smi) {
1130 Label is_smi, done; 1141 Label is_smi, done;
1131 __ testq(reg, Immediate(kSmiTagMask)); 1142 __ testq(reg, Immediate(kSmiTagMask));
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
1339 void ParallelMoveResolver::Exchange(const Address& mem1, const Address& mem2) { 1350 void ParallelMoveResolver::Exchange(const Address& mem1, const Address& mem2) {
1340 __ Exchange(mem1, mem2); 1351 __ Exchange(mem1, mem2);
1341 } 1352 }
1342 1353
1343 1354
1344 #undef __ 1355 #undef __
1345 1356
1346 } // namespace dart 1357 } // namespace dart
1347 1358
1348 #endif // defined TARGET_ARCH_X64 1359 #endif // defined TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_compiler_ia32.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698