Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/shared/mutableSpace.cpp @ 269:850fdf70db2b
Merge
author | jmasa |
---|---|
date | Mon, 28 Jul 2008 15:30:23 -0700 |
parents | d1605aabd0a1 12eea04c8b06 |
children | 4e400c36026f |
comparison
equal
deleted
inserted
replaced
238:3df2fe7c4451 | 269:850fdf70db2b |
---|---|
23 */ | 23 */ |
24 | 24 |
25 # include "incls/_precompiled.incl" | 25 # include "incls/_precompiled.incl" |
26 # include "incls/_mutableSpace.cpp.incl" | 26 # include "incls/_mutableSpace.cpp.incl" |
27 | 27 |
28 void MutableSpace::initialize(MemRegion mr, bool clear_space) { | 28 MutableSpace::MutableSpace(): ImmutableSpace(), _top(NULL) { |
29 _mangler = new MutableSpaceMangler(this); | |
30 } | |
31 | |
32 MutableSpace::~MutableSpace() { | |
33 delete _mangler; | |
34 } | |
35 | |
36 void MutableSpace::initialize(MemRegion mr, | |
37 bool clear_space, | |
38 bool mangle_space) { | |
29 HeapWord* bottom = mr.start(); | 39 HeapWord* bottom = mr.start(); |
30 HeapWord* end = mr.end(); | 40 HeapWord* end = mr.end(); |
31 | 41 |
32 assert(Universe::on_page_boundary(bottom) && Universe::on_page_boundary(end), | 42 assert(Universe::on_page_boundary(bottom) && Universe::on_page_boundary(end), |
33 "invalid space boundaries"); | 43 "invalid space boundaries"); |
34 set_bottom(bottom); | 44 set_bottom(bottom); |
35 set_end(end); | 45 set_end(end); |
36 | 46 |
37 if (clear_space) clear(); | 47 if (clear_space) { |
48 clear(mangle_space); | |
49 } | |
38 } | 50 } |
39 | 51 |
40 void MutableSpace::clear() { | 52 void MutableSpace::clear(bool mangle_space) { |
41 set_top(bottom()); | 53 set_top(bottom()); |
42 if (ZapUnusedHeapArea) mangle_unused_area(); | 54 if (ZapUnusedHeapArea && mangle_space) { |
55 mangle_unused_area(); | |
56 } | |
43 } | 57 } |
58 | |
59 #ifndef PRODUCT | |
60 void MutableSpace::check_mangled_unused_area(HeapWord* limit) { | |
61 mangler()->check_mangled_unused_area(limit); | |
62 } | |
63 | |
64 void MutableSpace::check_mangled_unused_area_complete() { | |
65 mangler()->check_mangled_unused_area_complete(); | |
66 } | |
67 | |
68 // Mangle only the unused space that has not previously | |
69 // been mangled and that has not been allocated since being | |
70 // mangled. | |
71 void MutableSpace::mangle_unused_area() { | |
72 mangler()->mangle_unused_area(); | |
73 } | |
74 | |
75 void MutableSpace::mangle_unused_area_complete() { | |
76 mangler()->mangle_unused_area_complete(); | |
77 } | |
78 | |
79 void MutableSpace::mangle_region(MemRegion mr) { | |
80 SpaceMangler::mangle_region(mr); | |
81 } | |
82 | |
83 void MutableSpace::set_top_for_allocations(HeapWord* v) { | |
84 mangler()->set_top_for_allocations(v); | |
85 } | |
86 | |
87 void MutableSpace::set_top_for_allocations() { | |
88 mangler()->set_top_for_allocations(top()); | |
89 } | |
90 #endif | |
44 | 91 |
45 // This version requires locking. */ | 92 // This version requires locking. */ |
46 HeapWord* MutableSpace::allocate(size_t size) { | 93 HeapWord* MutableSpace::allocate(size_t size) { |
47 assert(Heap_lock->owned_by_self() || | 94 assert(Heap_lock->owned_by_self() || |
48 (SafepointSynchronize::is_at_safepoint() && | 95 (SafepointSynchronize::is_at_safepoint() && |