Chromium Code Reviews| Index: src/ia32/code-stubs-ia32.cc |
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
| index 864e76c8dec5094e48a986196c1cf3925cc2913b..befe89c6a4ed1af550c6e54d912d1755fb80bae7 100644 |
| --- a/src/ia32/code-stubs-ia32.cc |
| +++ b/src/ia32/code-stubs-ia32.cc |
| @@ -7033,44 +7033,47 @@ struct AheadOfTimeWriteBarrierStubList { |
| }; |
| -struct AheadOfTimeWriteBarrierStubList kAheadOfTime[] = { |
| +#define REG(Name) { kRegister ## Name ## Code } |
|
fschneider
2012/03/07 12:01:34
Yes, I'd rather prefer kRegister_eax_Code in this
Philippe
2012/03/07 13:14:17
Done.
|
| + |
| +static const AheadOfTimeWriteBarrierStubList kAheadOfTime[] = { |
| // Used in RegExpExecStub. |
| - { ebx, eax, edi, EMIT_REMEMBERED_SET }, |
| + { REG(Ebx), REG(Eax), REG(Edi), EMIT_REMEMBERED_SET }, |
| // Used in CompileArrayPushCall. |
| - { ebx, ecx, edx, EMIT_REMEMBERED_SET }, |
| - { ebx, edi, edx, OMIT_REMEMBERED_SET }, |
| + { REG(Ebx), REG(Ecx), REG(Edx), EMIT_REMEMBERED_SET }, |
| + { REG(Ebx), REG(Edi), REG(Edx), OMIT_REMEMBERED_SET }, |
| // Used in CompileStoreGlobal and CallFunctionStub. |
| - { ebx, ecx, edx, OMIT_REMEMBERED_SET }, |
| + { REG(Ebx), REG(Ecx), REG(Edx), OMIT_REMEMBERED_SET }, |
| // Used in StoreStubCompiler::CompileStoreField and |
| // KeyedStoreStubCompiler::CompileStoreField via GenerateStoreField. |
| - { edx, ecx, ebx, EMIT_REMEMBERED_SET }, |
| + { REG(Edx), REG(Ecx), REG(Ebx), EMIT_REMEMBERED_SET }, |
| // GenerateStoreField calls the stub with two different permutations of |
| // registers. This is the second. |
| - { ebx, ecx, edx, EMIT_REMEMBERED_SET }, |
| + { REG(Ebx), REG(Ecx), REG(Edx), EMIT_REMEMBERED_SET }, |
| // StoreIC::GenerateNormal via GenerateDictionaryStore |
| - { ebx, edi, edx, EMIT_REMEMBERED_SET }, |
| + { REG(Ebx), REG(Edi), REG(Edx), EMIT_REMEMBERED_SET }, |
| // KeyedStoreIC::GenerateGeneric. |
| - { ebx, edx, ecx, EMIT_REMEMBERED_SET}, |
| + { REG(Ebx), REG(Edx), REG(Ecx), EMIT_REMEMBERED_SET}, |
| // KeyedStoreStubCompiler::GenerateStoreFastElement. |
| - { edi, ebx, ecx, EMIT_REMEMBERED_SET}, |
| - { edx, edi, ebx, EMIT_REMEMBERED_SET}, |
| + { REG(Edi), REG(Ebx), REG(Ecx), EMIT_REMEMBERED_SET}, |
| + { REG(Edx), REG(Edi), REG(Ebx), EMIT_REMEMBERED_SET}, |
| // ElementsTransitionGenerator::GenerateSmiOnlyToObject |
| // and ElementsTransitionGenerator::GenerateSmiOnlyToDouble |
| // and ElementsTransitionGenerator::GenerateDoubleToObject |
| - { edx, ebx, edi, EMIT_REMEMBERED_SET}, |
| - { edx, ebx, edi, OMIT_REMEMBERED_SET}, |
| + { REG(Edx), REG(Ebx), REG(Edi), EMIT_REMEMBERED_SET}, |
| + { REG(Edx), REG(Ebx), REG(Edi), OMIT_REMEMBERED_SET}, |
| // ElementsTransitionGenerator::GenerateDoubleToObject |
| - { eax, edx, esi, EMIT_REMEMBERED_SET}, |
| - { edx, eax, edi, EMIT_REMEMBERED_SET}, |
| + { REG(Eax), REG(Edx), REG(Esi), EMIT_REMEMBERED_SET}, |
| + { REG(Edx), REG(Eax), REG(Edi), EMIT_REMEMBERED_SET}, |
| // StoreArrayLiteralElementStub::Generate |
| - { ebx, eax, ecx, EMIT_REMEMBERED_SET}, |
| + { REG(Ebx), REG(Eax), REG(Ecx), EMIT_REMEMBERED_SET}, |
| // Null termination. |
| - { no_reg, no_reg, no_reg, EMIT_REMEMBERED_SET} |
| + { REG(None), REG(None), REG(None), EMIT_REMEMBERED_SET} |
| }; |
| +#undef REG |
| bool RecordWriteStub::IsPregenerated() { |
| - for (AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
| + for (const AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
| !entry->object.is(no_reg); |
| entry++) { |
| if (object_.is(entry->object) && |
| @@ -7098,7 +7101,7 @@ void StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime() { |
| void RecordWriteStub::GenerateFixedRegStubsAheadOfTime() { |
| - for (AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
| + for (const AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
| !entry->object.is(no_reg); |
| entry++) { |
| RecordWriteStub stub(entry->object, |