equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2014, 2018, 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. |
38 // set, due to (benign) races in the claim mechanism during RSet scanning more |
38 // set, due to (benign) races in the claim mechanism during RSet scanning more |
39 // than one thread might claim the same card. So the same card may be |
39 // than one thread might claim the same card. So the same card may be |
40 // processed multiple times. So redo this check. |
40 // processed multiple times. So redo this check. |
41 const InCSetState in_cset_state = _g1h->in_cset_state(obj); |
41 const InCSetState in_cset_state = _g1h->in_cset_state(obj); |
42 if (in_cset_state.is_in_cset()) { |
42 if (in_cset_state.is_in_cset()) { |
43 markOop m = obj->mark(); |
43 markOop m = obj->mark_raw(); |
44 if (m->is_marked()) { |
44 if (m->is_marked()) { |
45 obj = (oop) m->decode_pointer(); |
45 obj = (oop) m->decode_pointer(); |
46 } else { |
46 } else { |
47 obj = copy_to_survivor_space(in_cset_state, obj, m); |
47 obj = copy_to_survivor_space(in_cset_state, obj, m); |
48 } |
48 } |