Mercurial > hg > graal-jvmci-8
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 |