OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 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 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 // offset of the word in the remembered set. We divide by kBitsPerInt (32, | 213 // offset of the word in the remembered set. We divide by kBitsPerInt (32, |
214 // shift right 5) and then multiply by kIntSize (4, shift left 2). | 214 // shift right 5) and then multiply by kIntSize (4, shift left 2). |
215 const int kRSetWordShift = 3; | 215 const int kRSetWordShift = 3; |
216 | 216 |
217 Label fast, done; | 217 Label fast, done; |
218 | 218 |
219 // First, test that the object is not in the new space. We cannot set | 219 // First, test that the object is not in the new space. We cannot set |
220 // remembered set bits in the new space. | 220 // remembered set bits in the new space. |
221 // object: heap object pointer (with tag) | 221 // object: heap object pointer (with tag) |
222 // offset: offset to store location from the object | 222 // offset: offset to store location from the object |
223 and_(scratch, object, Operand(Heap::NewSpaceMask())); | 223 and_(scratch, object, Operand(ExternalReference::new_space_mask())); |
224 cmp(scratch, Operand(ExternalReference::new_space_start())); | 224 cmp(scratch, Operand(ExternalReference::new_space_start())); |
225 b(eq, &done); | 225 b(eq, &done); |
226 | 226 |
227 // Compute the bit offset in the remembered set. | 227 // Compute the bit offset in the remembered set. |
228 // object: heap object pointer (with tag) | 228 // object: heap object pointer (with tag) |
229 // offset: offset to store location from the object | 229 // offset: offset to store location from the object |
230 mov(ip, Operand(Page::kPageAlignmentMask)); // load mask only once | 230 mov(ip, Operand(Page::kPageAlignmentMask)); // load mask only once |
231 and_(scratch, object, Operand(ip)); // offset into page of the object | 231 and_(scratch, object, Operand(ip)); // offset into page of the object |
232 add(offset, scratch, Operand(offset)); // add offset into the object | 232 add(offset, scratch, Operand(offset)); // add offset into the object |
233 mov(offset, Operand(offset, LSR, kObjectAlignmentBits)); | 233 mov(offset, Operand(offset, LSR, kObjectAlignmentBits)); |
(...skipping 1233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1467 } | 1467 } |
1468 | 1468 |
1469 | 1469 |
1470 void CodePatcher::Emit(Address addr) { | 1470 void CodePatcher::Emit(Address addr) { |
1471 masm()->emit(reinterpret_cast<Instr>(addr)); | 1471 masm()->emit(reinterpret_cast<Instr>(addr)); |
1472 } | 1472 } |
1473 #endif // ENABLE_DEBUGGER_SUPPORT | 1473 #endif // ENABLE_DEBUGGER_SUPPORT |
1474 | 1474 |
1475 | 1475 |
1476 } } // namespace v8::internal | 1476 } } // namespace v8::internal |
OLD | NEW |