< prev index next >

src/share/vm/jvmci/jvmciCodeInstaller.hpp

Print this page
rev 9298 : 8142329: [JVMCI] pass Handle by value
rev 9280 : 8139589: [JVMCI] throw exceptions in faulty code installation operations
Reviewed-by: twisti
Contributed-by: Roland Schatz <roland.schatz@oracle.com>
rev 9249 : 8139170: JVMCI refresh
Reviewed-by: kvn
rev 9037 : 8136421: JEP 243: Java-Level JVM Compiler Interface
Reviewed-by: ihse, alanb, roland, coleenp, iveresov, kvn, kbarrett


 160   void pd_patch_DataSectionReference(int pc_offset, int data_offset);
 161   void pd_relocate_ForeignCall(NativeInstruction* inst, jlong foreign_call_destination, TRAPS);
 162   void pd_relocate_JavaMethod(Handle method, jint pc_offset, TRAPS);
 163   void pd_relocate_poll(address pc, jint mark, TRAPS);
 164 
 165   objArrayOop sites() { return (objArrayOop) JNIHandles::resolve(_sites_handle); }
 166   arrayOop code() { return (arrayOop) JNIHandles::resolve(_code_handle); }
 167   arrayOop data_section() { return (arrayOop) JNIHandles::resolve(_data_section_handle); }
 168   objArrayOop data_section_patches() { return (objArrayOop) JNIHandles::resolve(_data_section_patches_handle); }
 169   objArrayOop exception_handlers() { return (objArrayOop) JNIHandles::resolve(_exception_handlers_handle); }
 170 #ifndef PRODUCT
 171   objArrayOop comments() { return (objArrayOop) JNIHandles::resolve(_comments_handle); }
 172 #endif
 173 
 174   oop word_kind() { return (oop) JNIHandles::resolve(_word_kind_handle); }
 175 
 176 public:
 177 
 178   CodeInstaller() : _arena(mtCompiler) {}
 179 
 180   JVMCIEnv::CodeInstallResult gather_metadata(Handle target, Handle& compiled_code, CodeMetadata& metadata, TRAPS);
 181   JVMCIEnv::CodeInstallResult install(JVMCICompiler* compiler, Handle target, Handle& compiled_code, CodeBlob*& cb, Handle installed_code, Handle speculation_log, TRAPS);
 182 
 183   static address runtime_call_target_address(oop runtime_call);
 184   static VMReg get_hotspot_reg(jint jvmciRegisterNumber, TRAPS);
 185   static bool is_general_purpose_reg(VMReg hotspotRegister);
 186 
 187   const OopMapSet* oopMapSet() const { return _debug_recorder->_oopmaps; }
 188 
 189 protected:
 190   Location::Type get_oop_type(Handle value);
 191   ScopeValue* get_scope_value(Handle value, BasicType type, GrowableArray<ScopeValue*>* objects, ScopeValue* &second, TRAPS);
 192   MonitorValue* get_monitor_value(Handle value, GrowableArray<ScopeValue*>* objects, TRAPS);
 193 
 194   Metadata* record_metadata_reference(Handle constant, TRAPS);
 195 #ifdef _LP64
 196   narrowKlass record_narrow_metadata_reference(Handle constant, TRAPS);
 197 #endif
 198 
 199   // extract the fields of the CompilationResult
 200   void initialize_fields(oop target, oop target_method, TRAPS);
 201   void initialize_dependencies(oop target_method, OopRecorder* oop_recorder, TRAPS);




 160   void pd_patch_DataSectionReference(int pc_offset, int data_offset);
 161   void pd_relocate_ForeignCall(NativeInstruction* inst, jlong foreign_call_destination, TRAPS);
 162   void pd_relocate_JavaMethod(Handle method, jint pc_offset, TRAPS);
 163   void pd_relocate_poll(address pc, jint mark, TRAPS);
 164 
 165   objArrayOop sites() { return (objArrayOop) JNIHandles::resolve(_sites_handle); }
 166   arrayOop code() { return (arrayOop) JNIHandles::resolve(_code_handle); }
 167   arrayOop data_section() { return (arrayOop) JNIHandles::resolve(_data_section_handle); }
 168   objArrayOop data_section_patches() { return (objArrayOop) JNIHandles::resolve(_data_section_patches_handle); }
 169   objArrayOop exception_handlers() { return (objArrayOop) JNIHandles::resolve(_exception_handlers_handle); }
 170 #ifndef PRODUCT
 171   objArrayOop comments() { return (objArrayOop) JNIHandles::resolve(_comments_handle); }
 172 #endif
 173 
 174   oop word_kind() { return (oop) JNIHandles::resolve(_word_kind_handle); }
 175 
 176 public:
 177 
 178   CodeInstaller() : _arena(mtCompiler) {}
 179 
 180   JVMCIEnv::CodeInstallResult gather_metadata(Handle target, Handle compiled_code, CodeMetadata& metadata, TRAPS);
 181   JVMCIEnv::CodeInstallResult install(JVMCICompiler* compiler, Handle target, Handle compiled_code, CodeBlob*& cb, Handle installed_code, Handle speculation_log, TRAPS);
 182 
 183   static address runtime_call_target_address(oop runtime_call);
 184   static VMReg get_hotspot_reg(jint jvmciRegisterNumber, TRAPS);
 185   static bool is_general_purpose_reg(VMReg hotspotRegister);
 186 
 187   const OopMapSet* oopMapSet() const { return _debug_recorder->_oopmaps; }
 188 
 189 protected:
 190   Location::Type get_oop_type(Handle value);
 191   ScopeValue* get_scope_value(Handle value, BasicType type, GrowableArray<ScopeValue*>* objects, ScopeValue* &second, TRAPS);
 192   MonitorValue* get_monitor_value(Handle value, GrowableArray<ScopeValue*>* objects, TRAPS);
 193 
 194   Metadata* record_metadata_reference(Handle constant, TRAPS);
 195 #ifdef _LP64
 196   narrowKlass record_narrow_metadata_reference(Handle constant, TRAPS);
 197 #endif
 198 
 199   // extract the fields of the CompilationResult
 200   void initialize_fields(oop target, oop target_method, TRAPS);
 201   void initialize_dependencies(oop target_method, OopRecorder* oop_recorder, TRAPS);


< prev index next >