OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 // | 46 // |
47 // All methods are static. | 47 // All methods are static. |
48 | 48 |
49 class MarkCompactCollector: public AllStatic { | 49 class MarkCompactCollector: public AllStatic { |
50 public: | 50 public: |
51 // Type of functions to compute forwarding addresses of objects in | 51 // Type of functions to compute forwarding addresses of objects in |
52 // compacted spaces. Given an object and its size, return a (non-failure) | 52 // compacted spaces. Given an object and its size, return a (non-failure) |
53 // Object* that will be the object after forwarding. There is a separate | 53 // Object* that will be the object after forwarding. There is a separate |
54 // allocation function for each (compactable) space based on the location | 54 // allocation function for each (compactable) space based on the location |
55 // of the object before compaction. | 55 // of the object before compaction. |
56 typedef Object* (*AllocationFunction)(HeapObject* object, int object_size); | 56 typedef MaybeObject* (*AllocationFunction)(HeapObject* object, |
| 57 int object_size); |
57 | 58 |
58 // Type of functions to encode the forwarding address for an object. | 59 // Type of functions to encode the forwarding address for an object. |
59 // Given the object, its size, and the new (non-failure) object it will be | 60 // Given the object, its size, and the new (non-failure) object it will be |
60 // forwarded to, encode the forwarding address. For paged spaces, the | 61 // forwarded to, encode the forwarding address. For paged spaces, the |
61 // 'offset' input/output parameter contains the offset of the forwarded | 62 // 'offset' input/output parameter contains the offset of the forwarded |
62 // object from the forwarding address of the previous live object in the | 63 // object from the forwarding address of the previous live object in the |
63 // page as input, and is updated to contain the offset to be used for the | 64 // page as input, and is updated to contain the offset to be used for the |
64 // next live object in the same page. For spaces using a different | 65 // next live object in the same page. For spaces using a different |
65 // encoding (ie, contiguous spaces), the offset parameter is ignored. | 66 // encoding (ie, contiguous spaces), the offset parameter is ignored. |
66 typedef void (*EncodingFunction)(HeapObject* old_object, | 67 typedef void (*EncodingFunction)(HeapObject* old_object, |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 | 421 |
421 friend class UnmarkObjectVisitor; | 422 friend class UnmarkObjectVisitor; |
422 static void UnmarkObject(HeapObject* obj); | 423 static void UnmarkObject(HeapObject* obj); |
423 #endif | 424 #endif |
424 }; | 425 }; |
425 | 426 |
426 | 427 |
427 } } // namespace v8::internal | 428 } } // namespace v8::internal |
428 | 429 |
429 #endif // V8_MARK_COMPACT_H_ | 430 #endif // V8_MARK_COMPACT_H_ |
OLD | NEW |