Mercurial > hg > truffle
comparison src/share/vm/graal/graalVMToCompiler.cpp @ 15870:fe608a56e3f7
made HotSpotOptions processing faster by removing use of service loader in VM startup and only doing work for options specified on the command line
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 23 May 2014 19:36:34 +0200 |
parents | 063ec2920d21 |
children |
comparison
equal
deleted
inserted
replaced
15869:387b15da0f68 | 15870:fe608a56e3f7 |
---|---|
92 _VMToCompiler_instance = JNIHandles::make_global((oop) result.get_jobject()); | 92 _VMToCompiler_instance = JNIHandles::make_global((oop) result.get_jobject()); |
93 } | 93 } |
94 return Handle(JNIHandles::resolve_non_null(_VMToCompiler_instance)); | 94 return Handle(JNIHandles::resolve_non_null(_VMToCompiler_instance)); |
95 } | 95 } |
96 | 96 |
97 void VMToCompiler::initOptions() { | 97 void VMToCompiler::setOption(KlassHandle hotSpotOptionsClass, Handle name, Handle option, jchar spec, Handle stringValue, jlong primitiveValue) { |
98 assert(!option.is_null(), "npe"); | |
98 Thread* THREAD = Thread::current(); | 99 Thread* THREAD = Thread::current(); |
99 TempNewSymbol name = SymbolTable::new_symbol("com/oracle/graal/hotspot/HotSpotOptions", THREAD); | |
100 KlassHandle optionsKlass = loadClass(name); | |
101 optionsKlass->initialize(THREAD); | |
102 check_pending_exception("Error while calling initOptions"); | |
103 } | |
104 | |
105 jboolean VMToCompiler::setOption(Handle option) { | |
106 assert(!option.is_null(), ""); | |
107 Thread* THREAD = Thread::current(); | |
108 TempNewSymbol name = SymbolTable::new_symbol("com/oracle/graal/hotspot/HotSpotOptions", THREAD); | |
109 TempNewSymbol setOption = SymbolTable::new_symbol("setOption", THREAD); | 100 TempNewSymbol setOption = SymbolTable::new_symbol("setOption", THREAD); |
110 TempNewSymbol sig = SymbolTable::new_symbol("(Ljava/lang/String;)Z", THREAD); | 101 TempNewSymbol sig = SymbolTable::new_symbol("(Ljava/lang/String;Lcom/oracle/graal/options/OptionValue;CLjava/lang/String;J)V", THREAD); |
111 KlassHandle optionsKlass = loadClass(name); | |
112 JavaValue result(T_BOOLEAN); | |
113 JavaCalls::call_static(&result, optionsKlass, setOption, sig, option, THREAD); | |
114 check_pending_exception("Error while calling setOption"); | |
115 return result.get_jboolean(); | |
116 } | |
117 | |
118 void VMToCompiler::finalizeOptions(jboolean ciTime) { | |
119 Thread* THREAD = Thread::current(); | |
120 TempNewSymbol name = SymbolTable::new_symbol("com/oracle/graal/hotspot/HotSpotOptions", THREAD); | |
121 TempNewSymbol finalizeOptions = SymbolTable::new_symbol("finalizeOptions", THREAD); | |
122 TempNewSymbol sig = SymbolTable::new_symbol("(Ljava/lang/String;)Z", THREAD); | |
123 KlassHandle optionsKlass = loadClass(name); | |
124 JavaValue result(T_VOID); | 102 JavaValue result(T_VOID); |
125 JavaCallArguments args; | 103 JavaCallArguments args; |
126 args.push_int(ciTime); | 104 args.push_oop(name()); |
127 JavaCalls::call_static(&result, optionsKlass, finalizeOptions, vmSymbols::bool_void_signature(), &args, THREAD); | 105 args.push_oop(option()); |
128 check_pending_exception("Error while calling finalizeOptions"); | 106 args.push_int(spec); |
129 } | 107 args.push_oop(stringValue()); |
130 | 108 args.push_long(primitiveValue); |
131 void VMToCompiler::startRuntime() { | 109 JavaCalls::call_static(&result, hotSpotOptionsClass, setOption, sig, &args, THREAD); |
132 JavaThread* THREAD = JavaThread::current(); | 110 check_pending_exception("Error while calling setOption"); |
133 JavaValue result(T_VOID); | |
134 JavaCallArguments args; | |
135 TempNewSymbol startRuntime = SymbolTable::new_symbol("startRuntime", THREAD); | |
136 args.push_oop(VMToCompiler_instance()); | |
137 JavaCalls::call_interface(&result, VMToCompiler_klass(), startRuntime, vmSymbols::void_method_signature(), &args, THREAD); | |
138 check_pending_exception("Error while calling startRuntime"); | |
139 } | 111 } |
140 | 112 |
141 #ifdef COMPILERGRAAL | 113 #ifdef COMPILERGRAAL |
142 void VMToCompiler::bootstrap() { | 114 void VMToCompiler::bootstrap() { |
143 JavaThread* THREAD = JavaThread::current(); | 115 JavaThread* THREAD = JavaThread::current(); |