| 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 2317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2328 } | 2328 } |
| 2329 | 2329 |
| 2330 | 2330 |
| 2331 void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) { | 2331 void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) { |
| 2332 mov(r4, Operand(builtin)); | 2332 mov(r4, Operand(builtin)); |
| 2333 CEntryStub stub(isolate(), 1); | 2333 CEntryStub stub(isolate(), 1); |
| 2334 Jump(stub.GetCode(), RelocInfo::CODE_TARGET); | 2334 Jump(stub.GetCode(), RelocInfo::CODE_TARGET); |
| 2335 } | 2335 } |
| 2336 | 2336 |
| 2337 | 2337 |
| 2338 void MacroAssembler::InvokeBuiltin(int native_context_index, InvokeFlag flag, | |
| 2339 const CallWrapper& call_wrapper) { | |
| 2340 // You can't call a builtin without a valid frame. | |
| 2341 DCHECK(flag == JUMP_FUNCTION || has_frame()); | |
| 2342 | |
| 2343 // Fake a parameter count to avoid emitting code to do the check. | |
| 2344 ParameterCount expected(0); | |
| 2345 LoadNativeContextSlot(native_context_index, r4); | |
| 2346 InvokeFunctionCode(r4, no_reg, expected, expected, flag, call_wrapper); | |
| 2347 } | |
| 2348 | |
| 2349 | |
| 2350 void MacroAssembler::SetCounter(StatsCounter* counter, int value, | 2338 void MacroAssembler::SetCounter(StatsCounter* counter, int value, |
| 2351 Register scratch1, Register scratch2) { | 2339 Register scratch1, Register scratch2) { |
| 2352 if (FLAG_native_code_counters && counter->Enabled()) { | 2340 if (FLAG_native_code_counters && counter->Enabled()) { |
| 2353 mov(scratch1, Operand(value)); | 2341 mov(scratch1, Operand(value)); |
| 2354 mov(scratch2, Operand(ExternalReference(counter))); | 2342 mov(scratch2, Operand(ExternalReference(counter))); |
| 2355 stw(scratch1, MemOperand(scratch2)); | 2343 stw(scratch1, MemOperand(scratch2)); |
| 2356 } | 2344 } |
| 2357 } | 2345 } |
| 2358 | 2346 |
| 2359 | 2347 |
| (...skipping 1966 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4326 } | 4314 } |
| 4327 if (mag.shift > 0) srawi(result, result, mag.shift); | 4315 if (mag.shift > 0) srawi(result, result, mag.shift); |
| 4328 ExtractBit(r0, dividend, 31); | 4316 ExtractBit(r0, dividend, 31); |
| 4329 add(result, result, r0); | 4317 add(result, result, r0); |
| 4330 } | 4318 } |
| 4331 | 4319 |
| 4332 } // namespace internal | 4320 } // namespace internal |
| 4333 } // namespace v8 | 4321 } // namespace v8 |
| 4334 | 4322 |
| 4335 #endif // V8_TARGET_ARCH_PPC | 4323 #endif // V8_TARGET_ARCH_PPC |
| OLD | NEW |