OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_PPC_MACRO_ASSEMBLER_PPC_H_ | 5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_ |
6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_ | 6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_ |
7 | 7 |
8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
10 #include "src/frames.h" | 10 #include "src/frames.h" |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 | 206 |
207 // Detects conservatively whether an object is data-only, i.e. it does need to | 207 // Detects conservatively whether an object is data-only, i.e. it does need to |
208 // be scanned by the garbage collector. | 208 // be scanned by the garbage collector. |
209 void JumpIfDataObject(Register value, Register scratch, | 209 void JumpIfDataObject(Register value, Register scratch, |
210 Label* not_data_object); | 210 Label* not_data_object); |
211 | 211 |
212 // Notify the garbage collector that we wrote a pointer into an object. | 212 // Notify the garbage collector that we wrote a pointer into an object. |
213 // |object| is the object being stored into, |value| is the object being | 213 // |object| is the object being stored into, |value| is the object being |
214 // stored. value and scratch registers are clobbered by the operation. | 214 // stored. value and scratch registers are clobbered by the operation. |
215 // The offset is the offset from the start of the object, not the offset from | 215 // The offset is the offset from the start of the object, not the offset from |
216 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). | 216 // the tagged HeapObject pointer. For use with FieldMemOperand(reg, off). |
217 void RecordWriteField( | 217 void RecordWriteField( |
218 Register object, int offset, Register value, Register scratch, | 218 Register object, int offset, Register value, Register scratch, |
219 LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, | 219 LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, |
220 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, | 220 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
221 SmiCheck smi_check = INLINE_SMI_CHECK, | 221 SmiCheck smi_check = INLINE_SMI_CHECK, |
222 PointersToHereCheck pointers_to_here_check_for_value = | 222 PointersToHereCheck pointers_to_here_check_for_value = |
223 kPointersToHereMaybeInteresting); | 223 kPointersToHereMaybeInteresting); |
224 | 224 |
225 // As above, but the offset has the tag presubtracted. For use with | 225 // As above, but the offset has the tag presubtracted. For use with |
226 // MemOperand(reg, off). | 226 // MemOperand(reg, off). |
(...skipping 1315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1542 byte* address_; // The address of the code being patched. | 1542 byte* address_; // The address of the code being patched. |
1543 int size_; // Number of bytes of the expected patch size. | 1543 int size_; // Number of bytes of the expected patch size. |
1544 MacroAssembler masm_; // Macro assembler used to generate the code. | 1544 MacroAssembler masm_; // Macro assembler used to generate the code. |
1545 FlushICache flush_cache_; // Whether to flush the I cache after patching. | 1545 FlushICache flush_cache_; // Whether to flush the I cache after patching. |
1546 }; | 1546 }; |
1547 | 1547 |
1548 | 1548 |
1549 // ----------------------------------------------------------------------------- | 1549 // ----------------------------------------------------------------------------- |
1550 // Static helper functions. | 1550 // Static helper functions. |
1551 | 1551 |
1552 inline MemOperand ContextOperand(Register context, int index) { | 1552 inline MemOperand ContextOperand(Register context, int index = 0) { |
1553 return MemOperand(context, Context::SlotOffset(index)); | 1553 return MemOperand(context, Context::SlotOffset(index)); |
1554 } | 1554 } |
1555 | 1555 |
1556 | 1556 |
1557 inline MemOperand GlobalObjectOperand() { | 1557 inline MemOperand GlobalObjectOperand() { |
1558 return ContextOperand(cp, Context::GLOBAL_OBJECT_INDEX); | 1558 return ContextOperand(cp, Context::GLOBAL_OBJECT_INDEX); |
1559 } | 1559 } |
1560 | 1560 |
1561 | 1561 |
1562 #ifdef GENERATED_CODE_COVERAGE | 1562 #ifdef GENERATED_CODE_COVERAGE |
1563 #define CODE_COVERAGE_STRINGIFY(x) #x | 1563 #define CODE_COVERAGE_STRINGIFY(x) #x |
1564 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) | 1564 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) |
1565 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1565 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
1566 #define ACCESS_MASM(masm) \ | 1566 #define ACCESS_MASM(masm) \ |
1567 masm->stop(__FILE_LINE__); \ | 1567 masm->stop(__FILE_LINE__); \ |
1568 masm-> | 1568 masm-> |
1569 #else | 1569 #else |
1570 #define ACCESS_MASM(masm) masm-> | 1570 #define ACCESS_MASM(masm) masm-> |
1571 #endif | 1571 #endif |
1572 } | 1572 } |
1573 } // namespace v8::internal | 1573 } // namespace v8::internal |
1574 | 1574 |
1575 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ | 1575 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ |
OLD | NEW |