comparison 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
comparison
equal deleted inserted replaced
15581:0dc0926cf0d8 15582:063ec2920d21
26 26
27 #include "interpreter/interpreter.hpp" 27 #include "interpreter/interpreter.hpp"
28 #include "memory/allocation.hpp" 28 #include "memory/allocation.hpp"
29 #include "runtime/deoptimization.hpp" 29 #include "runtime/deoptimization.hpp"
30 30
31 class GraalRuntime: public AllStatic { 31 class GraalRuntime: public CHeapObj<mtCompiler> {
32 private:
33
34 static address _external_deopt_i2c_entry;
35
36 enum { uninitialized, initializing, initialized };
37 static volatile int _state;
38
32 public: 39 public:
40
41 static /*synchronized*/ void initialize();
42 static BufferBlob* initialize_buffer_blob();
43 static BasicType kindToBasicType(jchar ch);
44 static address create_external_deopt_i2c();
45 static address get_external_deopt_i2c_entry() {return _external_deopt_i2c_entry;}
46
47 // The following routines are all called from compiled Graal code
48
33 static void new_instance(JavaThread* thread, Klass* klass); 49 static void new_instance(JavaThread* thread, Klass* klass);
34 static void new_array(JavaThread* thread, Klass* klass, jint length); 50 static void new_array(JavaThread* thread, Klass* klass, jint length);
35 static void new_multi_array(JavaThread* thread, Klass* klass, int rank, jint* dims); 51 static void new_multi_array(JavaThread* thread, Klass* klass, int rank, jint* dims);
36 static void dynamic_new_array(JavaThread* thread, oopDesc* element_mirror, jint length); 52 static void dynamic_new_array(JavaThread* thread, oopDesc* element_mirror, jint length);
37 static void dynamic_new_instance(JavaThread* thread, oopDesc* type_mirror); 53 static void dynamic_new_instance(JavaThread* thread, oopDesc* type_mirror);
58 static void write_barrier_post(JavaThread* thread, void* card); 74 static void write_barrier_post(JavaThread* thread, void* card);
59 static jboolean validate_object(JavaThread* thread, oopDesc* parent, oopDesc* child); 75 static jboolean validate_object(JavaThread* thread, oopDesc* parent, oopDesc* child);
60 static void new_store_pre_barrier(JavaThread* thread); 76 static void new_store_pre_barrier(JavaThread* thread);
61 }; 77 };
62 78
79 // Tracing macros
80
81 #define IF_TRACE_graal_1 if (!(TraceGraal >= 1)) ; else
82 #define IF_TRACE_graal_2 if (!(TraceGraal >= 2)) ; else
83 #define IF_TRACE_graal_3 if (!(TraceGraal >= 3)) ; else
84 #define IF_TRACE_graal_4 if (!(TraceGraal >= 4)) ; else
85 #define IF_TRACE_graal_5 if (!(TraceGraal >= 5)) ; else
86
87 // using commas and else to keep one-instruction semantics
88
89 #define TRACE_graal_1 if (!(TraceGraal >= 1 && (tty->print("TraceGraal-1: "), true))) ; else tty->print_cr
90 #define TRACE_graal_2 if (!(TraceGraal >= 2 && (tty->print(" TraceGraal-2: "), true))) ; else tty->print_cr
91 #define TRACE_graal_3 if (!(TraceGraal >= 3 && (tty->print(" TraceGraal-3: "), true))) ; else tty->print_cr
92 #define TRACE_graal_4 if (!(TraceGraal >= 4 && (tty->print(" TraceGraal-4: "), true))) ; else tty->print_cr
93 #define TRACE_graal_5 if (!(TraceGraal >= 5 && (tty->print(" TraceGraal-5: "), true))) ; else tty->print_cr
94
63 #endif // SHARE_VM_GRAAL_GRAAL_RUNTIME_HPP 95 #endif // SHARE_VM_GRAAL_GRAAL_RUNTIME_HPP