| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 5 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| 6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| 7 | 7 |
| 8 #include "assembler.h" | 8 #include "assembler.h" |
| 9 #include "frames.h" | 9 #include "frames.h" |
| 10 #include "globals.h" | 10 #include "globals.h" |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 // The offset is the offset from the start of the object, not the offset from | 237 // The offset is the offset from the start of the object, not the offset from |
| 238 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). | 238 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). |
| 239 void RecordWriteField( | 239 void RecordWriteField( |
| 240 Register object, | 240 Register object, |
| 241 int offset, | 241 int offset, |
| 242 Register value, | 242 Register value, |
| 243 Register scratch, | 243 Register scratch, |
| 244 LinkRegisterStatus lr_status, | 244 LinkRegisterStatus lr_status, |
| 245 SaveFPRegsMode save_fp, | 245 SaveFPRegsMode save_fp, |
| 246 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, | 246 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
| 247 SmiCheck smi_check = INLINE_SMI_CHECK); | 247 SmiCheck smi_check = INLINE_SMI_CHECK, |
| 248 bool value_is_in_new_space = false); |
| 249 |
| 250 void RecordWriteForMap( |
| 251 Register object, |
| 252 Register map, |
| 253 Register dst, |
| 254 LinkRegisterStatus lr_status, |
| 255 SaveFPRegsMode save_fp); |
| 248 | 256 |
| 249 // As above, but the offset has the tag presubtracted. For use with | 257 // As above, but the offset has the tag presubtracted. For use with |
| 250 // MemOperand(reg, off). | 258 // MemOperand(reg, off). |
| 251 inline void RecordWriteContextSlot( | 259 inline void RecordWriteContextSlot( |
| 252 Register context, | 260 Register context, |
| 253 int offset, | 261 int offset, |
| 254 Register value, | 262 Register value, |
| 255 Register scratch, | 263 Register scratch, |
| 256 LinkRegisterStatus lr_status, | 264 LinkRegisterStatus lr_status, |
| 257 SaveFPRegsMode save_fp, | 265 SaveFPRegsMode save_fp, |
| 258 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, | 266 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
| 259 SmiCheck smi_check = INLINE_SMI_CHECK) { | 267 SmiCheck smi_check = INLINE_SMI_CHECK, |
| 268 bool value_is_in_new_space = false) { |
| 260 RecordWriteField(context, | 269 RecordWriteField(context, |
| 261 offset + kHeapObjectTag, | 270 offset + kHeapObjectTag, |
| 262 value, | 271 value, |
| 263 scratch, | 272 scratch, |
| 264 lr_status, | 273 lr_status, |
| 265 save_fp, | 274 save_fp, |
| 266 remembered_set_action, | 275 remembered_set_action, |
| 267 smi_check); | 276 smi_check, |
| 277 value_is_in_new_space); |
| 268 } | 278 } |
| 269 | 279 |
| 270 // For a given |object| notify the garbage collector that the slot |address| | 280 // For a given |object| notify the garbage collector that the slot |address| |
| 271 // has been written. |value| is the object being stored. The value and | 281 // has been written. |value| is the object being stored. The value and |
| 272 // address registers are clobbered by the operation. | 282 // address registers are clobbered by the operation. |
| 273 void RecordWrite( | 283 void RecordWrite( |
| 274 Register object, | 284 Register object, |
| 275 Register address, | 285 Register address, |
| 276 Register value, | 286 Register value, |
| 277 LinkRegisterStatus lr_status, | 287 LinkRegisterStatus lr_status, |
| 278 SaveFPRegsMode save_fp, | 288 SaveFPRegsMode save_fp, |
| 279 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, | 289 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
| 280 SmiCheck smi_check = INLINE_SMI_CHECK); | 290 SmiCheck smi_check = INLINE_SMI_CHECK, |
| 291 bool value_is_in_new_space = false); |
| 281 | 292 |
| 282 // Push a handle. | 293 // Push a handle. |
| 283 void Push(Handle<Object> handle); | 294 void Push(Handle<Object> handle); |
| 284 void Push(Smi* smi) { Push(Handle<Smi>(smi, isolate())); } | 295 void Push(Smi* smi) { Push(Handle<Smi>(smi, isolate())); } |
| 285 | 296 |
| 286 // Push two registers. Pushes leftmost register first (to highest address). | 297 // Push two registers. Pushes leftmost register first (to highest address). |
| 287 void Push(Register src1, Register src2, Condition cond = al) { | 298 void Push(Register src1, Register src2, Condition cond = al) { |
| 288 ASSERT(!src1.is(src2)); | 299 ASSERT(!src1.is(src2)); |
| 289 if (src1.code() > src2.code()) { | 300 if (src1.code() > src2.code()) { |
| 290 stm(db_w, sp, src1.bit() | src2.bit(), cond); | 301 stm(db_w, sp, src1.bit() | src2.bit(), cond); |
| (...skipping 1310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1601 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1612 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
| 1602 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1613 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
| 1603 #else | 1614 #else |
| 1604 #define ACCESS_MASM(masm) masm-> | 1615 #define ACCESS_MASM(masm) masm-> |
| 1605 #endif | 1616 #endif |
| 1606 | 1617 |
| 1607 | 1618 |
| 1608 } } // namespace v8::internal | 1619 } } // namespace v8::internal |
| 1609 | 1620 |
| 1610 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1621 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| OLD | NEW |