diff src/share/vm/graal/graalRuntime.hpp @ 15582:063ec2920d21

made Graal runtime initialization in hosted mode lazy
author Doug Simon <doug.simon@oracle.com>
date Fri, 09 May 2014 18:46:41 +0200
parents 0cb5c4d276d4
children ddb3ef30fcd2
line wrap: on
line diff
--- a/src/share/vm/graal/graalRuntime.hpp	Fri May 09 17:59:15 2014 +0200
+++ b/src/share/vm/graal/graalRuntime.hpp	Fri May 09 18:46:41 2014 +0200
@@ -28,8 +28,24 @@
 #include "memory/allocation.hpp"
 #include "runtime/deoptimization.hpp"
 
-class GraalRuntime: public AllStatic {
+class GraalRuntime: public CHeapObj<mtCompiler> {
+ private:
+
+  static address   _external_deopt_i2c_entry;
+
+  enum { uninitialized, initializing, initialized };
+  static volatile int _state;
+
  public:
+
+  static /*synchronized*/ void initialize();
+  static BufferBlob* initialize_buffer_blob();
+  static BasicType kindToBasicType(jchar ch);
+  static address create_external_deopt_i2c();
+  static address get_external_deopt_i2c_entry() {return _external_deopt_i2c_entry;}
+
+  // The following routines are all called from compiled Graal code
+
   static void new_instance(JavaThread* thread, Klass* klass);
   static void new_array(JavaThread* thread, Klass* klass, jint length);
   static void new_multi_array(JavaThread* thread, Klass* klass, int rank, jint* dims);
@@ -60,4 +76,20 @@
   static void new_store_pre_barrier(JavaThread* thread);
 };
 
+// Tracing macros
+
+#define IF_TRACE_graal_1 if (!(TraceGraal >= 1)) ; else
+#define IF_TRACE_graal_2 if (!(TraceGraal >= 2)) ; else
+#define IF_TRACE_graal_3 if (!(TraceGraal >= 3)) ; else
+#define IF_TRACE_graal_4 if (!(TraceGraal >= 4)) ; else
+#define IF_TRACE_graal_5 if (!(TraceGraal >= 5)) ; else
+
+// using commas and else to keep one-instruction semantics
+
+#define TRACE_graal_1 if (!(TraceGraal >= 1 && (tty->print("TraceGraal-1: "), true))) ; else tty->print_cr
+#define TRACE_graal_2 if (!(TraceGraal >= 2 && (tty->print("   TraceGraal-2: "), true))) ; else tty->print_cr
+#define TRACE_graal_3 if (!(TraceGraal >= 3 && (tty->print("      TraceGraal-3: "), true))) ; else tty->print_cr
+#define TRACE_graal_4 if (!(TraceGraal >= 4 && (tty->print("         TraceGraal-4: "), true))) ; else tty->print_cr
+#define TRACE_graal_5 if (!(TraceGraal >= 5 && (tty->print("            TraceGraal-5: "), true))) ; else tty->print_cr
+
 #endif // SHARE_VM_GRAAL_GRAAL_RUNTIME_HPP