OLD | NEW |
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 2295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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::TailCallExternalReference(const ExternalReference& ext, |
2316 int num_arguments, | 2316 int num_arguments) { |
2317 int result_size) { | |
2318 // TODO(1236192): Most runtime routines don't need the number of | 2317 // TODO(1236192): Most runtime routines don't need the number of |
2319 // arguments passed in because it is constant. At some point we | 2318 // arguments passed in because it is constant. At some point we |
2320 // should remove this need and make the runtime routine entry code | 2319 // should remove this need and make the runtime routine entry code |
2321 // smarter. | 2320 // smarter. |
2322 mov(r3, Operand(num_arguments)); | 2321 mov(r3, Operand(num_arguments)); |
2323 JumpToExternalReference(ext); | 2322 JumpToExternalReference(ext); |
2324 } | 2323 } |
2325 | 2324 |
2326 | 2325 |
2327 void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid, int num_arguments, | 2326 void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid, |
2328 int result_size) { | 2327 int num_arguments) { |
2329 TailCallExternalReference(ExternalReference(fid, isolate()), num_arguments, | 2328 TailCallExternalReference(ExternalReference(fid, isolate()), num_arguments); |
2330 result_size); | |
2331 } | 2329 } |
2332 | 2330 |
2333 | 2331 |
2334 void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) { | 2332 void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) { |
2335 mov(r4, Operand(builtin)); | 2333 mov(r4, Operand(builtin)); |
2336 CEntryStub stub(isolate(), 1); | 2334 CEntryStub stub(isolate(), 1); |
2337 Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 2335 Jump(stub.GetCode(), RelocInfo::CODE_TARGET); |
2338 } | 2336 } |
2339 | 2337 |
2340 | 2338 |
(...skipping 1953 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4294 } | 4292 } |
4295 if (mag.shift > 0) srawi(result, result, mag.shift); | 4293 if (mag.shift > 0) srawi(result, result, mag.shift); |
4296 ExtractBit(r0, dividend, 31); | 4294 ExtractBit(r0, dividend, 31); |
4297 add(result, result, r0); | 4295 add(result, result, r0); |
4298 } | 4296 } |
4299 | 4297 |
4300 } // namespace internal | 4298 } // namespace internal |
4301 } // namespace v8 | 4299 } // namespace v8 |
4302 | 4300 |
4303 #endif // V8_TARGET_ARCH_PPC | 4301 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |