Index: vm/jitrino/src/shared/Type.cpp =================================================================== --- vm/jitrino/src/shared/Type.cpp (revision 551072) +++ vm/jitrino/src/shared/Type.cpp (working copy) @@ -446,8 +446,7 @@ } } type = new (memManager) ArrayType(elemNamedType,arrayVMTypeHandle,*this, isCompressed); - if (arrayVMTypeHandle != (void*)(POINTER_SIZE_INT)0xdeadbeef - && (type->isUnresolvedType() || type->getAllocationHandle()!=0)) + if (type->isUnresolvedType() || type->getAllocationHandle()!=0) { // type can be cached lookupTable.insert(elemNamedType,type); } Index: vm/jitrino/src/translator/java/JavaLabelPrepass.cpp =================================================================== --- vm/jitrino/src/translator/java/JavaLabelPrepass.cpp (revision 551072) +++ vm/jitrino/src/translator/java/JavaLabelPrepass.cpp (working copy) @@ -1427,7 +1427,7 @@ { case 'L': { if (!typeManager.isLazyResolutionMode()) { - retType = typeManager.getNullObjectType(); + retType = typeManager.getUnresolvedObjectType(); } else { retType = ci.getTypeFromDescriptor(enclClass, origSig); //in lazy resolution mode retType is already valid array type @@ -1467,21 +1467,14 @@ case ')': // we have just leave it back default: // impossible! Verifier must check and catch this assert(0); - retType = typeManager.getNullObjectType(); + retType = typeManager.getUnresolvedObjectType(); break; } assert(retType); - void* arrVMTypeHandle = NULL; - if(retType == typeManager.getNullObjectType()) { - assert(!typeManager.isLazyResolutionMode()); - // VM can not operate with an array of NullObjects - // Let's cheat here - arrVMTypeHandle = (void*)(POINTER_SIZE_INT)0xdeadbeef; - } if (!arrayIsWrapped && arrayDim > 0) { for (;arrayDim > 0; arrayDim--) { - retType = typeManager.getArrayType(retType, false, arrVMTypeHandle); + retType = typeManager.getArrayType(retType, false); } } return retType;