Index: src/x87/macro-assembler-x87.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/x87/macro-assembler-x87.cc |
similarity index 92% |
copy from src/ia32/macro-assembler-ia32.cc |
copy to src/x87/macro-assembler-x87.cc |
index f96da485eb74b56f586940c9490235882129852e..04a9119023720f329ba8a6d66dbe139b2be24cec 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/x87/macro-assembler-x87.cc |
@@ -4,7 +4,7 @@ |
#include "v8.h" |
-#if V8_TARGET_ARCH_IA32 |
+#if V8_TARGET_ARCH_X87 |
#include "bootstrapper.h" |
#include "codegen.h" |
@@ -143,7 +143,6 @@ void MacroAssembler::RememberedSetHelper( |
Register object, // Only used for debug checks. |
Register addr, |
Register scratch, |
- SaveFPRegsMode save_fp, |
MacroAssembler::RememberedSetFinalAction and_then) { |
Label done; |
if (emit_debug_code()) { |
@@ -175,7 +174,7 @@ void MacroAssembler::RememberedSetHelper( |
j(equal, &done, Label::kNear); |
} |
StoreBufferOverflowStub store_buffer_overflow = |
- StoreBufferOverflowStub(isolate(), save_fp); |
+ StoreBufferOverflowStub(isolate()); |
CallStub(&store_buffer_overflow); |
if (and_then == kReturnAtEnd) { |
ret(0); |
@@ -186,31 +185,6 @@ void MacroAssembler::RememberedSetHelper( |
} |
-void MacroAssembler::ClampDoubleToUint8(XMMRegister input_reg, |
- XMMRegister scratch_reg, |
- Register result_reg) { |
- Label done; |
- Label conv_failure; |
- xorps(scratch_reg, scratch_reg); |
- cvtsd2si(result_reg, input_reg); |
- test(result_reg, Immediate(0xFFFFFF00)); |
- j(zero, &done, Label::kNear); |
- cmp(result_reg, Immediate(0x1)); |
- j(overflow, &conv_failure, Label::kNear); |
- mov(result_reg, Immediate(0)); |
- setcc(sign, result_reg); |
- sub(result_reg, Immediate(1)); |
- and_(result_reg, Immediate(255)); |
- jmp(&done, Label::kNear); |
- bind(&conv_failure); |
- Move(result_reg, Immediate(0)); |
- ucomisd(input_reg, scratch_reg); |
- j(below, &done, Label::kNear); |
- Move(result_reg, Immediate(255)); |
- bind(&done); |
-} |
- |
- |
void MacroAssembler::ClampUint8(Register reg) { |
Label done; |
test(reg, Immediate(0xFFFFFF00)); |
@@ -229,47 +203,39 @@ void MacroAssembler::SlowTruncateToI(Register result_reg, |
} |
-void MacroAssembler::TruncateDoubleToI(Register result_reg, |
- XMMRegister input_reg) { |
- Label done; |
- cvttsd2si(result_reg, Operand(input_reg)); |
- cmp(result_reg, 0x1); |
- j(no_overflow, &done, Label::kNear); |
- |
+void MacroAssembler::TruncateX87TOSToI(Register result_reg) { |
sub(esp, Immediate(kDoubleSize)); |
- movsd(MemOperand(esp, 0), input_reg); |
+ fst_d(MemOperand(esp, 0)); |
SlowTruncateToI(result_reg, esp, 0); |
add(esp, Immediate(kDoubleSize)); |
- bind(&done); |
} |
-void MacroAssembler::DoubleToI(Register result_reg, |
- XMMRegister input_reg, |
- XMMRegister scratch, |
+void MacroAssembler::X87TOSToI(Register result_reg, |
MinusZeroMode minus_zero_mode, |
Label* conversion_failed, |
Label::Distance dst) { |
- ASSERT(!input_reg.is(scratch)); |
- cvttsd2si(result_reg, Operand(input_reg)); |
- Cvtsi2sd(scratch, Operand(result_reg)); |
- ucomisd(scratch, input_reg); |
+ Label done; |
+ sub(esp, Immediate(kPointerSize)); |
+ fld(0); |
+ fist_s(MemOperand(esp, 0)); |
+ fild_s(MemOperand(esp, 0)); |
+ pop(result_reg); |
+ FCmp(); |
j(not_equal, conversion_failed, dst); |
- j(parity_even, conversion_failed, dst); // NaN. |
+ j(parity_even, conversion_failed, dst); |
if (minus_zero_mode == FAIL_ON_MINUS_ZERO) { |
- Label done; |
- // The integer converted back is equal to the original. We |
- // only have to test if we got -0 as an input. |
test(result_reg, Operand(result_reg)); |
j(not_zero, &done, Label::kNear); |
- movmskpd(result_reg, input_reg); |
- // Bit 0 contains the sign of the double in input_reg. |
- // If input was positive, we are ok and return 0, otherwise |
- // jump to conversion_failed. |
- and_(result_reg, 1); |
+ // To check for minus zero, we load the value again as float, and check |
+ // if that is still 0. |
+ sub(esp, Immediate(kPointerSize)); |
+ fst_s(MemOperand(esp, 0)); |
+ pop(result_reg); |
+ test(result_reg, Operand(result_reg)); |
j(not_zero, conversion_failed, dst); |
- bind(&done); |
} |
+ bind(&done); |
} |
@@ -277,122 +243,76 @@ void MacroAssembler::TruncateHeapNumberToI(Register result_reg, |
Register input_reg) { |
Label done, slow_case; |
- if (CpuFeatures::IsSupported(SSE3)) { |
- CpuFeatureScope scope(this, SSE3); |
- Label convert; |
- // Use more powerful conversion when sse3 is available. |
- // Load x87 register with heap number. |
- fld_d(FieldOperand(input_reg, HeapNumber::kValueOffset)); |
- // Get exponent alone and check for too-big exponent. |
- mov(result_reg, FieldOperand(input_reg, HeapNumber::kExponentOffset)); |
- and_(result_reg, HeapNumber::kExponentMask); |
- const uint32_t kTooBigExponent = |
- (HeapNumber::kExponentBias + 63) << HeapNumber::kExponentShift; |
- cmp(Operand(result_reg), Immediate(kTooBigExponent)); |
- j(greater_equal, &slow_case, Label::kNear); |
- |
- // Reserve space for 64 bit answer. |
- sub(Operand(esp), Immediate(kDoubleSize)); |
- // Do conversion, which cannot fail because we checked the exponent. |
- fisttp_d(Operand(esp, 0)); |
- mov(result_reg, Operand(esp, 0)); // Low word of answer is the result. |
- add(Operand(esp), Immediate(kDoubleSize)); |
- jmp(&done, Label::kNear); |
- |
- // Slow case. |
- bind(&slow_case); |
- if (input_reg.is(result_reg)) { |
- // Input is clobbered. Restore number from fpu stack |
- sub(Operand(esp), Immediate(kDoubleSize)); |
- fstp_d(Operand(esp, 0)); |
- SlowTruncateToI(result_reg, esp, 0); |
- add(esp, Immediate(kDoubleSize)); |
- } else { |
- fstp(0); |
- SlowTruncateToI(result_reg, input_reg); |
- } |
- } else { |
- movsd(xmm0, FieldOperand(input_reg, HeapNumber::kValueOffset)); |
- cvttsd2si(result_reg, Operand(xmm0)); |
- cmp(result_reg, 0x1); |
- j(no_overflow, &done, Label::kNear); |
- // Check if the input was 0x8000000 (kMinInt). |
- // If no, then we got an overflow and we deoptimize. |
- ExternalReference min_int = ExternalReference::address_of_min_int(); |
- ucomisd(xmm0, Operand::StaticVariable(min_int)); |
- j(not_equal, &slow_case, Label::kNear); |
- j(parity_even, &slow_case, Label::kNear); // NaN. |
- jmp(&done, Label::kNear); |
- |
- // Slow case. |
- bind(&slow_case); |
- if (input_reg.is(result_reg)) { |
- // Input is clobbered. Restore number from double scratch. |
- sub(esp, Immediate(kDoubleSize)); |
- movsd(MemOperand(esp, 0), xmm0); |
- SlowTruncateToI(result_reg, esp, 0); |
- add(esp, Immediate(kDoubleSize)); |
- } else { |
- SlowTruncateToI(result_reg, input_reg); |
- } |
- } |
+ SlowTruncateToI(result_reg, input_reg); |
bind(&done); |
} |
void MacroAssembler::TaggedToI(Register result_reg, |
Register input_reg, |
- XMMRegister temp, |
MinusZeroMode minus_zero_mode, |
Label* lost_precision) { |
Label done; |
- ASSERT(!temp.is(xmm0)); |
cmp(FieldOperand(input_reg, HeapObject::kMapOffset), |
isolate()->factory()->heap_number_map()); |
j(not_equal, lost_precision, Label::kNear); |
- ASSERT(!temp.is(no_xmm_reg)); |
- |
- movsd(xmm0, FieldOperand(input_reg, HeapNumber::kValueOffset)); |
- cvttsd2si(result_reg, Operand(xmm0)); |
- Cvtsi2sd(temp, Operand(result_reg)); |
- ucomisd(xmm0, temp); |
- RecordComment("Deferred TaggedToI: lost precision"); |
- j(not_equal, lost_precision, Label::kNear); |
- RecordComment("Deferred TaggedToI: NaN"); |
- j(parity_even, lost_precision, Label::kNear); |
+ // TODO(olivf) Converting a number on the fpu is actually quite slow. We |
+ // should first try a fast conversion and then bailout to this slow case. |
+ Label lost_precision_pop, zero_check; |
+ Label* lost_precision_int = (minus_zero_mode == FAIL_ON_MINUS_ZERO) |
+ ? &lost_precision_pop : lost_precision; |
+ sub(esp, Immediate(kPointerSize)); |
+ fld_d(FieldOperand(input_reg, HeapNumber::kValueOffset)); |
+ if (minus_zero_mode == FAIL_ON_MINUS_ZERO) fld(0); |
+ fist_s(MemOperand(esp, 0)); |
+ fild_s(MemOperand(esp, 0)); |
+ FCmp(); |
+ pop(result_reg); |
+ j(not_equal, lost_precision_int, Label::kNear); |
+ j(parity_even, lost_precision_int, Label::kNear); // NaN. |
if (minus_zero_mode == FAIL_ON_MINUS_ZERO) { |
test(result_reg, Operand(result_reg)); |
- j(not_zero, &done, Label::kNear); |
- movmskpd(result_reg, xmm0); |
- and_(result_reg, 1); |
- RecordComment("Deferred TaggedToI: minus zero"); |
- j(not_zero, lost_precision, Label::kNear); |
+ j(zero, &zero_check, Label::kNear); |
+ fstp(0); |
+ jmp(&done, Label::kNear); |
+ bind(&zero_check); |
+ // To check for minus zero, we load the value again as float, and check |
+ // if that is still 0. |
+ sub(esp, Immediate(kPointerSize)); |
+ fstp_s(Operand(esp, 0)); |
+ pop(result_reg); |
+ test(result_reg, Operand(result_reg)); |
+ j(zero, &done, Label::kNear); |
+ jmp(lost_precision, Label::kNear); |
+ |
+ bind(&lost_precision_pop); |
+ fstp(0); |
+ jmp(lost_precision, Label::kNear); |
} |
bind(&done); |
} |
-void MacroAssembler::LoadUint32(XMMRegister dst, |
- Register src, |
- XMMRegister scratch) { |
+void MacroAssembler::LoadUint32NoSSE2(Register src) { |
Label done; |
+ push(src); |
+ fild_s(Operand(esp, 0)); |
cmp(src, Immediate(0)); |
+ j(not_sign, &done, Label::kNear); |
ExternalReference uint32_bias = |
ExternalReference::address_of_uint32_bias(); |
- movsd(scratch, Operand::StaticVariable(uint32_bias)); |
- Cvtsi2sd(dst, src); |
- j(not_sign, &done, Label::kNear); |
- addsd(dst, scratch); |
+ fld_d(Operand::StaticVariable(uint32_bias)); |
+ faddp(1); |
bind(&done); |
+ add(esp, Immediate(kPointerSize)); |
} |
void MacroAssembler::RecordWriteArray(Register object, |
Register value, |
Register index, |
- SaveFPRegsMode save_fp, |
RememberedSetAction remembered_set_action, |
SmiCheck smi_check) { |
// First, check if a write barrier is even needed. The tests below |
@@ -414,7 +334,7 @@ void MacroAssembler::RecordWriteArray(Register object, |
FixedArray::kHeaderSize - kHeapObjectTag)); |
RecordWrite( |
- object, dst, value, save_fp, remembered_set_action, OMIT_SMI_CHECK); |
+ object, dst, value, remembered_set_action, OMIT_SMI_CHECK); |
bind(&done); |
@@ -432,7 +352,6 @@ void MacroAssembler::RecordWriteField( |
int offset, |
Register value, |
Register dst, |
- SaveFPRegsMode save_fp, |
RememberedSetAction remembered_set_action, |
SmiCheck smi_check) { |
// First, check if a write barrier is even needed. The tests below |
@@ -458,7 +377,7 @@ void MacroAssembler::RecordWriteField( |
} |
RecordWrite( |
- object, dst, value, save_fp, remembered_set_action, OMIT_SMI_CHECK); |
+ object, dst, value, remembered_set_action, OMIT_SMI_CHECK); |
bind(&done); |
@@ -475,8 +394,7 @@ void MacroAssembler::RecordWriteForMap( |
Register object, |
Handle<Map> map, |
Register scratch1, |
- Register scratch2, |
- SaveFPRegsMode save_fp) { |
+ Register scratch2) { |
Label done; |
Register address = scratch1; |
@@ -520,8 +438,7 @@ void MacroAssembler::RecordWriteForMap( |
// them. |
lea(address, FieldOperand(object, HeapObject::kMapOffset)); |
mov(value, Immediate(map)); |
- RecordWriteStub stub(isolate(), object, value, address, OMIT_REMEMBERED_SET, |
- save_fp); |
+ RecordWriteStub stub(isolate(), object, value, address, OMIT_REMEMBERED_SET); |
CallStub(&stub); |
bind(&done); |
@@ -539,7 +456,6 @@ void MacroAssembler::RecordWriteForMap( |
void MacroAssembler::RecordWrite(Register object, |
Register address, |
Register value, |
- SaveFPRegsMode fp_mode, |
RememberedSetAction remembered_set_action, |
SmiCheck smi_check) { |
ASSERT(!object.is(value)); |
@@ -586,8 +502,8 @@ void MacroAssembler::RecordWrite(Register object, |
&done, |
Label::kNear); |
- RecordWriteStub stub(isolate(), object, value, address, remembered_set_action, |
- fp_mode); |
+ RecordWriteStub stub(isolate(), object, value, address, |
+ remembered_set_action); |
CallStub(&stub); |
bind(&done); |
@@ -609,12 +525,6 @@ void MacroAssembler::DebugBreak() { |
} |
-void MacroAssembler::Cvtsi2sd(XMMRegister dst, const Operand& src) { |
- xorps(dst, dst); |
- cvtsi2sd(dst, src); |
-} |
- |
- |
bool MacroAssembler::IsUnsafeImmediate(const Immediate& x) { |
static const int kMaxImmediateBits = 17; |
if (!RelocInfo::IsNone(x.rmode_)) return false; |
@@ -700,8 +610,7 @@ void MacroAssembler::StoreNumberToDoubleElements( |
Register maybe_number, |
Register elements, |
Register key, |
- Register scratch1, |
- XMMRegister scratch2, |
+ Register scratch, |
Label* fail, |
int elements_offset) { |
Label smi_value, done, maybe_nan, not_nan, is_nan, have_double_value; |
@@ -721,11 +630,10 @@ void MacroAssembler::StoreNumberToDoubleElements( |
bind(¬_nan); |
ExternalReference canonical_nan_reference = |
ExternalReference::address_of_canonical_non_hole_nan(); |
- movsd(scratch2, FieldOperand(maybe_number, HeapNumber::kValueOffset)); |
+ fld_d(FieldOperand(maybe_number, HeapNumber::kValueOffset)); |
bind(&have_double_value); |
- movsd(FieldOperand(elements, key, times_4, |
- FixedDoubleArray::kHeaderSize - elements_offset), |
- scratch2); |
+ fstp_d(FieldOperand(elements, key, times_4, |
+ FixedDoubleArray::kHeaderSize - elements_offset)); |
jmp(&done); |
bind(&maybe_nan); |
@@ -735,18 +643,19 @@ void MacroAssembler::StoreNumberToDoubleElements( |
cmp(FieldOperand(maybe_number, HeapNumber::kValueOffset), Immediate(0)); |
j(zero, ¬_nan); |
bind(&is_nan); |
- movsd(scratch2, Operand::StaticVariable(canonical_nan_reference)); |
+ fld_d(Operand::StaticVariable(canonical_nan_reference)); |
jmp(&have_double_value, Label::kNear); |
bind(&smi_value); |
// Value is a smi. Convert to a double and store. |
// Preserve original value. |
- mov(scratch1, maybe_number); |
- SmiUntag(scratch1); |
- Cvtsi2sd(scratch2, scratch1); |
- movsd(FieldOperand(elements, key, times_4, |
- FixedDoubleArray::kHeaderSize - elements_offset), |
- scratch2); |
+ mov(scratch, maybe_number); |
+ SmiUntag(scratch); |
+ push(scratch); |
+ fild_s(Operand(esp, 0)); |
+ pop(scratch); |
+ fstp_d(FieldOperand(elements, key, times_4, |
+ FixedDoubleArray::kHeaderSize - elements_offset)); |
bind(&done); |
} |
@@ -827,8 +736,11 @@ void MacroAssembler::IsInstanceJSObjectType(Register map, |
void MacroAssembler::FCmp() { |
- fucomip(); |
- fstp(0); |
+ fucompp(); |
+ push(eax); |
+ fnstsw_ax(); |
+ sahf(); |
+ pop(eax); |
} |
@@ -969,20 +881,8 @@ void MacroAssembler::EnterExitFramePrologue() { |
} |
-void MacroAssembler::EnterExitFrameEpilogue(int argc, bool save_doubles) { |
- // Optionally save all XMM registers. |
- if (save_doubles) { |
- int space = XMMRegister::kMaxNumRegisters * kDoubleSize + |
- argc * kPointerSize; |
- sub(esp, Immediate(space)); |
- const int offset = -2 * kPointerSize; |
- for (int i = 0; i < XMMRegister::kMaxNumRegisters; i++) { |
- XMMRegister reg = XMMRegister::from_code(i); |
- movsd(Operand(ebp, offset - ((i + 1) * kDoubleSize)), reg); |
- } |
- } else { |
- sub(esp, Immediate(argc * kPointerSize)); |
- } |
+void MacroAssembler::EnterExitFrameEpilogue(int argc) { |
+ sub(esp, Immediate(argc * kPointerSize)); |
// Get the required frame alignment for the OS. |
const int kFrameAlignment = OS::ActivationFrameAlignment(); |
@@ -996,7 +896,7 @@ void MacroAssembler::EnterExitFrameEpilogue(int argc, bool save_doubles) { |
} |
-void MacroAssembler::EnterExitFrame(bool save_doubles) { |
+void MacroAssembler::EnterExitFrame() { |
EnterExitFramePrologue(); |
// Set up argc and argv in callee-saved registers. |
@@ -1005,26 +905,17 @@ void MacroAssembler::EnterExitFrame(bool save_doubles) { |
lea(esi, Operand(ebp, eax, times_4, offset)); |
// Reserve space for argc, argv and isolate. |
- EnterExitFrameEpilogue(3, save_doubles); |
+ EnterExitFrameEpilogue(3); |
} |
void MacroAssembler::EnterApiExitFrame(int argc) { |
EnterExitFramePrologue(); |
- EnterExitFrameEpilogue(argc, false); |
+ EnterExitFrameEpilogue(argc); |
} |
-void MacroAssembler::LeaveExitFrame(bool save_doubles) { |
- // Optionally restore all XMM registers. |
- if (save_doubles) { |
- const int offset = -2 * kPointerSize; |
- for (int i = 0; i < XMMRegister::kMaxNumRegisters; i++) { |
- XMMRegister reg = XMMRegister::from_code(i); |
- movsd(reg, Operand(ebp, offset - ((i + 1) * kDoubleSize))); |
- } |
- } |
- |
+void MacroAssembler::LeaveExitFrame() { |
// Get the return address from the stack and restore the frame pointer. |
mov(ecx, Operand(ebp, 1 * kPointerSize)); |
mov(ebp, Operand(ebp, 0 * kPointerSize)); |
@@ -2077,8 +1968,7 @@ void MacroAssembler::IndexFromHash(Register hash, Register index) { |
void MacroAssembler::CallRuntime(const Runtime::Function* f, |
- int num_arguments, |
- SaveFPRegsMode save_doubles) { |
+ int num_arguments) { |
// If the expected number of arguments of the runtime function is |
// constant, we check that the actual number of arguments match the |
// expectation. |
@@ -2090,7 +1980,7 @@ void MacroAssembler::CallRuntime(const Runtime::Function* f, |
// smarter. |
Move(eax, Immediate(num_arguments)); |
mov(ebx, Immediate(ExternalReference(f, isolate()))); |
- CEntryStub ces(isolate(), 1, save_doubles); |
+ CEntryStub ces(isolate(), 1); |
CallStub(&ces); |
} |
@@ -2639,6 +2529,27 @@ void MacroAssembler::Ret(int bytes_dropped, Register scratch) { |
} |
+void MacroAssembler::VerifyX87StackDepth(uint32_t depth) { |
+ // Make sure the floating point stack is either empty or has depth items. |
+ ASSERT(depth <= 7); |
+ // This is very expensive. |
+ ASSERT(FLAG_debug_code && FLAG_enable_slow_asserts); |
+ |
+ // The top-of-stack (tos) is 7 if there is one item pushed. |
+ int tos = (8 - depth) % 8; |
+ const int kTopMask = 0x3800; |
+ push(eax); |
+ fwait(); |
+ fnstsw_ax(); |
+ and_(eax, kTopMask); |
+ shr(eax, 11); |
+ cmp(eax, Immediate(tos)); |
+ Check(equal, kUnexpectedFPUStackDepthAfterInstruction); |
+ fnclex(); |
+ pop(eax); |
+} |
+ |
+ |
void MacroAssembler::Drop(int stack_elements) { |
if (stack_elements > 0) { |
add(esp, Immediate(stack_elements * kPointerSize)); |
@@ -2667,22 +2578,6 @@ void MacroAssembler::Move(const Operand& dst, const Immediate& x) { |
} |
-void MacroAssembler::Move(XMMRegister dst, double val) { |
- // TODO(titzer): recognize double constants with ExternalReferences. |
- uint64_t int_val = BitCast<uint64_t, double>(val); |
- if (int_val == 0) { |
- xorps(dst, dst); |
- } else { |
- int32_t lower = static_cast<int32_t>(int_val); |
- int32_t upper = static_cast<int32_t>(int_val >> kBitsPerInt); |
- push(Immediate(upper)); |
- push(Immediate(lower)); |
- movsd(dst, Operand(esp, 0)); |
- add(esp, Immediate(kDoubleSize)); |
- } |
-} |
- |
- |
void MacroAssembler::SetCounter(StatsCounter* counter, int value) { |
if (FLAG_native_code_counters && counter->Enabled()) { |
mov(Operand::StaticVariable(ExternalReference(counter)), Immediate(value)); |
@@ -2870,17 +2765,6 @@ void MacroAssembler::NumberOfOwnDescriptors(Register dst, Register map) { |
} |
-void MacroAssembler::LoadPowerOf2(XMMRegister dst, |
- Register scratch, |
- int power) { |
- ASSERT(is_uintn(power + HeapNumber::kExponentBias, |
- HeapNumber::kExponentBits)); |
- mov(scratch, Immediate(power + HeapNumber::kExponentBias)); |
- movd(dst, scratch); |
- psllq(dst, HeapNumber::kMantissaBits); |
-} |
- |
- |
void MacroAssembler::LookupNumberStringCache(Register object, |
Register result, |
Register scratch1, |
@@ -2928,8 +2812,9 @@ void MacroAssembler::LookupNumberStringCache(Register object, |
times_twice_pointer_size, |
FixedArray::kHeaderSize)); |
JumpIfSmi(probe, not_found); |
- movsd(xmm0, FieldOperand(object, HeapNumber::kValueOffset)); |
- ucomisd(xmm0, FieldOperand(probe, HeapNumber::kValueOffset)); |
+ fld_d(FieldOperand(object, HeapNumber::kValueOffset)); |
+ fld_d(FieldOperand(probe, HeapNumber::kValueOffset)); |
+ FCmp(); |
j(parity_even, not_found); // Bail out if NaN is involved. |
j(not_equal, not_found); // The cache did not contain this value. |
jmp(&load_result_from_cache, Label::kNear); |
@@ -3465,4 +3350,4 @@ void MacroAssembler::TruncatingDiv(Register dividend, int32_t divisor) { |
} } // namespace v8::internal |
-#endif // V8_TARGET_ARCH_IA32 |
+#endif // V8_TARGET_ARCH_X87 |