OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 6798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6809 } | 6809 } |
6810 | 6810 |
6811 | 6811 |
6812 struct AheadOfTimeWriteBarrierStubList { | 6812 struct AheadOfTimeWriteBarrierStubList { |
6813 Register object, value, address; | 6813 Register object, value, address; |
6814 RememberedSetAction action; | 6814 RememberedSetAction action; |
6815 }; | 6815 }; |
6816 | 6816 |
6817 | 6817 |
6818 struct AheadOfTimeWriteBarrierStubList kAheadOfTime[] = { | 6818 struct AheadOfTimeWriteBarrierStubList kAheadOfTime[] = { |
6819 // TODO(1696): Fill this in for ARM. | 6819 // Used in RegExpExecStub. |
| 6820 { r6, r4, r7, EMIT_REMEMBERED_SET }, |
| 6821 { r6, r2, r7, EMIT_REMEMBERED_SET }, |
| 6822 // Used in CompileArrayPushCall. |
| 6823 // Also used in StoreIC::GenerateNormal via GenerateDictionaryStore. |
| 6824 // Also used in KeyedStoreIC::GenerateGeneric. |
| 6825 { r3, r4, r5, EMIT_REMEMBERED_SET }, |
| 6826 // Used in CompileStoreGlobal. |
| 6827 { r4, r1, r2, OMIT_REMEMBERED_SET }, |
| 6828 // Used in StoreStubCompiler::CompileStoreField via GenerateStoreField. |
| 6829 { r1, r2, r3, EMIT_REMEMBERED_SET }, |
| 6830 { r3, r2, r1, EMIT_REMEMBERED_SET }, |
| 6831 // Used in KeyedStoreStubCompiler::CompileStoreField via GenerateStoreField. |
| 6832 { r2, r1, r3, EMIT_REMEMBERED_SET }, |
| 6833 { r3, r1, r2, EMIT_REMEMBERED_SET }, |
| 6834 // KeyedStoreStubCompiler::GenerateStoreFastElement. |
| 6835 { r4, r2, r3, EMIT_REMEMBERED_SET }, |
6820 // Null termination. | 6836 // Null termination. |
6821 { no_reg, no_reg, no_reg, EMIT_REMEMBERED_SET} | 6837 { no_reg, no_reg, no_reg, EMIT_REMEMBERED_SET} |
6822 }; | 6838 }; |
6823 | 6839 |
6824 | 6840 |
6825 bool RecordWriteStub::CompilingCallsToThisStubIsGCSafe() { | 6841 bool RecordWriteStub::CompilingCallsToThisStubIsGCSafe() { |
6826 for (AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; | 6842 for (AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
6827 !entry->object.is(no_reg); | 6843 !entry->object.is(no_reg); |
6828 entry++) { | 6844 entry++) { |
6829 if (object_.is(entry->object) && | 6845 if (object_.is(entry->object) && |
6830 value_.is(entry->value) && | 6846 value_.is(entry->value) && |
6831 address_.is(entry->address) && | 6847 address_.is(entry->address) && |
6832 remembered_set_action_ == entry->action && | 6848 remembered_set_action_ == entry->action && |
6833 save_fp_regs_mode_ == kDontSaveFPRegs) { | 6849 save_fp_regs_mode_ == kDontSaveFPRegs) { |
6834 return true; | 6850 return true; |
6835 } | 6851 } |
6836 } | 6852 } |
6837 return true; // TODO(1696): Should be false. | 6853 return false; |
6838 } | 6854 } |
6839 | 6855 |
6840 | 6856 |
6841 void StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime() { | 6857 void StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime() { |
6842 StoreBufferOverflowStub stub1(kDontSaveFPRegs); | 6858 StoreBufferOverflowStub stub1(kDontSaveFPRegs); |
6843 stub1.GetCode(); | 6859 stub1.GetCode(); |
6844 StoreBufferOverflowStub stub2(kSaveFPRegs); | 6860 StoreBufferOverflowStub stub2(kSaveFPRegs); |
6845 stub2.GetCode(); | 6861 stub2.GetCode(); |
6846 } | 6862 } |
6847 | 6863 |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7037 | 7053 |
7038 // Fall through when we need to inform the incremental marker. | 7054 // Fall through when we need to inform the incremental marker. |
7039 } | 7055 } |
7040 | 7056 |
7041 | 7057 |
7042 #undef __ | 7058 #undef __ |
7043 | 7059 |
7044 } } // namespace v8::internal | 7060 } } // namespace v8::internal |
7045 | 7061 |
7046 #endif // V8_TARGET_ARCH_ARM | 7062 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |