equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2016, 2017, 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. |
33 while (!_stack.is_empty()) { |
33 while (!_stack.is_empty()) { |
34 const OopAndMarkOop elem = _stack.pop(); |
34 const OopAndMarkOop elem = _stack.pop(); |
35 elem.set_mark(); |
35 elem.set_mark(); |
36 } |
36 } |
37 assert_empty(); |
37 assert_empty(); |
|
38 } |
|
39 |
|
40 void PreservedMarks::adjust_during_full_gc() { |
|
41 StackIterator<OopAndMarkOop, mtGC> iter(_stack); |
|
42 while (!iter.is_empty()) { |
|
43 OopAndMarkOop* elem = iter.next_addr(); |
|
44 |
|
45 oop obj = elem->get_oop(); |
|
46 if (obj->is_forwarded()) { |
|
47 elem->set_oop(obj->forwardee()); |
|
48 } |
|
49 } |
38 } |
50 } |
39 |
51 |
40 void PreservedMarks::restore_and_increment(volatile size_t* const total_size_addr) { |
52 void PreservedMarks::restore_and_increment(volatile size_t* const total_size_addr) { |
41 const size_t stack_size = size(); |
53 const size_t stack_size = size(); |
42 restore(); |
54 restore(); |
102 _sub_tasks.set_n_threads(worker_num); |
114 _sub_tasks.set_n_threads(worker_num); |
103 _sub_tasks.set_n_tasks(preserved_marks_set->num()); |
115 _sub_tasks.set_n_tasks(preserved_marks_set->num()); |
104 } |
116 } |
105 }; |
117 }; |
106 |
118 |
107 |
|
108 void PreservedMarksSet::reclaim() { |
119 void PreservedMarksSet::reclaim() { |
109 assert_empty(); |
120 assert_empty(); |
110 |
121 |
111 for (uint i = 0; i < _num; i += 1) { |
122 for (uint i = 0; i < _num; i += 1) { |
112 _stacks[i].~Padded<PreservedMarks>(); |
123 _stacks[i].~Padded<PreservedMarks>(); |