| 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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 // Don't load NaNs or infinities, branch to the non number case instead. | 77 // Don't load NaNs or infinities, branch to the non number case instead. |
| 78 AVOID_NANS_AND_INFINITIES = 1 << 1 | 78 AVOID_NANS_AND_INFINITIES = 1 << 1 |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 | 81 |
| 82 enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET }; | 82 enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET }; |
| 83 enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK }; | 83 enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK }; |
| 84 enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved }; | 84 enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved }; |
| 85 | 85 |
| 86 | 86 |
| 87 bool Aliasing(Register r1, Register r2, Register r3, Register r4); | 87 bool AreAliased(Register r1, Register r2, Register r3, Register r4); |
| 88 | 88 |
| 89 | 89 |
| 90 // MacroAssembler implements a collection of frequently used macros. | 90 // MacroAssembler implements a collection of frequently used macros. |
| 91 class MacroAssembler: public Assembler { | 91 class MacroAssembler: public Assembler { |
| 92 public: | 92 public: |
| 93 // The isolate parameter can be NULL if the macro assembler should | 93 // The isolate parameter can be NULL if the macro assembler should |
| 94 // not use isolate-dependent functionality. In this case, it's the | 94 // not use isolate-dependent functionality. In this case, it's the |
| 95 // responsibility of the caller to never invoke such function on the | 95 // responsibility of the caller to never invoke such function on the |
| 96 // macro assembler. | 96 // macro assembler. |
| 97 MacroAssembler(Isolate* isolate, void* buffer, int size); | 97 MacroAssembler(Isolate* isolate, void* buffer, int size); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 | 170 |
| 171 void IncrementalMarkingRecordWriteHelper(Register object, | 171 void IncrementalMarkingRecordWriteHelper(Register object, |
| 172 Register value, | 172 Register value, |
| 173 Register address); | 173 Register address); |
| 174 | 174 |
| 175 enum RememberedSetFinalAction { | 175 enum RememberedSetFinalAction { |
| 176 kReturnAtEnd, | 176 kReturnAtEnd, |
| 177 kFallThroughAtEnd | 177 kFallThroughAtEnd |
| 178 }; | 178 }; |
| 179 | 179 |
| 180 // For page containing |object| mark region covering |addr| dirty. | 180 // Record in the remembered set the fact that we have a pointer to new space |
| 181 // RememberedSetHelper only works if the object is not in new | 181 // at the address pointed to by the addr register. Only works if addr is not |
| 182 // space. | 182 // in new space. |
| 183 void RememberedSetHelper(Register addr, | 183 void RememberedSetHelper(Register addr, |
| 184 Register scratch, | 184 Register scratch, |
| 185 SaveFPRegsMode save_fp, | 185 SaveFPRegsMode save_fp, |
| 186 RememberedSetFinalAction and_then); | 186 RememberedSetFinalAction and_then); |
| 187 | 187 |
| 188 void CheckPageFlag(Register object, | 188 void CheckPageFlag(Register object, |
| 189 Register scratch, | 189 Register scratch, |
| 190 MemoryChunk::MemoryChunkFlags flag, | 190 MemoryChunk::MemoryChunkFlags flag, |
| 191 Condition cc, | 191 Condition cc, |
| 192 Label* condition_met); | 192 Label* condition_met); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 | 228 |
| 229 // Checks whether an object is data-only, ie it does need to be scanned by the | 229 // Checks whether an object is data-only, ie it does need to be scanned by the |
| 230 // garbage collector. | 230 // garbage collector. |
| 231 void IsDataObject(Register value, | 231 void IsDataObject(Register value, |
| 232 Register scratch, | 232 Register scratch, |
| 233 Label* not_data_object, | 233 Label* not_data_object, |
| 234 Label::Distance not_data_object_distance); | 234 Label::Distance not_data_object_distance); |
| 235 | 235 |
| 236 // Notify the garbage collector that we wrote a pointer into an object. | 236 // Notify the garbage collector that we wrote a pointer into an object. |
| 237 // |object| is the object being stored into, |value| is the object being | 237 // |object| is the object being stored into, |value| is the object being |
| 238 // stored. All registers are clobbered by the operation. RecordWriteField | 238 // stored. value and scratch registers are clobbered by the operation. |
| 239 // filters out smis so it does not update the write barrier if the value is a | 239 // The offset is the offset from the start of the object, not the offset from |
| 240 // smi. The offset is the offset from the start of the object, not the offset | 240 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). |
| 241 // from the tagged HeapObject pointer. For use with | |
| 242 // FieldMemOperand(reg, off) | |
| 243 void RecordWriteField( | 241 void RecordWriteField( |
| 244 Register object, | 242 Register object, |
| 245 int offset, | 243 int offset, |
| 246 Register value, | 244 Register value, |
| 247 Register scratch, | 245 Register scratch, |
| 248 LinkRegisterStatus lr_status, | 246 LinkRegisterStatus lr_status, |
| 249 SaveFPRegsMode save_fp, | 247 SaveFPRegsMode save_fp, |
| 250 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, | 248 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
| 251 SmiCheck smi_check = INLINE_SMI_CHECK); | 249 SmiCheck smi_check = INLINE_SMI_CHECK); |
| 252 | 250 |
| (...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1215 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1213 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
| 1216 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1214 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
| 1217 #else | 1215 #else |
| 1218 #define ACCESS_MASM(masm) masm-> | 1216 #define ACCESS_MASM(masm) masm-> |
| 1219 #endif | 1217 #endif |
| 1220 | 1218 |
| 1221 | 1219 |
| 1222 } } // namespace v8::internal | 1220 } } // namespace v8::internal |
| 1223 | 1221 |
| 1224 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1222 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| OLD | NEW |