Mercurial > hg > graal-compiler
changeset 16589:6bdd2ec553eb
handle HotSpotCompressedNullConstant in graalCodeInstaller
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Wed, 23 Jul 2014 15:01:58 +0200 |
parents | 4209ec855c1c |
children | c62c1e0060cc |
files | src/share/vm/classfile/systemDictionary.hpp src/share/vm/classfile/vmSymbols.hpp src/share/vm/graal/graalCodeInstaller.cpp src/share/vm/graal/graalJavaAccess.hpp |
diffstat | 4 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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)) \
--- 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")) \
--- 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");
--- 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 \