/*
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.vm.ci.hotspot;
import jdk.vm.ci.meta.Assumptions.AssumptionResult;
import jdk.vm.ci.meta.Constant;
import jdk.vm.ci.meta.ConstantPool;
import jdk.vm.ci.meta.JavaConstant;
import jdk.vm.ci.meta.JavaKind;
import jdk.vm.ci.meta.JavaType;
import jdk.vm.ci.meta.ResolvedJavaMethod;
import jdk.vm.ci.meta.ResolvedJavaType;
Implementation of JavaType
for resolved non-primitive HotSpot classes. /**
* Implementation of {@link JavaType} for resolved non-primitive HotSpot classes.
*/
public interface HotSpotResolvedObjectType extends ResolvedJavaType {
@Override
HotSpotResolvedObjectType getArrayClass();
@Override
ResolvedJavaType getComponentType();
@Override
AssumptionResult<ResolvedJavaType> findLeafConcreteSubtype();
@Override
HotSpotResolvedObjectType getSuperclass();
@Override
HotSpotResolvedObjectType[] getInterfaces();
HotSpotResolvedObjectType getSupertype();
@Override
HotSpotResolvedObjectType findLeastCommonAncestor(ResolvedJavaType otherType);
@Override
default boolean isPrimitive() {
return false;
}
@Override
default JavaKind getJavaKind() {
return JavaKind.Object;
}
ConstantPool getConstantPool();
Gets the instance size of this type. If an instance of this type cannot be fast path
allocated, then the returned value is negative (its absolute value gives the size). Must not
be called if this is an array or interface type.
/**
* Gets the instance size of this type. If an instance of this type cannot be fast path
* allocated, then the returned value is negative (its absolute value gives the size). Must not
* be called if this is an array or interface type.
*/
int instanceSize();
int getVtableLength();
@Override
AssumptionResult<ResolvedJavaMethod> findUniqueConcreteMethod(ResolvedJavaMethod method);
Performs a fast-path check that this type is resolved in the context of a given accessing class. A negative result does not mean this type is not resolved with respect to accessingClass
. That can only be determined by
re-resolving the type. /**
* Performs a fast-path check that this type is resolved in the context of a given accessing
* class. A negative result does not mean this type is not resolved with respect to
* {@code accessingClass}. That can only be determined by
* {@linkplain HotSpotJVMCIRuntime#lookupType(String, HotSpotResolvedObjectType, boolean)
* re-resolving} the type.
*/
boolean isDefinitelyResolvedWithRespectTo(ResolvedJavaType accessingClass);
Gets the metaspace Klass boxed in a JavaConstant
. /**
* Gets the metaspace Klass boxed in a {@link JavaConstant}.
*/
Constant klass();
boolean isPrimaryType();
int superCheckOffset();
long prototypeMarkWord();
int layoutHelper();
long getFingerprint();
@Override
HotSpotResolvedObjectType getEnclosingType();
@Override
ResolvedJavaMethod getClassInitializer();
boolean isAnonymous();
}