OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 7244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7255 // StoreArrayLiteralElementStub::Generate | 7255 // StoreArrayLiteralElementStub::Generate |
7256 { REG(r5), REG(r0), REG(r6), EMIT_REMEMBERED_SET }, | 7256 { REG(r5), REG(r0), REG(r6), EMIT_REMEMBERED_SET }, |
7257 // FastNewClosureStub::Generate | 7257 // FastNewClosureStub::Generate |
7258 { REG(r2), REG(r4), REG(r1), EMIT_REMEMBERED_SET }, | 7258 { REG(r2), REG(r4), REG(r1), EMIT_REMEMBERED_SET }, |
7259 // Null termination. | 7259 // Null termination. |
7260 { REG(no_reg), REG(no_reg), REG(no_reg), EMIT_REMEMBERED_SET} | 7260 { REG(no_reg), REG(no_reg), REG(no_reg), EMIT_REMEMBERED_SET} |
7261 }; | 7261 }; |
7262 | 7262 |
7263 #undef REG | 7263 #undef REG |
7264 | 7264 |
| 7265 |
7265 bool RecordWriteStub::IsPregenerated() { | 7266 bool RecordWriteStub::IsPregenerated() { |
7266 for (const AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; | 7267 for (const AheadOfTimeWriteBarrierStubList* entry = kAheadOfTime; |
7267 !entry->object.is(no_reg); | 7268 !entry->object.is(no_reg); |
7268 entry++) { | 7269 entry++) { |
7269 if (object_.is(entry->object) && | 7270 if (object_.is(entry->object) && |
7270 value_.is(entry->value) && | 7271 value_.is(entry->value) && |
7271 address_.is(entry->address) && | 7272 address_.is(entry->address) && |
7272 remembered_set_action_ == entry->action && | 7273 remembered_set_action_ == entry->action && |
7273 save_fp_regs_mode_ == kDontSaveFPRegs) { | 7274 save_fp_regs_mode_ == kDontSaveFPRegs) { |
7274 return true; | 7275 return true; |
(...skipping 21 matching lines...) Expand all Loading... |
7296 RecordWriteStub stub(entry->object, | 7297 RecordWriteStub stub(entry->object, |
7297 entry->value, | 7298 entry->value, |
7298 entry->address, | 7299 entry->address, |
7299 entry->action, | 7300 entry->action, |
7300 kDontSaveFPRegs); | 7301 kDontSaveFPRegs); |
7301 stub.GetCode()->set_is_pregenerated(true); | 7302 stub.GetCode()->set_is_pregenerated(true); |
7302 } | 7303 } |
7303 } | 7304 } |
7304 | 7305 |
7305 | 7306 |
| 7307 bool CodeStub::CanUseFPRegisters() { |
| 7308 return CpuFeatures::IsSupported(VFP2); |
| 7309 } |
| 7310 |
| 7311 |
7306 // Takes the input in 3 registers: address_ value_ and object_. A pointer to | 7312 // Takes the input in 3 registers: address_ value_ and object_. A pointer to |
7307 // the value has just been written into the object, now this stub makes sure | 7313 // the value has just been written into the object, now this stub makes sure |
7308 // we keep the GC informed. The word in the object where the value has been | 7314 // we keep the GC informed. The word in the object where the value has been |
7309 // written is in the address register. | 7315 // written is in the address register. |
7310 void RecordWriteStub::Generate(MacroAssembler* masm) { | 7316 void RecordWriteStub::Generate(MacroAssembler* masm) { |
7311 Label skip_to_incremental_noncompacting; | 7317 Label skip_to_incremental_noncompacting; |
7312 Label skip_to_incremental_compacting; | 7318 Label skip_to_incremental_compacting; |
7313 | 7319 |
7314 // The first two instructions are generated with labels so as to get the | 7320 // The first two instructions are generated with labels so as to get the |
7315 // offset fixed up correctly by the bind(Label*) call. We patch it back and | 7321 // offset fixed up correctly by the bind(Label*) call. We patch it back and |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7625 | 7631 |
7626 __ Pop(lr, r5, r1); | 7632 __ Pop(lr, r5, r1); |
7627 __ Ret(); | 7633 __ Ret(); |
7628 } | 7634 } |
7629 | 7635 |
7630 #undef __ | 7636 #undef __ |
7631 | 7637 |
7632 } } // namespace v8::internal | 7638 } } // namespace v8::internal |
7633 | 7639 |
7634 #endif // V8_TARGET_ARCH_ARM | 7640 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |