Index: vm/jitrino/src/optimizer/Opnd.cpp =================================================================== --- vm/jitrino/src/optimizer/Opnd.cpp (revision 553141) +++ vm/jitrino/src/optimizer/Opnd.cpp (working copy) @@ -154,6 +154,7 @@ return typeManager.getFloatType(); // object types case Type::CompressedSystemObject: + case Type::CompressedUnresolvedObject: case Type::CompressedSystemClass: case Type::CompressedSystemString: case Type::CompressedArray: case Type::CompressedObject: Index: vm/jitrino/src/shared/Type.cpp =================================================================== --- vm/jitrino/src/shared/Type.cpp (revision 553141) +++ vm/jitrino/src/shared/Type.cpp (working copy) @@ -145,6 +145,7 @@ case Type::CompressedSystemClass: case Type::CompressedSystemString: case Type::CompressedNullObject: + case Type::CompressedUnresolvedObject: case Type::CompressedArray: case Type::CompressedObject: case Type::CompressedMethodPtr: @@ -326,6 +327,7 @@ compressedSystemStringType(NULL), compressedSystemObjectType(NULL), + compressedUnresolvedObjectType(NULL), compressedSystemClassType(NULL), compressedNullObjectType(Type::CompressedNullObject), @@ -395,6 +397,8 @@ ObjectType(Type::CompressedSystemString,systemStringVMTypeHandle,*this); compressedSystemObjectType = new (memManager) ObjectType(Type::CompressedSystemObject,systemObjectVMTypeHandle,*this); + compressedUnresolvedObjectType = new (memManager) + ObjectType(Type::CompressedUnresolvedObject,systemObjectVMTypeHandle,*this); compressedSystemClassType = new (memManager) ObjectType(Type::CompressedSystemClass,systemClassVMTypeHandle,*this); compressedUserObjectTypes.insert(systemStringVMTypeHandle,compressedSystemStringType); @@ -736,6 +740,8 @@ } case Type::CompressedSystemObject: return getSystemObjectType(); + case Type::CompressedUnresolvedObject: + return getUnresolvedObjectType(); case Type::CompressedSystemClass: return getSystemClassType(); case Type::CompressedSystemString: @@ -767,6 +773,8 @@ } case Type::SystemObject: return getCompressedSystemObjectType(); + case Type::UnresolvedObject: + return getCompressedUnresolvedObjectType(); case Type::SystemClass: return getCompressedSystemClassType(); case Type::SystemString: @@ -934,6 +942,7 @@ case CompressedArray: s = "cmp[]"; break; case CompressedObject: s = "cmpo"; break; case CompressedNullObject: s = "cmpnull"; break; + case CompressedUnresolvedObject: s = "cmpunreso"; break; default: s = "???"; break; } os << s; @@ -1076,6 +1085,7 @@ case CompressedSystemClass: s = "ccl"; break; case CompressedSystemString: s = "cst"; break; case CompressedNullObject: s = "cnl"; break; + case CompressedUnresolvedObject:s = "cun"; break; case CompressedArray: s = "c[]"; break; case CompressedObject: s = "co "; break; case VTablePtrObj: s = "vtb"; break; @@ -1146,6 +1156,7 @@ case Type::CompressedSystemClass: case Type::CompressedSystemString: case Type::CompressedNullObject: + case Type::CompressedUnresolvedObject: case Type::CompressedArray: case Type::CompressedObject: case Type::CompressedVTablePtr: @@ -1271,6 +1282,7 @@ DECL_TAG_ITEM(CompressedSystemClass, "ccl "), DECL_TAG_ITEM(CompressedSystemString, "cst "), DECL_TAG_ITEM(CompressedNullObject, "cnl "), + DECL_TAG_ITEM(CompressedUnresolvedObject, "cun "), DECL_TAG_ITEM(CompressedArray, "c[] "), DECL_TAG_ITEM(CompressedObject, "co "), Index: vm/jitrino/src/shared/Type.h =================================================================== --- vm/jitrino/src/shared/Type.h (revision 553141) +++ vm/jitrino/src/shared/Type.h (working copy) @@ -124,6 +124,8 @@ // special null object reference CompressedNullObject, + // Unresolved Object + CompressedUnresolvedObject, // (2.1.2) Array type CompressedArray, @@ -276,28 +278,30 @@ } static Tag compressReference(Tag tag) { switch (tag) { - case SystemObject: return CompressedSystemObject; - case SystemClass: return CompressedSystemClass; - case SystemString: return CompressedSystemString; - case NullObject: return CompressedNullObject; - case Array: return CompressedArray; - case Object: return CompressedObject; - case MethodPtr: return CompressedMethodPtr; - case VTablePtr: return CompressedVTablePtr; + case SystemObject: return CompressedSystemObject; + case SystemClass: return CompressedSystemClass; + case SystemString: return CompressedSystemString; + case NullObject: return CompressedNullObject; + case UnresolvedObject: return CompressedUnresolvedObject; + case Array: return CompressedArray; + case Object: return CompressedObject; + case MethodPtr: return CompressedMethodPtr; + case VTablePtr: return CompressedVTablePtr; default: assert(0); return Void; } } static Tag unCompressReference(Tag tag) { switch (tag) { - case CompressedSystemObject: return SystemObject; - case CompressedSystemClass: return SystemClass; - case CompressedSystemString: return SystemString; - case CompressedNullObject: return NullObject; - case CompressedArray: return Array; - case CompressedObject: return Object; - case CompressedMethodPtr: return MethodPtr; - case CompressedVTablePtr: return VTablePtr; + case CompressedSystemObject: return SystemObject; + case CompressedSystemClass: return SystemClass; + case CompressedSystemString: return SystemString; + case CompressedNullObject: return NullObject; + case CompressedUnresolvedObject: return UnresolvedObject; + case CompressedArray: return Array; + case CompressedObject: return Object; + case CompressedMethodPtr: return MethodPtr; + case CompressedVTablePtr: return VTablePtr; default: assert(0); return Void; } @@ -307,7 +311,7 @@ ((CompressedSystemObject <= tag) && (tag <= CompressedObject))); } static bool isUnresolvedObject(Tag tag) { - return tag == UnresolvedObject; + return ((tag == UnresolvedObject) || (tag == CompressedUnresolvedObject)); } static bool isNullObject(Tag tag) { return ((tag == NullObject) || (tag == CompressedNullObject)); @@ -697,6 +701,7 @@ Type* getCompressedNullObjectType() {return &compressedNullObjectType;} ObjectType* getCompressedSystemStringType(){return compressedSystemStringType;} ObjectType* getCompressedSystemObjectType(){return compressedSystemObjectType;} + ObjectType* getCompressedUnresolvedObjectType(){return compressedUnresolvedObjectType;} ObjectType* getCompressedSystemClassType() {return compressedSystemClassType;} NamedType* getValueType(void* vmTypeHandle); @@ -787,6 +792,7 @@ Type offsetPlusHeapbaseType; ObjectType* compressedSystemStringType; ObjectType* compressedSystemObjectType; + ObjectType* compressedUnresolvedObjectType; ObjectType* compressedSystemClassType; Type compressedNullObjectType; // hashtable for user-defined object and value types Index: vm/jitrino/src/translator/java/JavaLabelPrepass.h =================================================================== --- vm/jitrino/src/translator/java/JavaLabelPrepass.h (revision 553141) +++ vm/jitrino/src/translator/java/JavaLabelPrepass.h (working copy) @@ -280,6 +280,7 @@ case Type::CompressedArray: case Type::CompressedObject: case Type::CompressedNullObject: + case Type::CompressedUnresolvedObject: case Type::CompressedSystemString: case Type::CompressedSystemObject: return A; Index: src/test/regression/excludes/exclude.windows.x86_64 =================================================================== --- src/test/regression/excludes/exclude.windows.x86_64 (revision 553141) +++ src/test/regression/excludes/exclude.windows.x86_64 (working copy) @@ -19,6 +19,3 @@ #HARMONY-4093 H2113 -# Exclude this test because unresolved types support is not ready for x86_64 in JIT mode yet. -H4267 - Index: src/test/regression/excludes/exclude.linux.x86_64 =================================================================== --- src/test/regression/excludes/exclude.linux.x86_64 (revision 553141) +++ src/test/regression/excludes/exclude.linux.x86_64 (working copy) @@ -16,6 +16,4 @@ H3909 # Exclude this test because JVMTI is not implemented for x86_64 in JIT mode yet H3982 -# Exclude this test because unresolved types support is not ready for x86_64 in JIT -H4267