# HG changeset patch # User Lukas Stadler # Date 1406120518 -7200 # Node ID 6bdd2ec553eb4879c483570389f4c756b296b157 # Parent 4209ec855c1ccb1b6af6c3c76891a58b28b0842c handle HotSpotCompressedNullConstant in graalCodeInstaller diff -r 4209ec855c1c -r 6bdd2ec553eb src/share/vm/classfile/systemDictionary.hpp --- a/src/share/vm/classfile/systemDictionary.hpp Wed Jul 23 14:24:17 2014 +0200 +++ b/src/share/vm/classfile/systemDictionary.hpp Wed Jul 23 15:01:58 2014 +0200 @@ -204,6 +204,7 @@ GRAAL_ONLY(do_klass(HotSpotResolvedJavaMethod_klass, com_oracle_graal_hotspot_meta_HotSpotResolvedJavaMethod, Graal)) \ GRAAL_ONLY(do_klass(HotSpotResolvedObjectType_klass, com_oracle_graal_hotspot_meta_HotSpotResolvedObjectType, Graal)) \ GRAAL_ONLY(do_klass(HotSpotMonitorValue_klass, com_oracle_graal_hotspot_meta_HotSpotMonitorValue, Graal)) \ + GRAAL_ONLY(do_klass(HotSpotCompressedNullConstant_klass, com_oracle_graal_hotspot_meta_HotSpotCompressedNullConstant, Graal)) \ GRAAL_ONLY(do_klass(HotSpotObjectConstant_klass, com_oracle_graal_hotspot_meta_HotSpotObjectConstant, Graal)) \ GRAAL_ONLY(do_klass(HotSpotMetaspaceConstant_klass, com_oracle_graal_hotspot_meta_HotSpotMetaspaceConstant, Graal)) \ GRAAL_ONLY(do_klass(HotSpotStackFrameReference_klass, com_oracle_graal_hotspot_HotSpotStackFrameReference, Graal)) \ diff -r 4209ec855c1c -r 6bdd2ec553eb src/share/vm/classfile/vmSymbols.hpp --- a/src/share/vm/classfile/vmSymbols.hpp Wed Jul 23 14:24:17 2014 +0200 +++ b/src/share/vm/classfile/vmSymbols.hpp Wed Jul 23 15:01:58 2014 +0200 @@ -311,6 +311,7 @@ GRAAL_ONLY(template(com_oracle_graal_hotspot_meta_HotSpotResolvedJavaMethod, "com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod")) \ GRAAL_ONLY(template(com_oracle_graal_hotspot_meta_HotSpotResolvedObjectType, "com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType")) \ GRAAL_ONLY(template(com_oracle_graal_hotspot_meta_HotSpotMonitorValue, "com/oracle/graal/hotspot/meta/HotSpotMonitorValue")) \ + GRAAL_ONLY(template(com_oracle_graal_hotspot_meta_HotSpotCompressedNullConstant, "com/oracle/graal/hotspot/meta/HotSpotCompressedNullConstant")) \ GRAAL_ONLY(template(com_oracle_graal_hotspot_meta_HotSpotObjectConstant, "com/oracle/graal/hotspot/meta/HotSpotObjectConstant")) \ GRAAL_ONLY(template(com_oracle_graal_hotspot_meta_HotSpotMetaspaceConstant, "com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstant")) \ GRAAL_ONLY(template(com_oracle_graal_hotspot_HotSpotStackFrameReference, "com/oracle/graal/hotspot/HotSpotStackFrameReference")) \ diff -r 4209ec855c1c -r 6bdd2ec553eb src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Wed Jul 23 14:24:17 2014 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Wed Jul 23 15:01:58 2014 +0200 @@ -240,16 +240,17 @@ } else { locationType = Location::dbl; } + assert(!reference, "unexpected type in floating point register"); #ifdef TARGET_ARCH_x86 ScopeValue* value = new LocationValue(Location::new_reg_loc(locationType, as_XMMRegister(number - 16)->as_VMReg())); - if (type == T_DOUBLE && !reference) { + if (type == T_DOUBLE) { second = value; } return value; #else #ifdef TARGET_ARCH_sparc ScopeValue* value = new LocationValue(Location::new_reg_loc(locationType, as_FloatRegister(number)->as_VMReg())); - if (type == T_DOUBLE && !reference) { + if (type == T_DOUBLE) { second = value; } return value; @@ -265,8 +266,10 @@ } else if (type == T_INT) { locationType = reference ? Location::narrowoop : Location::normal; } else if (type == T_FLOAT) { + assert(!reference, "unexpected type in stack slot"); locationType = Location::normal; } else if (type == T_DOUBLE) { + assert(!reference, "unexpected type in stack slot"); locationType = Location::dbl; } else { assert(type == T_OBJECT && reference, "unexpected type in stack slot"); @@ -296,7 +299,7 @@ } } else { assert(reference, "unexpected object constant type"); - if (value->is_a(NullConstant::klass())) { + if (value->is_a(NullConstant::klass()) || value->is_a(HotSpotCompressedNullConstant::klass())) { return new ConstantOopWriteValue(NULL); } else { assert(value->is_a(HotSpotObjectConstant::klass()), "unexpected constant type"); diff -r 4209ec855c1c -r 6bdd2ec553eb src/share/vm/graal/graalJavaAccess.hpp --- a/src/share/vm/graal/graalJavaAccess.hpp Wed Jul 23 14:24:17 2014 +0200 +++ b/src/share/vm/graal/graalJavaAccess.hpp Wed Jul 23 15:01:58 2014 +0200 @@ -207,6 +207,8 @@ end_class \ start_class(NullConstant) \ end_class \ + start_class(HotSpotCompressedNullConstant) \ + end_class \ start_class(HotSpotObjectConstant) \ oop_field(HotSpotObjectConstant, object, "Ljava/lang/Object;") \ end_class \