< prev index next >

src/share/vm/runtime/deoptimization.hpp

Print this page




 134   // Deoptimizes a frame lazily. nmethod gets patched deopt happens on return to the frame
 135   static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map);
 136   static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map, DeoptReason reason);
 137 
 138   private:
 139   // Does the actual work for deoptimizing a single frame
 140   static void deoptimize_single_frame(JavaThread* thread, frame fr, DeoptReason reason);
 141 
 142   // Helper function to revoke biases of all monitors in frame if UseBiasedLocking
 143   // is enabled
 144   static void revoke_biases_of_monitors(JavaThread* thread, frame fr, RegisterMap* map);
 145   // Helper function to revoke biases of all monitors in frames
 146   // executing in a particular CodeBlob if UseBiasedLocking is enabled
 147   static void revoke_biases_of_monitors(CodeBlob* cb);
 148 
 149 #if defined(COMPILER2) || INCLUDE_JVMCI
 150 JVMCI_ONLY(public:)
 151 
 152   // Support for restoring non-escaping objects
 153   static bool realloc_objects(JavaThread* thread, frame* fr, GrowableArray<ScopeValue*>* objects, TRAPS);

 154   static void reassign_type_array_elements(frame* fr, RegisterMap* reg_map, ObjectValue* sv, typeArrayOop obj, BasicType type);
 155   static void reassign_object_array_elements(frame* fr, RegisterMap* reg_map, ObjectValue* sv, objArrayOop obj);
 156   static void reassign_value_array_elements(frame* fr, RegisterMap* reg_map, ObjectValue* sv, valueArrayOop obj, ValueArrayKlass* vak, TRAPS);
 157   static void reassign_fields(frame* fr, RegisterMap* reg_map, GrowableArray<ScopeValue*>* objects, bool realloc_failures, bool skip_internal, TRAPS);
 158   static void relock_objects(GrowableArray<MonitorInfo*>* monitors, JavaThread* thread, bool realloc_failures);
 159   static void pop_frames_failed_reallocs(JavaThread* thread, vframeArray* array);
 160   NOT_PRODUCT(static void print_objects(GrowableArray<ScopeValue*>* objects, bool realloc_failures);)
 161 #endif // COMPILER2 || INCLUDE_JVMCI
 162 
 163   public:
 164   static vframeArray* create_vframeArray(JavaThread* thread, frame fr, RegisterMap *reg_map, GrowableArray<compiledVFrame*>* chunk, bool realloc_failures);
 165 
 166   // Interface used for unpacking deoptimized frames
 167 
 168   // UnrollBlock is returned by fetch_unroll_info() to the deoptimization handler (blob).
 169   // This is only a CheapObj to ease debugging after a deopt failure
 170   class UnrollBlock : public CHeapObj<mtCompiler> {
 171     friend class VMStructs;
 172     friend class JVMCIVMStructs;
 173    private:




 134   // Deoptimizes a frame lazily. nmethod gets patched deopt happens on return to the frame
 135   static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map);
 136   static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map, DeoptReason reason);
 137 
 138   private:
 139   // Does the actual work for deoptimizing a single frame
 140   static void deoptimize_single_frame(JavaThread* thread, frame fr, DeoptReason reason);
 141 
 142   // Helper function to revoke biases of all monitors in frame if UseBiasedLocking
 143   // is enabled
 144   static void revoke_biases_of_monitors(JavaThread* thread, frame fr, RegisterMap* map);
 145   // Helper function to revoke biases of all monitors in frames
 146   // executing in a particular CodeBlob if UseBiasedLocking is enabled
 147   static void revoke_biases_of_monitors(CodeBlob* cb);
 148 
 149 #if defined(COMPILER2) || INCLUDE_JVMCI
 150 JVMCI_ONLY(public:)
 151 
 152   // Support for restoring non-escaping objects
 153   static bool realloc_objects(JavaThread* thread, frame* fr, GrowableArray<ScopeValue*>* objects, TRAPS);
 154   static bool realloc_value_type_result(ValueKlass* vk, const RegisterMap& map, GrowableArray<Handle>& return_oops, TRAPS);
 155   static void reassign_type_array_elements(frame* fr, RegisterMap* reg_map, ObjectValue* sv, typeArrayOop obj, BasicType type);
 156   static void reassign_object_array_elements(frame* fr, RegisterMap* reg_map, ObjectValue* sv, objArrayOop obj);
 157   static void reassign_value_array_elements(frame* fr, RegisterMap* reg_map, ObjectValue* sv, valueArrayOop obj, ValueArrayKlass* vak, TRAPS);
 158   static void reassign_fields(frame* fr, RegisterMap* reg_map, GrowableArray<ScopeValue*>* objects, bool realloc_failures, bool skip_internal, TRAPS);
 159   static void relock_objects(GrowableArray<MonitorInfo*>* monitors, JavaThread* thread, bool realloc_failures);
 160   static void pop_frames_failed_reallocs(JavaThread* thread, vframeArray* array);
 161   NOT_PRODUCT(static void print_objects(GrowableArray<ScopeValue*>* objects, bool realloc_failures);)
 162 #endif // COMPILER2 || INCLUDE_JVMCI
 163 
 164   public:
 165   static vframeArray* create_vframeArray(JavaThread* thread, frame fr, RegisterMap *reg_map, GrowableArray<compiledVFrame*>* chunk, bool realloc_failures);
 166 
 167   // Interface used for unpacking deoptimized frames
 168 
 169   // UnrollBlock is returned by fetch_unroll_info() to the deoptimization handler (blob).
 170   // This is only a CheapObj to ease debugging after a deopt failure
 171   class UnrollBlock : public CHeapObj<mtCompiler> {
 172     friend class VMStructs;
 173     friend class JVMCIVMStructs;
 174    private:


< prev index next >