Skip to content

Commit

Permalink
Merge pull request #4189 from yanluo7/isenumclass_openj9
Browse files Browse the repository at this point in the history
Declare and implement helper method J9ClassEnv isEnumClass
  • Loading branch information
andrewcraik authored Jan 9, 2019
2 parents 4132ae3 + bdca0f9 commit 4160b63
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 2 deletions.
8 changes: 7 additions & 1 deletion runtime/compiler/env/J9ClassEnv.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2018 IBM Corp. and others
* Copyright (c) 2000, 2019 IBM Corp. and others
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which accompanies this
Expand Down Expand Up @@ -112,6 +112,12 @@ J9::ClassEnv::isInterfaceClass(TR::Compilation *comp, TR_OpaqueClassBlock *clazz
return comp->fej9()->isInterfaceClass(clazzPointer);
}

bool
J9::ClassEnv::isEnumClass(TR::Compilation *comp, TR_OpaqueClassBlock *clazzPointer, TR_ResolvedMethod *method)
{
return comp->fej9()->isEnumClass(clazzPointer, method);
}

bool
J9::ClassEnv::isPrimitiveClass(TR::Compilation *comp, TR_OpaqueClassBlock *clazz)
{
Expand Down
3 changes: 2 additions & 1 deletion runtime/compiler/env/J9ClassEnv.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2018 IBM Corp. and others
* Copyright (c) 2000, 2019 IBM Corp. and others
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which accompanies this
Expand Down Expand Up @@ -69,6 +69,7 @@ class OMR_EXTENSIBLE ClassEnv : public OMR::ClassEnvConnector
bool classHasIllegalStaticFinalFieldModification(TR_OpaqueClassBlock * clazzPointer);
bool isAbstractClass(TR::Compilation *comp, TR_OpaqueClassBlock *clazzPointer);
bool isInterfaceClass(TR::Compilation *comp, TR_OpaqueClassBlock *clazzPointer);
bool isEnumClass(TR::Compilation *comp, TR_OpaqueClassBlock *clazzPointer, TR_ResolvedMethod *method);
bool isPrimitiveClass(TR::Compilation *comp, TR_OpaqueClassBlock *clazz);
bool isAnonymousClass(TR::Compilation *comp, TR_OpaqueClassBlock *clazz);
bool isPrimitiveArray(TR::Compilation *comp, TR_OpaqueClassBlock *);
Expand Down
16 changes: 16 additions & 0 deletions runtime/compiler/env/VMJ9.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6739,6 +6739,22 @@ TR_J9VMBase::isInterfaceClass(TR_OpaqueClassBlock * clazzPointer)
return (TR::Compiler->cls.romClassOf(clazzPointer)->modifiers & J9AccInterface) ? true : false;
}

bool
TR_J9VMBase::isEnumClass(TR_OpaqueClassBlock * clazzPointer, TR_ResolvedMethod *method)
{
int32_t modifiersForClass = 0;
if (isClassArray(clazzPointer))
return false;
bool success = javaLangClassGetModifiersImpl(clazzPointer, modifiersForClass);
if (!success)
return false;
bool isModFlagSet = (modifiersForClass & J9AccEnum) ? true : false;
TR_OpaqueClassBlock *enumClass = getClassFromSignature("java/lang/Enum", 14, method);
TR_OpaqueClassBlock *superClass = getSuperClass(clazzPointer);
return (isModFlagSet && (enumClass == superClass));
}


bool
TR_J9VMBase::isAbstractClass(TR_OpaqueClassBlock * clazzPointer)
{
Expand Down
1 change: 1 addition & 0 deletions runtime/compiler/env/VMJ9.h
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ class TR_J9VMBase : public TR_FrontEnd
virtual bool isAbstractClass(TR_OpaqueClassBlock * clazzPointer);
virtual bool isCloneable(TR_OpaqueClassBlock *);
virtual bool isInterfaceClass(TR_OpaqueClassBlock * clazzPointer);
virtual bool isEnumClass(TR_OpaqueClassBlock * clazzPointer, TR_ResolvedMethod *method);
virtual bool isPrimitiveClass(TR_OpaqueClassBlock *clazz);
virtual bool isPrimitiveArray(TR_OpaqueClassBlock *);
virtual bool isReferenceArray(TR_OpaqueClassBlock *);
Expand Down

0 comments on commit 4160b63

Please sign in to comment.