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                                                                                                                                                    \