20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_CLASSFILE_METADATAONSTACKMARK_HPP
26 #define SHARE_VM_CLASSFILE_METADATAONSTACKMARK_HPP
27
28 #include "memory/allocation.hpp"
29
30 class Metadata;
31
32 // Helper class to mark and unmark metadata used on the stack as either handles
33 // or executing methods, so that it can't be deleted during class redefinition
34 // and class unloading.
35 // This is also used for other things that can be deallocated, like class
36 // metadata during parsing, relocated methods, and methods in backtraces.
37 class MetadataOnStackMark : public StackObj {
38 NOT_PRODUCT(static bool _is_active;)
39 public:
40 MetadataOnStackMark();
41 ~MetadataOnStackMark();
42 static void record(Metadata* m);
43 };
44
45 #endif // SHARE_VM_CLASSFILE_METADATAONSTACKMARK_HPP
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_CLASSFILE_METADATAONSTACKMARK_HPP
26 #define SHARE_VM_CLASSFILE_METADATAONSTACKMARK_HPP
27
28 #include "memory/allocation.hpp"
29
30 class Metadata;
31
32 // Helper class to mark and unmark metadata used on the stack as either handles
33 // or executing methods, so that it can't be deleted during class redefinition
34 // and class unloading.
35 // This is also used for other things that can be deallocated, like class
36 // metadata during parsing, relocated methods, and methods in backtraces.
37 class MetadataOnStackMark : public StackObj {
38 NOT_PRODUCT(static bool _is_active;)
39 public:
40 MetadataOnStackMark(bool has_redefined_a_class);
41 ~MetadataOnStackMark();
42 static void record(Metadata* m);
43 };
44
45 #endif // SHARE_VM_CLASSFILE_METADATAONSTACKMARK_HPP
|