1 /* |
1 /* |
2 * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2010, 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. |
20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 * |
22 * |
23 */ |
23 */ |
24 |
24 |
|
25 #ifndef SHARE_VM_OOPS_OOP_HPP |
|
26 #define SHARE_VM_OOPS_OOP_HPP |
|
27 |
|
28 #include "memory/iterator.hpp" |
|
29 #include "memory/memRegion.hpp" |
|
30 #include "memory/specialized_oop_closures.hpp" |
|
31 #include "utilities/top.hpp" |
|
32 |
25 // oopDesc is the top baseclass for objects classes. The {name}Desc classes describe |
33 // oopDesc is the top baseclass for objects classes. The {name}Desc classes describe |
26 // the format of Java objects so the fields can be accessed from C++. |
34 // the format of Java objects so the fields can be accessed from C++. |
27 // oopDesc is abstract. |
35 // oopDesc is abstract. |
28 // (see oopHierarchy for complete oop class hierarchy) |
36 // (see oopHierarchy for complete oop class hierarchy) |
29 // |
37 // |
30 // no virtual functions allowed |
38 // no virtual functions allowed |
31 |
39 |
32 // store into oop with store check |
40 // store into oop with store check |
33 template <class T> inline void oop_store(T* p, oop v); |
41 template <class T> void oop_store(T* p, oop v); |
34 template <class T> inline void oop_store(volatile T* p, oop v); |
42 template <class T> void oop_store(volatile T* p, oop v); |
35 |
43 |
36 // store into oop without store check |
44 // store into oop without store check |
37 template <class T> inline void oop_store_without_check(T* p, oop v); |
45 template <class T> void oop_store_without_check(T* p, oop v); |
38 template <class T> inline void oop_store_without_check(volatile T* p, oop v); |
46 template <class T> void oop_store_without_check(volatile T* p, oop v); |
39 |
47 |
40 extern bool always_do_update_barrier; |
48 extern bool always_do_update_barrier; |
41 |
49 |
42 // Forward declarations. |
50 // Forward declarations. |
43 class OopClosure; |
51 class OopClosure; |
401 // for code generation |
409 // for code generation |
402 static int mark_offset_in_bytes() { return offset_of(oopDesc, _mark); } |
410 static int mark_offset_in_bytes() { return offset_of(oopDesc, _mark); } |
403 static int klass_offset_in_bytes() { return offset_of(oopDesc, _metadata._klass); } |
411 static int klass_offset_in_bytes() { return offset_of(oopDesc, _metadata._klass); } |
404 static int klass_gap_offset_in_bytes(); |
412 static int klass_gap_offset_in_bytes(); |
405 }; |
413 }; |
|
414 |
|
415 #endif // SHARE_VM_OOPS_OOP_HPP |