| 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 | 71 |
| 72 void IncrementalMarkingRecordWriteHelper(Register object, | 72 void IncrementalMarkingRecordWriteHelper(Register object, |
| 73 Register value, | 73 Register value, |
| 74 Register address); | 74 Register address); |
| 75 | 75 |
| 76 enum RememberedSetFinalAction { | 76 enum RememberedSetFinalAction { |
| 77 kReturnAtEnd, | 77 kReturnAtEnd, |
| 78 kFallThroughAtEnd | 78 kFallThroughAtEnd |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 // For page containing |object| mark region covering |addr| dirty. | 81 // Record in the remembered set the fact that we have a pointer to new space |
| 82 // RememberedSetHelper only works if the object is not in new | 82 // at the address pointed to by the addr register. Only works if addr is not |
| 83 // space. | 83 // in new space. |
| 84 void RememberedSetHelper(Register addr, | 84 void RememberedSetHelper(Register addr, |
| 85 Register scratch, | 85 Register scratch, |
| 86 SaveFPRegsMode save_fp, | 86 SaveFPRegsMode save_fp, |
| 87 RememberedSetFinalAction and_then); | 87 RememberedSetFinalAction and_then); |
| 88 | 88 |
| 89 void CheckPageFlag(Register object, | 89 void CheckPageFlag(Register object, |
| 90 Register scratch, | 90 Register scratch, |
| 91 MemoryChunk::MemoryChunkFlags flag, | 91 MemoryChunk::MemoryChunkFlags flag, |
| 92 Condition cc, | 92 Condition cc, |
| 93 Label* condition_met, | 93 Label* condition_met, |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 | 131 |
| 132 // Checks whether an object is data-only, ie it does need to be scanned by the | 132 // Checks whether an object is data-only, ie it does need to be scanned by the |
| 133 // garbage collector. | 133 // garbage collector. |
| 134 void IsDataObject(Register value, | 134 void IsDataObject(Register value, |
| 135 Register scratch, | 135 Register scratch, |
| 136 Label* not_data_object, | 136 Label* not_data_object, |
| 137 Label::Distance not_data_object_distance); | 137 Label::Distance not_data_object_distance); |
| 138 | 138 |
| 139 // Notify the garbage collector that we wrote a pointer into an object. | 139 // Notify the garbage collector that we wrote a pointer into an object. |
| 140 // |object| is the object being stored into, |value| is the object being | 140 // |object| is the object being stored into, |value| is the object being |
| 141 // stored. All registers are clobbered by the operation. RecordWriteField | 141 // stored. value and scratch registers are clobbered by the operation. |
| 142 // filters out smis so it does not update the write barrier if the value is a | 142 // The offset is the offset from the start of the object, not the offset from |
| 143 // smi. The offset is the offset from the start of the object, not the offset | 143 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). |
| 144 // from the tagged HeapObject pointer. For use with FieldOperand(reg, off). | |
| 145 void RecordWriteField( | 144 void RecordWriteField( |
| 146 Register object, | 145 Register object, |
| 147 int offset, | 146 int offset, |
| 148 Register value, | 147 Register value, |
| 149 Register scratch, | 148 Register scratch, |
| 150 SaveFPRegsMode save_fp, | 149 SaveFPRegsMode save_fp, |
| 151 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, | 150 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
| 152 SmiCheck smi_check = INLINE_SMI_CHECK); | 151 SmiCheck smi_check = INLINE_SMI_CHECK); |
| 153 | 152 |
| 154 // As above, but the offset has the tag presubtracted. For use with | 153 // As above, but the offset has the tag presubtracted. For use with |
| (...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 872 } \ | 871 } \ |
| 873 masm-> | 872 masm-> |
| 874 #else | 873 #else |
| 875 #define ACCESS_MASM(masm) masm-> | 874 #define ACCESS_MASM(masm) masm-> |
| 876 #endif | 875 #endif |
| 877 | 876 |
| 878 | 877 |
| 879 } } // namespace v8::internal | 878 } } // namespace v8::internal |
| 880 | 879 |
| 881 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ | 880 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ |
| OLD | NEW |