annotate jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/MetaspaceWrapperObject.java @ 23667:f60746f36f3f

Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Mon, 06 Jun 2016 12:22:14 -0700
parents 1bbd4a7c274b
children d995c88d9cd9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22454
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
1 /*
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
2 * Copyright (c) 2015, 2015, Oracle and/or its affiliates. All rights reserved.
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
4 *
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation.
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
8 *
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
13 * accompanied this code).
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
14 *
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
18 *
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
21 * questions.
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
22 */
22672
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22590
diff changeset
23 package jdk.vm.ci.hotspot;
22454
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
24
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
25 /**
23667
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
26 * A tag interface indicating that this type is a wrapper around a HotSpot metaspace object that
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
27 * requires GC interaction to keep alive.
22455
7ad03bf3d4a9 renames related to using metaspace wrappers instead of raw metaspace values
Doug Simon <doug.simon@oracle.com>
parents: 22454
diff changeset
28 *
7ad03bf3d4a9 renames related to using metaspace wrappers instead of raw metaspace values
Doug Simon <doug.simon@oracle.com>
parents: 22454
diff changeset
29 * It would preferable if this were the base class containing the pointer but that would require
7ad03bf3d4a9 renames related to using metaspace wrappers instead of raw metaspace values
Doug Simon <doug.simon@oracle.com>
parents: 22454
diff changeset
30 * mixins since most of the wrapper types have complex supertype hierarchies.
22454
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
31 */
22590
3f6488b29c1a Remove rawValue from HotSpotMetaspaceConstantImpl, patch raw pointer at code installation time.
Roland Schatz <roland.schatz@oracle.com>
parents: 22455
diff changeset
32 interface MetaspaceWrapperObject {
22454
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
33
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
34 long getMetaspacePointer();
23667
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
35
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
36 /**
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
37 * Check if this object is properly registered for metadata tracking. All classes which
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
38 * implement this interface must be registered with the
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
39 * {@link HotSpotJVMCIMetaAccessContext#add} unless they are kept alive through other means.
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
40 * Currently the only type which doesn't require explicit registration is
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
41 * {@link HotSpotResolvedObjectTypeImpl} since it's kept alive by references to the
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
42 * {@link Class}.
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
43 *
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
44 * @return true if this object is properly registered for meta data tracking.
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
45 */
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
46 default boolean isRegistered() {
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
47 return HotSpotJVMCIRuntime.runtime().metaAccessContext.isRegistered(this);
f60746f36f3f Properly track HotSpotConstantPool as metadata and fix bug that cause metadata to be lost during unloading
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22672
diff changeset
48 }
22454
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
diff changeset
49 }