Index: vm/interpreter/src/interpreter.cpp =================================================================== --- vm/interpreter/src/interpreter.cpp (revision 583434) +++ vm/interpreter/src/interpreter.cpp (working copy) @@ -2250,15 +2250,8 @@ DEBUG_BYTECODE("class = " << class_get_name(objClass)); ManagedObject *obj = UNCOMPRESS_REF(frame.stack.pick().cr); - -#ifdef COMPRESS_MODE - // FIXME ivan 20041027: vm_instanceof checks null pointers, it assumes - // that null is Class::managed_null, but uncompress_compressed_reference - // doesn't return managed_null for null compressed references - frame.stack.pick().u = (!(obj == 0)) && vm_instanceof(obj, objClass); -#else frame.stack.pick().u = vm_instanceof(obj, objClass); -#endif + frame.stack.ref() = FLAG_NONE; frame.ip += 3; } @@ -3196,9 +3189,6 @@ case JAVA_TYPE_CLASS: case JAVA_TYPE_ARRAY: h = (ObjectHandle) args[arg++].l; -#ifdef COMPRESS_MODE - assert(VM_Global_State::loader_env->compress_references); -#endif CREF cref; if (h == NULL) { cref = 0; Index: vm/interpreter/src/interp_stack_trace.cpp =================================================================== --- vm/interpreter/src/interp_stack_trace.cpp (revision 583434) +++ vm/interpreter/src/interp_stack_trace.cpp (working copy) @@ -152,14 +152,13 @@ interp_si_free(si); } -#ifdef COMPRESS_MODE -#define vm_enumerate(cref,f) vm_enumerate_compressed_root_reference(cref,f) -#else -static inline void** m2v(CREF* obj) { - return (void**)obj; +static inline void vm_enumerate(CREF* cref, Boolean pinned) { + if(vm_references_are_compressed()) { + vm_enumerate_compressed_root_reference(cref, pinned); + } else { + vm_enumerate_root_reference(cref, pinned); + } } -#define vm_enumerate(cref,f) vm_enumerate_root_reference(m2v(cref),f) -#endif void interp_enumerate_root_set_single_thread_on_stack(VM_thread *thread) { Index: vm/interpreter/src/interp_native_ipf.cpp =================================================================== --- vm/interpreter/src/interp_native_ipf.cpp (revision 583434) +++ vm/interpreter/src/interp_native_ipf.cpp (working copy) @@ -314,13 +314,13 @@ if (cr == 0) { args[argId++] = 0; } else { -#ifdef COMPRESS_MODE - ObjectHandle new_handle = oh_allocate_local_handle(); - new_handle->object = UNCOMPRESS_REF(cr); - args[argId++] = (uword) new_handle; -#else - args[argId++] = (uword) &cr; -#endif + if(vm_references_are_compressed()) { + ObjectHandle new_handle = oh_allocate_local_handle(); + new_handle->object = UNCOMPRESS_REF(cr); + args[argId++] = (uword) new_handle; + } else { + args[argId++] = (uword) &cr; + } } while(*mtype == '[') mtype++; if (*mtype == 'L') @@ -588,13 +588,13 @@ if (cr == 0) { args[argId++] = 0; } else { -#ifdef COMPRESS_MODE - ObjectHandle new_handle = oh_allocate_local_handle(); - new_handle->object = UNCOMPRESS_REF(cr); - args[argId++] = (uword) new_handle; -#else - args[argId++] = (uword) &cr; -#endif + if(vm_references_are_compressed()) { + ObjectHandle new_handle = oh_allocate_local_handle(); + new_handle->object = UNCOMPRESS_REF(cr); + args[argId++] = (uword) new_handle; + } else { + args[argId++] = (uword) &cr; + } } while(*mtype == '[') mtype++; if (*mtype == 'L') Index: vm/interpreter/src/interp_defs.h =================================================================== --- vm/interpreter/src/interp_defs.h (revision 583434) +++ vm/interpreter/src/interp_defs.h (working copy) @@ -94,12 +94,7 @@ #define FREE_FRAME(ptr) m_free(ptr) #endif -/***** Compressed pointers on *****/ #if defined _IPF_ || defined _EM64T_ -#define COMPRESS_MODE -#endif - -#if defined _IPF_ || defined _EM64T_ # define COMPACT_FIELDS # define uword uint64 # define word int64 Index: vm/interpreter/src/interp_native_ia32.cpp =================================================================== --- vm/interpreter/src/interp_native_ia32.cpp (revision 583434) +++ vm/interpreter/src/interp_native_ia32.cpp (working copy) @@ -295,13 +295,13 @@ if (cr == 0) { args[argId++] = 0; } else { -#ifdef COMPRESS_MODE - ObjectHandle new_handle = oh_allocate_local_handle(); - new_handle->object = UNCOMPRESS_REF(cr); - args[argId++] = (uword) new_handle; -#else - args[argId++] = (uword) &cr; -#endif + if(vm_references_are_compressed()) { + ObjectHandle new_handle = oh_allocate_local_handle(); + new_handle->object = UNCOMPRESS_REF(cr); + args[argId++] = (uword) new_handle; + } else { + args[argId++] = (uword) &cr; + } } while(*mtype == '[') mtype++; if (*mtype == 'L') @@ -532,13 +532,13 @@ if (cr == 0) { args[argId++] = 0; } else { -#ifdef COMPRESS_MODE - ObjectHandle new_handle = oh_allocate_local_handle(); - new_handle->object = UNCOMPRESS_REF(cr); - args[argId++] = (uword) new_handle; -#else - args[argId++] = (uword) &cr; -#endif + if(vm_references_are_compressed()) { + ObjectHandle new_handle = oh_allocate_local_handle(); + new_handle->object = UNCOMPRESS_REF(cr); + args[argId++] = (uword) new_handle; + } else { + args[argId++] = (uword) &cr; + } } while(*mtype == '[') mtype++; if (*mtype == 'L') Index: vm/interpreter/src/interp_native_em64t.cpp =================================================================== --- vm/interpreter/src/interp_native_em64t.cpp (revision 583434) +++ vm/interpreter/src/interp_native_em64t.cpp (working copy) @@ -331,13 +331,13 @@ if (cr == 0) { arg = 0; } else { -#ifdef COMPRESS_MODE - ObjectHandle new_handle = oh_allocate_local_handle(); - new_handle->object = UNCOMPRESS_REF(cr); - arg = (uword) new_handle; -#else - arg = (uword) &cr; -#endif + if(vm_references_are_compressed()) { + ObjectHandle new_handle = oh_allocate_local_handle(); + new_handle->object = UNCOMPRESS_REF(cr); + arg = (uword) new_handle; + } else { + arg = (uword) &cr; + } } if (n_ints != MAX_REG_INTS) { ints[n_ints++] = arg; @@ -620,13 +620,13 @@ if (cr == 0) { arg = 0; } else { -#ifdef COMPRESS_MODE - ObjectHandle new_handle = oh_allocate_local_handle(); - new_handle->object = UNCOMPRESS_REF(cr); - arg = (uword) new_handle; -#else - arg = (uword) &cr; -#endif + if(vm_references_are_compressed()) { + ObjectHandle new_handle = oh_allocate_local_handle(); + new_handle->object = UNCOMPRESS_REF(cr); + arg = (uword) new_handle; + } else { + arg = (uword) &cr; + } } if (n_ints != MAX_REG_INTS) { ints[n_ints++] = arg;