Chromium Code Reviews| Index: src/ia32/codegen-ia32.cc |
| diff --git a/src/ia32/codegen-ia32.cc b/src/ia32/codegen-ia32.cc |
| index 022c117198eaccdcc4c02c3121235f891f6572e2..e54956c5a3358882e9e6b9bec049156811ee056f 100644 |
| --- a/src/ia32/codegen-ia32.cc |
| +++ b/src/ia32/codegen-ia32.cc |
| @@ -7686,6 +7686,7 @@ void CodeGenerator::GenerateSwapElements(ZoneList<Expression*>* args) { |
| __ mov(Operand(index2.reg(), 0), object.reg()); |
| __ mov(Operand(index1.reg(), 0), tmp2.reg()); |
| +#ifndef BASELINE_GC |
| Label done; |
| __ InNewSpace(tmp1.reg(), tmp2.reg(), equal, &done); |
| // Possible optimization: do a check that both values are Smis |
| @@ -7695,6 +7696,7 @@ void CodeGenerator::GenerateSwapElements(ZoneList<Expression*>* args) { |
| __ RecordWriteHelper(tmp2.reg(), index1.reg(), object.reg()); |
| __ RecordWriteHelper(tmp1.reg(), index2.reg(), object.reg()); |
| __ bind(&done); |
| +#endif |
| deferred->BindExit(); |
| frame_->Push(Factory::undefined_value()); |
| @@ -9632,6 +9634,7 @@ Result CodeGenerator::EmitNamedStore(Handle<String> name, bool is_contextual) { |
| // Update the write barrier. To save instructions in the inlined |
| // version we do not filter smis. |
| +#ifndef BASELINE_GC |
| Label skip_write_barrier; |
| __ InNewSpace(receiver.reg(), value.reg(), equal, &skip_write_barrier); |
| int delta_to_record_write = masm_->SizeOfCodeGeneratedSince(&patch_site); |
| @@ -9643,6 +9646,7 @@ Result CodeGenerator::EmitNamedStore(Handle<String> name, bool is_contextual) { |
| __ mov(scratch.reg(), Immediate(BitCast<int32_t>(kZapValue))); |
| } |
| __ bind(&skip_write_barrier); |
| +#endif |
| value.Unuse(); |
| scratch.Unuse(); |
| receiver.Unuse(); |
| @@ -9656,8 +9660,13 @@ Result CodeGenerator::EmitNamedStore(Handle<String> name, bool is_contextual) { |
| // to the write barrier store address computation in a test eax |
| // instruction. |
| int delta_to_patch_site = masm_->SizeOfCodeGeneratedSince(&patch_site); |
| +#ifndef BASELINE_GC |
| __ test(eax, |
| Immediate((delta_to_record_write << 16) | delta_to_patch_site)); |
| +#else |
| + __ test(eax, |
| + Immediate(delta_to_patch_site)); |
|
Vitaly Repeshko
2010/12/13 13:38:01
This can cause short encoding for the test instruc
|
| +#endif |
| done.Bind(&result); |
| } |