1 /* |
1 /* |
2 * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2001, 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. |
52 |
52 |
53 // Add "pre_val" to a set of objects that may have been disconnected from the |
53 // Add "pre_val" to a set of objects that may have been disconnected from the |
54 // pre-marking object graph. |
54 // pre-marking object graph. |
55 static void enqueue(oop pre_val); |
55 static void enqueue(oop pre_val); |
56 |
56 |
57 virtual bool has_write_ref_pre_barrier() { return true; } |
|
58 |
|
59 // We export this to make it available in cases where the static |
57 // We export this to make it available in cases where the static |
60 // type of the barrier set is known. Note that it is non-virtual. |
58 // type of the barrier set is known. Note that it is non-virtual. |
61 template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal); |
59 template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal); |
62 |
60 |
63 // These are the more general virtual versions. |
61 // These are the more general virtual versions. |
64 inline virtual void write_ref_field_pre_work(oop* field, oop new_val); |
62 inline virtual void write_ref_field_pre_work(oop* field, oop new_val); |
65 inline virtual void write_ref_field_pre_work(narrowOop* field, oop new_val); |
63 inline virtual void write_ref_field_pre_work(narrowOop* field, oop new_val); |
66 virtual void write_ref_field_pre_work(void* field, oop new_val) { |
|
67 guarantee(false, "Not needed"); |
|
68 } |
|
69 |
64 |
70 template <class T> void write_ref_array_pre_work(T* dst, int count); |
65 template <class T> void write_ref_array_pre_work(T* dst, int count); |
71 virtual void write_ref_array_pre(oop* dst, int count, bool dest_uninitialized); |
66 virtual void write_ref_array_pre(oop* dst, int count, bool dest_uninitialized); |
72 virtual void write_ref_array_pre(narrowOop* dst, int count, bool dest_uninitialized); |
67 virtual void write_ref_array_pre(narrowOop* dst, int count, bool dest_uninitialized); |
73 |
68 |