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 |