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

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

Issue 11791051: Support immediate and memory operands for PushArgumentInstr in optimized code. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: really handle constant operands Created 7 years, 11 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 2235 matching lines...) Expand 10 before | Expand all | Expand 10 after
2246 StubCode::GetAllocationStubForClosure(closure_function)); 2246 StubCode::GetAllocationStubForClosure(closure_function));
2247 const ExternalLabel label(closure_function.ToCString(), stub.EntryPoint()); 2247 const ExternalLabel label(closure_function.ToCString(), stub.EntryPoint());
2248 compiler->GenerateCall(token_pos(), 2248 compiler->GenerateCall(token_pos(),
2249 &label, 2249 &label,
2250 PcDescriptors::kOther, 2250 PcDescriptors::kOther,
2251 locs()); 2251 locs());
2252 __ Drop(2); // Discard type arguments and receiver. 2252 __ Drop(2); // Discard type arguments and receiver.
2253 } 2253 }
2254 2254
2255 2255
2256 LocationSummary* PushArgumentInstr::MakeLocationSummary() const {
2257 const intptr_t kNumInputs = 1;
2258 const intptr_t kNumTemps= 0;
2259 LocationSummary* locs =
2260 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
2261 // TODO(fschneider): Use Any() once it is supported by all code generators.
2262 locs->set_in(0, Location::RequiresRegister());
2263 return locs;
2264 }
2265
2266
2267 void PushArgumentInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
2268 // In SSA mode, we need an explicit push. Nothing to do in non-SSA mode
2269 // where PushArgument is handled by BindInstr::EmitNativeCode.
2270 // TODO(fschneider): Avoid special-casing for SSA mode here.
2271 if (compiler->is_optimizing()) {
2272 ASSERT(locs()->in(0).IsRegister());
2273 __ PushRegister(locs()->in(0).reg());
2274 }
2275 }
2276
2277
2278 Environment* Environment::From(const GrowableArray<Definition*>& definitions, 2256 Environment* Environment::From(const GrowableArray<Definition*>& definitions,
2279 intptr_t fixed_parameter_count, 2257 intptr_t fixed_parameter_count,
2280 const Function& function) { 2258 const Function& function) {
2281 Environment* env = 2259 Environment* env =
2282 new Environment(definitions.length(), 2260 new Environment(definitions.length(),
2283 fixed_parameter_count, 2261 fixed_parameter_count,
2284 Isolate::kNoDeoptId, 2262 Isolate::kNoDeoptId,
2285 function, 2263 function,
2286 NULL); 2264 NULL);
2287 for (intptr_t i = 0; i < definitions.length(); ++i) { 2265 for (intptr_t i = 0; i < definitions.length(); ++i) {
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
2939 default: 2917 default:
2940 UNREACHABLE(); 2918 UNREACHABLE();
2941 return -1; 2919 return -1;
2942 } 2920 }
2943 } 2921 }
2944 2922
2945 2923
2946 #undef __ 2924 #undef __
2947 2925
2948 } // namespace dart 2926 } // 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