changeset 13136:3adfe375b01b

Merge
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 22 Nov 2013 13:41:17 -0800
parents c7ce697ddb9a (current diff) 124860fac470 (diff)
children 438ed35bed29
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java
diffstat 14 files changed, 67 insertions(+), 67 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java	Fri Nov 22 12:19:43 2013 -0800
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java	Fri Nov 22 13:41:17 2013 -0800
@@ -26,6 +26,7 @@
 import static com.oracle.graal.api.meta.DeoptimizationReason.*;
 import static com.oracle.graal.nodes.type.StampFactory.*;
 import static com.oracle.graal.phases.GraalOptions.*;
+import static java.lang.reflect.Modifier.*;
 
 import java.lang.reflect.*;
 import java.util.*;
@@ -434,6 +435,7 @@
             super(invoke);
             this.concrete = concrete;
             this.type = type;
+            assert !isAbstract(type.getModifiers()) : type;
         }
 
         @Override
@@ -1137,6 +1139,10 @@
             }
 
             ResolvedJavaType type = ptypes[0].getType();
+            if (isAbstract(type.getModifiers())) {
+                // In TieredCompilation mode, C1 can generate profiles containing abstract types
+                return null;
+            }
             ResolvedJavaMethod concrete = type.resolveMethod(targetMethod);
             if (!checkTargetConditions(data, replacements, invoke, concrete, optimisticOpts)) {
                 return null;
@@ -1207,6 +1213,9 @@
                 int index = concreteMethods.indexOf(concrete);
                 if (index == -1) {
                     notRecordedTypeProbability += type.getProbability();
+                } else if (isAbstract(type.getType().getModifiers())) {
+                    // In TieredCompilation mode, C1 can generate profiles containing abstract types
+                    notRecordedTypeProbability += type.getProbability();
                 } else {
                     usedTypes.add(type);
                     typesToConcretes.add(index);
--- a/make/bsd/makefiles/jsig.make	Fri Nov 22 12:19:43 2013 -0800
+++ b/make/bsd/makefiles/jsig.make	Fri Nov 22 13:41:17 2013 -0800
@@ -97,7 +97,7 @@
 	$(QUIETLY) test -f $(LIBJSIG_DEBUGINFO) && \
 	    cp -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
 endif
-	-$(QUIETLY) test -f $(LIBJSIG_DIZ) && \
+	$(QUIETLY) test ! -f $(LIBJSIG_DIZ) || \
 	    cp -f $(LIBJSIG_DIZ) $(DEST_JSIG_DIZ)
 	$(QUIETLY) cp -f $(LIBJSIG) $(DEST_JSIG) && echo "Done"
 
--- a/make/bsd/makefiles/saproc.make	Fri Nov 22 12:19:43 2013 -0800
+++ b/make/bsd/makefiles/saproc.make	Fri Nov 22 13:41:17 2013 -0800
@@ -163,7 +163,7 @@
 	$(QUIETLY) test -f $(LIBSAPROC_DEBUGINFO) && \
 	    cp -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO)
 endif
-	-$(QUIETLY) test -f $(LIBSAPROC_DIZ) && \
+	$(QUIETLY) test ! -f $(LIBSAPROC_DIZ) || \
 	    cp -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ)
 	$(QUIETLY) cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"
 
--- a/make/bsd/makefiles/vm.make	Fri Nov 22 12:19:43 2013 -0800
+++ b/make/bsd/makefiles/vm.make	Fri Nov 22 13:41:17 2013 -0800
@@ -393,7 +393,7 @@
 	$(QUIETLY) test -f $(LIBJVM_DEBUGINFO) && \
 	    cp -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
 endif
-	-$(QUIETLY) test -f $(LIBJVM_DIZ) && \
+	$(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
 	    cp -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
 	$(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done"
 
--- a/make/linux/makefiles/jsig.make	Fri Nov 22 12:19:43 2013 -0800
+++ b/make/linux/makefiles/jsig.make	Fri Nov 22 13:41:17 2013 -0800
@@ -74,9 +74,9 @@
 
 install_jsig: $(LIBJSIG)
 	@echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
-	-$(QUIETLY) test -f $(LIBJSIG_DEBUGINFO) && \
+	$(QUIETLY) test ! -f $(LIBJSIG_DEBUGINFO) || \
 	    cp -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
-	-$(QUIETLY) test -f $(LIBJSIG_DIZ) && \
+	$(QUIETLY) test ! -f $(LIBJSIG_DIZ) || \
 	    cp -f $(LIBJSIG_DIZ) $(DEST_JSIG_DIZ)
 	$(QUIETLY) cp -f $(LIBJSIG) $(DEST_JSIG) && echo "Done"
 
--- a/make/linux/makefiles/vm.make	Fri Nov 22 12:19:43 2013 -0800
+++ b/make/linux/makefiles/vm.make	Fri Nov 22 13:41:17 2013 -0800
@@ -382,9 +382,9 @@
 
 install_jvm: $(LIBJVM)
 	@echo "Copying $(LIBJVM) to $(DEST_JVM)"
-	-$(QUIETLY) test -f $(LIBJVM_DEBUGINFO) && \
+	$(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
 	    cp -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
-	-$(QUIETLY) test -f $(LIBJVM_DIZ) && \
+	$(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
 	    cp -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
 	$(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done"
 
--- a/make/solaris/makefiles/jsig.make	Fri Nov 22 12:19:43 2013 -0800
+++ b/make/solaris/makefiles/jsig.make	Fri Nov 22 13:41:17 2013 -0800
@@ -79,9 +79,9 @@
 
 install_jsig: $(LIBJSIG)
 	@echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
-	-$(QUIETLY) test -f $(LIBJSIG_DEBUGINFO) && \
+	$(QUIETLY) test ! -f $(LIBJSIG_DEBUGINFO) || \
 	    cp -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
-	-$(QUIETLY) test -f $(LIBJSIG_DIZ) && \
+	$(QUIETLY) test ! -f $(LIBJSIG_DIZ) || \
 	    cp -f $(LIBJSIG_DIZ) $(DEST_JSIG_DIZ)
 	$(QUIETLY) cp -f $(LIBJSIG) $(DEST_JSIG) && echo "Done"
 
--- a/make/solaris/makefiles/vm.make	Fri Nov 22 12:19:43 2013 -0800
+++ b/make/solaris/makefiles/vm.make	Fri Nov 22 13:41:17 2013 -0800
@@ -343,9 +343,9 @@
 
 install_jvm: $(LIBJVM)
 	@echo "Copying $(LIBJVM) to $(DEST_JVM)"
-	-$(QUIETLY) test -f $(LIBJVM_DEBUGINFO) && \
+	$(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
 	    cp -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
-	-$(QUIETLY) test -f $(LIBJVM_DIZ) && \
+	$(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
 	    cp -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
 	$(QUIETLY) cp -f $(LIBJVM) $(DEST_JVM) && echo "Done"
 
--- a/src/cpu/sparc/vm/c2_globals_sparc.hpp	Fri Nov 22 12:19:43 2013 -0800
+++ b/src/cpu/sparc/vm/c2_globals_sparc.hpp	Fri Nov 22 13:41:17 2013 -0800
@@ -44,12 +44,7 @@
 #else
 define_pd_global(bool, ProfileInterpreter,           true);
 #endif // CC_INTERP
-// Disable TieredCompilation while profile data problems are not resolved - same thing in c2_globals_x86.hpp
-#ifdef GRAAL
-define_pd_global(bool, TieredCompilation,            false);
-#else
 define_pd_global(bool, TieredCompilation,            trueInTiered);
-#endif
 define_pd_global(intx, CompileThreshold,             10000);
 define_pd_global(intx, BackEdgeThreshold,            140000);
 
--- a/src/cpu/x86/vm/c2_globals_x86.hpp	Fri Nov 22 12:19:43 2013 -0800
+++ b/src/cpu/x86/vm/c2_globals_x86.hpp	Fri Nov 22 13:41:17 2013 -0800
@@ -45,12 +45,7 @@
 #else
 define_pd_global(bool, ProfileInterpreter,           true);
 #endif // CC_INTERP
-// Disable TieredCompilation while profile data problems are not resolved - same thing in c2_globals_sparc.hpp
-#ifdef GRAAL
-define_pd_global(bool, TieredCompilation,            false);
-#else
 define_pd_global(bool, TieredCompilation,            trueInTiered);
-#endif
 define_pd_global(intx, CompileThreshold,             10000);
 define_pd_global(intx, BackEdgeThreshold,            100000);
 
--- a/src/gpu/hsail/vm/gpu_hsail.cpp	Fri Nov 22 12:19:43 2013 -0800
+++ b/src/gpu/hsail/vm/gpu_hsail.cpp	Fri Nov 22 13:41:17 2013 -0800
@@ -33,8 +33,8 @@
 
 void * gpu::Hsail::_device_context;
 
-gpu::Hsail::okra_ctx_create_func_t      gpu::Hsail::_okra_ctx_create;
-gpu::Hsail::okra_kernel_create_func_t   gpu::Hsail::_okra_kernel_create;
+gpu::Hsail::okra_create_context_func_t  gpu::Hsail::_okra_create_context;
+gpu::Hsail::okra_create_kernel_func_t   gpu::Hsail::_okra_create_kernel;
 gpu::Hsail::okra_push_object_func_t     gpu::Hsail::_okra_push_object;
 gpu::Hsail::okra_push_boolean_func_t    gpu::Hsail::_okra_push_boolean;
 gpu::Hsail::okra_push_byte_func_t       gpu::Hsail::_okra_push_byte;
@@ -92,13 +92,13 @@
   // The kernel entrypoint is always run for the time being  
   const char* entryPointName = "&run";
 
-  _device_context = _okra_ctx_create();
+  _device_context = _okra_create_context();
 
   // code is not null terminated, must be a better way to do this
   unsigned char* nullTerminatedCodeBuffer = (unsigned char*) malloc(code_len + 1);
   memcpy(nullTerminatedCodeBuffer, code, code_len);
   nullTerminatedCodeBuffer[code_len] = 0;
-  void* kernel = _okra_kernel_create(_device_context, nullTerminatedCodeBuffer, entryPointName);
+  void* kernel = _okra_create_kernel(_device_context, nullTerminatedCodeBuffer, entryPointName);
   free(nullTerminatedCodeBuffer);
   return kernel;
 }
@@ -113,6 +113,16 @@
 
 #define STD_BUFFER_SIZE 1024
 
+#define STRINGIFY(x)     #x
+
+#define LOOKUP_OKRA_FUNCTION(name, alias)  \
+  _##alias =                               \
+    CAST_TO_FN_PTR(alias##_func_t, os::dll_lookup(handle, STRINGIFY(name))); \
+  if (_##alias == NULL) {      \
+  tty->print_cr("[HSAIL] ***** Error: Failed to lookup %s in %s, wrong version of OKRA?", STRINGIFY(name), okra_library_name); \
+        return 0; \
+  } \
+
 bool gpu::Hsail::probe_linkage() {
   if (okra_library_name != NULL) {
     char *buffer = (char*)malloc(STD_BUFFER_SIZE);
@@ -123,34 +133,19 @@
     free(buffer);
     if (handle != NULL) {
 
-      _okra_ctx_create =
-        CAST_TO_FN_PTR(okra_ctx_create_func_t, os::dll_lookup(handle, "okra_create_context"));
-      _okra_kernel_create =
-        CAST_TO_FN_PTR(okra_kernel_create_func_t, os::dll_lookup(handle, "okra_create_kernel"));
-      _okra_push_object =
-        CAST_TO_FN_PTR(okra_push_object_func_t, os::dll_lookup(handle, "okra_push_object"));
-      _okra_push_boolean =
-        CAST_TO_FN_PTR(okra_push_boolean_func_t, os::dll_lookup(handle, "okra_push_boolean"));
-      _okra_push_byte =
-        CAST_TO_FN_PTR(okra_push_byte_func_t, os::dll_lookup(handle, "okra_push_byte"));
-      _okra_push_double =
-        CAST_TO_FN_PTR(okra_push_double_func_t, os::dll_lookup(handle, "okra_push_double"));
-      _okra_push_float =
-        CAST_TO_FN_PTR(okra_push_float_func_t, os::dll_lookup(handle, "okra_push_float"));
-      _okra_push_int =
-        CAST_TO_FN_PTR(okra_push_int_func_t, os::dll_lookup(handle, "okra_push_int"));
-      _okra_push_long =
-        CAST_TO_FN_PTR(okra_push_long_func_t, os::dll_lookup(handle, "okra_push_long"));
-      _okra_execute_with_range =
-        CAST_TO_FN_PTR(okra_execute_with_range_func_t, os::dll_lookup(handle, "okra_execute_with_range"));
-      _okra_clearargs =
-        CAST_TO_FN_PTR(okra_clearargs_func_t, os::dll_lookup(handle, "okra_clearargs"));
-      _okra_register_heap =
-        CAST_TO_FN_PTR(okra_register_heap_func_t, os::dll_lookup(handle, "okra_register_heap"));
+      LOOKUP_OKRA_FUNCTION(okra_create_context, okra_create_context);
+      LOOKUP_OKRA_FUNCTION(okra_create_kernel, okra_create_kernel);
+      LOOKUP_OKRA_FUNCTION(okra_push_object, okra_push_object);
+      LOOKUP_OKRA_FUNCTION(okra_push_boolean, okra_push_boolean);
+      LOOKUP_OKRA_FUNCTION(okra_push_byte, okra_push_byte);
+      LOOKUP_OKRA_FUNCTION(okra_push_double, okra_push_double);
+      LOOKUP_OKRA_FUNCTION(okra_push_float, okra_push_float);
+      LOOKUP_OKRA_FUNCTION(okra_push_int, okra_push_int);
+      LOOKUP_OKRA_FUNCTION(okra_push_long, okra_push_long);
+      LOOKUP_OKRA_FUNCTION(okra_execute_with_range, okra_execute_with_range);
+      LOOKUP_OKRA_FUNCTION(okra_clearargs, okra_clearargs);
+      LOOKUP_OKRA_FUNCTION(okra_register_heap, okra_register_heap);
 
-      if (TraceGPUInteraction) {
-        tty->print_cr("[HSAIL] Success: library linkage _okra_clearargs=0x%08x", _okra_clearargs);
-      }
       return true;
     } else {
       // Unable to dlopen okra
--- a/src/gpu/hsail/vm/gpu_hsail.hpp	Fri Nov 22 12:19:43 2013 -0800
+++ b/src/gpu/hsail/vm/gpu_hsail.hpp	Fri Nov 22 13:41:17 2013 -0800
@@ -44,8 +44,8 @@
 #endif
 
 private:
-  typedef void* (*okra_ctx_create_func_t)();
-  typedef void* (*okra_kernel_create_func_t)(void*, unsigned char *, const char *);
+  typedef void* (*okra_create_context_func_t)();
+  typedef void* (*okra_create_kernel_func_t)(void*, unsigned char *, const char *);
   typedef bool (*okra_push_object_func_t)(void*, void*);
   typedef bool (*okra_push_boolean_func_t)(void*, jboolean);
   typedef bool (*okra_push_byte_func_t)(void*, jbyte);
@@ -58,8 +58,8 @@
   typedef bool (*okra_register_heap_func_t)(void*, size_t);
   
 public:
-  static okra_ctx_create_func_t                 _okra_ctx_create;
-  static okra_kernel_create_func_t              _okra_kernel_create;
+  static okra_create_context_func_t             _okra_create_context;
+  static okra_create_kernel_func_t              _okra_create_kernel;
   static okra_push_object_func_t                _okra_push_object;
   static okra_push_boolean_func_t               _okra_push_boolean;
   static okra_push_byte_func_t                  _okra_push_byte;
--- a/src/os_gpu/linux_ptx/vm/gpu_linux.cpp	Fri Nov 22 12:19:43 2013 -0800
+++ b/src/os_gpu/linux_ptx/vm/gpu_linux.cpp	Fri Nov 22 13:41:17 2013 -0800
@@ -81,13 +81,19 @@
         tty->print_cr("Found supported nVidia GPU device vendor : 0x%04x device 0x%04x", vendor, device);
       }
       break;
-    } else if (vendor == amd_vendor_id) {
-      gpu_device_exists = true;
-      set_target_il_type(gpu::HSAIL);
-      if (TraceGPUInteraction) {
-        tty->print_cr("Found supported AMD GPU device vendor : 0x%04x device 0x%04x", vendor, device);
-      }
-      break;
+       /*
+        * Remove AMD detection until we decide how to detect real HSA hardware.
+        * In the current form this check does not work correctly on AMD CPU system with 
+        * Nvidia GPU.
+        *
+        * } else if (vendor == amd_vendor_id) {
+        *   gpu_device_exists = true;
+        *   set_target_il_type(gpu::HSAIL);
+        *   if (TraceGPUInteraction) {
+        *     tty->print_cr("Found supported AMD GPU device vendor : 0x%04x device 0x%04x", vendor, device);
+        *   }
+        *   break;
+        */
     }
   }
 
--- a/src/share/vm/runtime/thread.cpp	Fri Nov 22 12:19:43 2013 -0800
+++ b/src/share/vm/runtime/thread.cpp	Fri Nov 22 13:41:17 2013 -0800
@@ -3378,10 +3378,6 @@
   // Initialize the os module before using TLS
   os::init();
 
-  // Probe for existance of supported GPU and initialize it if one
-  // exists.
-  gpu::init();
-
   // Initialize system properties.
   Arguments::init_system_properties();
 
@@ -3395,6 +3391,10 @@
   jint parse_result = Arguments::parse(args);
   if (parse_result != JNI_OK) return parse_result;
 
+  // Probe for existance of supported GPU and initialize it if one
+  // exists.
+  gpu::init();
+
   os::init_before_ergo();
 
   jint ergo_result = Arguments::apply_ergo();