1 /* |
1 /* |
2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
34 |
34 |
35 // Note that MemRegions are passed by value, not by reference. |
35 // Note that MemRegions are passed by value, not by reference. |
36 // The intent is that they remain very small and contain no |
36 // The intent is that they remain very small and contain no |
37 // objects. |
37 // objects. |
38 |
38 |
|
39 class MetaWord; |
|
40 |
39 class MemRegion VALUE_OBJ_CLASS_SPEC { |
41 class MemRegion VALUE_OBJ_CLASS_SPEC { |
40 friend class VMStructs; |
42 friend class VMStructs; |
41 private: |
43 private: |
42 HeapWord* _start; |
44 HeapWord* _start; |
43 size_t _word_size; |
45 size_t _word_size; |
46 MemRegion() : _start(NULL), _word_size(0) {}; |
48 MemRegion() : _start(NULL), _word_size(0) {}; |
47 MemRegion(HeapWord* start, size_t word_size) : |
49 MemRegion(HeapWord* start, size_t word_size) : |
48 _start(start), _word_size(word_size) {}; |
50 _start(start), _word_size(word_size) {}; |
49 MemRegion(HeapWord* start, HeapWord* end) : |
51 MemRegion(HeapWord* start, HeapWord* end) : |
50 _start(start), _word_size(pointer_delta(end, start)) { |
52 _start(start), _word_size(pointer_delta(end, start)) { |
|
53 assert(end >= start, "incorrect constructor arguments"); |
|
54 } |
|
55 MemRegion(MetaWord* start, MetaWord* end) : |
|
56 _start((HeapWord*)start), _word_size(pointer_delta(end, start)) { |
51 assert(end >= start, "incorrect constructor arguments"); |
57 assert(end >= start, "incorrect constructor arguments"); |
52 } |
58 } |
53 |
59 |
54 MemRegion(const MemRegion& mr): _start(mr._start), _word_size(mr._word_size) {} |
60 MemRegion(const MemRegion& mr): _start(mr._start), _word_size(mr._word_size) {} |
55 |
61 |