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

Side by Side Diff: src/ppc/macro-assembler-ppc.cc

Issue 1553703002: [runtime] TailCallRuntime and CallRuntime should use default argument counts (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@2015-12-29_TailCallRuntime_default_result_size_1_1550923002
Patch Set: Created 4 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <assert.h> // For assert 5 #include <assert.h> // For assert
6 #include <limits.h> // For LONG_MIN, LONG_MAX. 6 #include <limits.h> // For LONG_MIN, LONG_MAX.
7 7
8 #if V8_TARGET_ARCH_PPC 8 #if V8_TARGET_ARCH_PPC
9 9
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 2294 matching lines...) Expand 10 before | Expand all | Expand 10 after
2305 void MacroAssembler::CallExternalReference(const ExternalReference& ext, 2305 void MacroAssembler::CallExternalReference(const ExternalReference& ext,
2306 int num_arguments) { 2306 int num_arguments) {
2307 mov(r3, Operand(num_arguments)); 2307 mov(r3, Operand(num_arguments));
2308 mov(r4, Operand(ext)); 2308 mov(r4, Operand(ext));
2309 2309
2310 CEntryStub stub(isolate(), 1); 2310 CEntryStub stub(isolate(), 1);
2311 CallStub(&stub); 2311 CallStub(&stub);
2312 } 2312 }
2313 2313
2314 2314
2315 void MacroAssembler::TailCallExternalReference(const ExternalReference& ext, 2315 void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) {
2316 int num_arguments) { 2316 const Runtime::Function* function = Runtime::FunctionForId(fid);
2317 // TODO(1236192): Most runtime routines don't need the number of 2317 DCHECK_EQ(1, function->result_size);
2318 // arguments passed in because it is constant. At some point we 2318 if (function->nargs >= 0) {
Igor Sheludko 2015/12/30 14:48:18 Ditto.
2319 // should remove this need and make the runtime routine entry code 2319 mov(r3, Operand(function->nargs));
2320 // smarter. 2320 }
2321 mov(r3, Operand(num_arguments)); 2321 JumpToExternalReference(ExternalReference(fid, isolate()));
2322 JumpToExternalReference(ext);
2323 } 2322 }
2324 2323
2325 2324
2326 void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid,
2327 int num_arguments) {
2328 TailCallExternalReference(ExternalReference(fid, isolate()), num_arguments);
2329 }
2330
2331
2332 void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) { 2325 void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) {
2333 mov(r4, Operand(builtin)); 2326 mov(r4, Operand(builtin));
2334 CEntryStub stub(isolate(), 1); 2327 CEntryStub stub(isolate(), 1);
2335 Jump(stub.GetCode(), RelocInfo::CODE_TARGET); 2328 Jump(stub.GetCode(), RelocInfo::CODE_TARGET);
2336 } 2329 }
2337 2330
2338 2331
2339 void MacroAssembler::InvokeBuiltin(int native_context_index, InvokeFlag flag, 2332 void MacroAssembler::InvokeBuiltin(int native_context_index, InvokeFlag flag,
2340 const CallWrapper& call_wrapper) { 2333 const CallWrapper& call_wrapper) {
2341 // You can't call a builtin without a valid frame. 2334 // You can't call a builtin without a valid frame.
(...skipping 1950 matching lines...) Expand 10 before | Expand all | Expand 10 after
4292 } 4285 }
4293 if (mag.shift > 0) srawi(result, result, mag.shift); 4286 if (mag.shift > 0) srawi(result, result, mag.shift);
4294 ExtractBit(r0, dividend, 31); 4287 ExtractBit(r0, dividend, 31);
4295 add(result, result, r0); 4288 add(result, result, r0);
4296 } 4289 }
4297 4290
4298 } // namespace internal 4291 } // namespace internal
4299 } // namespace v8 4292 } // namespace v8
4300 4293
4301 #endif // V8_TARGET_ARCH_PPC 4294 #endif // V8_TARGET_ARCH_PPC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698