| Index: src/x87/full-codegen-x87.cc
|
| diff --git a/src/ia32/full-codegen-ia32.cc b/src/x87/full-codegen-x87.cc
|
| similarity index 99%
|
| copy from src/ia32/full-codegen-ia32.cc
|
| copy to src/x87/full-codegen-x87.cc
|
| index 07afba6c80d7ad264907a42904c29cc3689aac32..06eaa21f311b8e4ab839e56a0976ca1d1d4ac457 100644
|
| --- a/src/ia32/full-codegen-ia32.cc
|
| +++ b/src/x87/full-codegen-x87.cc
|
| @@ -4,7 +4,7 @@
|
|
|
| #include "v8.h"
|
|
|
| -#if V8_TARGET_ARCH_IA32
|
| +#if V8_TARGET_ARCH_X87
|
|
|
| #include "code-stubs.h"
|
| #include "codegen.h"
|
| @@ -111,7 +111,7 @@ static void EmitStackCheck(MacroAssembler* masm_,
|
| // o esp: stack pointer (pointing to return address)
|
| //
|
| // The function builds a JS frame. Please see JavaScriptFrameConstants in
|
| -// frames-ia32.h for its layout.
|
| +// frames-x87.h for its layout.
|
| void FullCodeGenerator::Generate() {
|
| CompilationInfo* info = info_;
|
| handler_table_ =
|
| @@ -232,8 +232,7 @@ void FullCodeGenerator::Generate() {
|
| __ RecordWriteContextSlot(esi,
|
| context_offset,
|
| eax,
|
| - ebx,
|
| - kDontSaveFPRegs);
|
| + ebx);
|
| }
|
| }
|
| }
|
| @@ -448,24 +447,24 @@ void FullCodeGenerator::TestContext::Plug(Variable* var) const {
|
|
|
|
|
| void FullCodeGenerator::EffectContext::Plug(Heap::RootListIndex index) const {
|
| - UNREACHABLE(); // Not used on IA32.
|
| + UNREACHABLE(); // Not used on X87.
|
| }
|
|
|
|
|
| void FullCodeGenerator::AccumulatorValueContext::Plug(
|
| Heap::RootListIndex index) const {
|
| - UNREACHABLE(); // Not used on IA32.
|
| + UNREACHABLE(); // Not used on X87.
|
| }
|
|
|
|
|
| void FullCodeGenerator::StackValueContext::Plug(
|
| Heap::RootListIndex index) const {
|
| - UNREACHABLE(); // Not used on IA32.
|
| + UNREACHABLE(); // Not used on X87.
|
| }
|
|
|
|
|
| void FullCodeGenerator::TestContext::Plug(Heap::RootListIndex index) const {
|
| - UNREACHABLE(); // Not used on IA32.
|
| + UNREACHABLE(); // Not used on X87.
|
| }
|
|
|
|
|
| @@ -705,7 +704,7 @@ void FullCodeGenerator::SetVar(Variable* var,
|
| if (var->IsContextSlot()) {
|
| int offset = Context::SlotOffset(var->index());
|
| ASSERT(!scratch0.is(esi) && !src.is(esi) && !scratch1.is(esi));
|
| - __ RecordWriteContextSlot(scratch0, offset, src, scratch1, kDontSaveFPRegs);
|
| + __ RecordWriteContextSlot(scratch0, offset, src, scratch1);
|
| }
|
| }
|
|
|
| @@ -839,7 +838,6 @@ void FullCodeGenerator::VisitFunctionDeclaration(
|
| Context::SlotOffset(variable->index()),
|
| result_register(),
|
| ecx,
|
| - kDontSaveFPRegs,
|
| EMIT_REMEMBERED_SET,
|
| OMIT_SMI_CHECK);
|
| PrepareForBailoutForId(proxy->id(), NO_REGISTERS);
|
| @@ -879,7 +877,6 @@ void FullCodeGenerator::VisitModuleDeclaration(ModuleDeclaration* declaration) {
|
| Context::SlotOffset(variable->index()),
|
| eax,
|
| ecx,
|
| - kDontSaveFPRegs,
|
| EMIT_REMEMBERED_SET,
|
| OMIT_SMI_CHECK);
|
| PrepareForBailoutForId(declaration->proxy()->id(), NO_REGISTERS);
|
| @@ -1772,7 +1769,6 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
| __ mov(FieldOperand(ebx, offset), result_register());
|
| // Update the write barrier for the array store.
|
| __ RecordWriteField(ebx, offset, result_register(), ecx,
|
| - kDontSaveFPRegs,
|
| EMIT_REMEMBERED_SET,
|
| INLINE_SMI_CHECK);
|
| } else {
|
| @@ -1931,8 +1927,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
| Immediate(Smi::FromInt(continuation.pos())));
|
| __ mov(FieldOperand(eax, JSGeneratorObject::kContextOffset), esi);
|
| __ mov(ecx, esi);
|
| - __ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx,
|
| - kDontSaveFPRegs);
|
| + __ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx);
|
| __ lea(ebx, Operand(ebp, StandardFrameConstants::kExpressionsOffset));
|
| __ cmp(esp, ebx);
|
| __ j(equal, &post_runtime);
|
| @@ -2003,8 +1998,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
| Immediate(Smi::FromInt(l_continuation.pos())));
|
| __ mov(FieldOperand(eax, JSGeneratorObject::kContextOffset), esi);
|
| __ mov(ecx, esi);
|
| - __ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx,
|
| - kDontSaveFPRegs);
|
| + __ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx);
|
| __ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
| __ mov(context_register(),
|
| Operand(ebp, StandardFrameConstants::kContextOffset));
|
| @@ -2198,7 +2192,7 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) {
|
| // Only the value field needs a write barrier, as the other values are in the
|
| // root set.
|
| __ RecordWriteField(eax, JSGeneratorObject::kResultValuePropertyOffset,
|
| - ecx, edx, kDontSaveFPRegs);
|
| + ecx, edx);
|
| }
|
|
|
|
|
| @@ -2379,7 +2373,7 @@ void FullCodeGenerator::EmitStoreToStackLocalOrContextSlot(
|
| if (var->IsContextSlot()) {
|
| __ mov(edx, eax);
|
| int offset = Context::SlotOffset(var->index());
|
| - __ RecordWriteContextSlot(ecx, offset, edx, ebx, kDontSaveFPRegs);
|
| + __ RecordWriteContextSlot(ecx, offset, edx, ebx);
|
| }
|
| }
|
|
|
| @@ -3415,8 +3409,7 @@ void FullCodeGenerator::EmitMathPow(CallRuntime* expr) {
|
| VisitForStackValue(args->at(0));
|
| VisitForStackValue(args->at(1));
|
|
|
| - MathPowStub stub(isolate(), MathPowStub::ON_STACK);
|
| - __ CallStub(&stub);
|
| + __ CallRuntime(Runtime::kHiddenMathPowSlow, 2);
|
| context()->Plug(eax);
|
| }
|
|
|
| @@ -3443,7 +3436,7 @@ void FullCodeGenerator::EmitSetValueOf(CallRuntime* expr) {
|
| // Update the write barrier. Save the value as it will be
|
| // overwritten by the write barrier code and is needed afterward.
|
| __ mov(edx, eax);
|
| - __ RecordWriteField(ebx, JSValue::kValueOffset, edx, ecx, kDontSaveFPRegs);
|
| + __ RecordWriteField(ebx, JSValue::kValueOffset, edx, ecx);
|
|
|
| __ bind(&done);
|
| context()->Plug(eax);
|
| @@ -4799,4 +4792,4 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
|
|
| } } // namespace v8::internal
|
|
|
| -#endif // V8_TARGET_ARCH_IA32
|
| +#endif // V8_TARGET_ARCH_X87
|
|
|