359 static void popframe_preserve_args(JavaThread* thread, int bytes_to_save, void* start_address); 360 361 static MethodData* get_method_data(JavaThread* thread, methodHandle m, bool create_if_missing); 362 private: 363 // Update the mdo's count and per-BCI reason bits, returning previous state: 364 static ProfileData* query_update_method_data(MethodData* trap_mdo, 365 int trap_bci, 366 DeoptReason reason, 367 Method* compiled_method, 368 //outputs: 369 uint& ret_this_trap_count, 370 bool& ret_maybe_prior_trap, 371 bool& ret_maybe_prior_recompile); 372 // class loading support for uncommon trap 373 static void load_class_by_index(constantPoolHandle constant_pool, int index, TRAPS); 374 static void load_class_by_index(constantPoolHandle constant_pool, int index); 375 376 static UnrollBlock* fetch_unroll_info_helper(JavaThread* thread); 377 378 static DeoptAction _unloaded_action; // == Action_reinterpret; 379 static const char* _trap_reason_name[Reason_LIMIT]; 380 static const char* _trap_action_name[Action_LIMIT]; 381 382 static juint _deoptimization_hist[Reason_LIMIT][1+Action_LIMIT][BC_CASE_LIMIT]; 383 // Note: Histogram array size is 1-2 Kb. 384 385 public: 386 static void update_method_data_from_interpreter(MethodData* trap_mdo, int trap_bci, int reason); 387 }; 388 389 class DeoptimizationMarker : StackObj { // for profiling 390 static bool _is_active; 391 public: 392 DeoptimizationMarker() { _is_active = true; } 393 ~DeoptimizationMarker() { _is_active = false; } 394 static bool is_active() { return _is_active; } 395 }; 396 397 #endif // SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP | 359 static void popframe_preserve_args(JavaThread* thread, int bytes_to_save, void* start_address); 360 361 static MethodData* get_method_data(JavaThread* thread, methodHandle m, bool create_if_missing); 362 private: 363 // Update the mdo's count and per-BCI reason bits, returning previous state: 364 static ProfileData* query_update_method_data(MethodData* trap_mdo, 365 int trap_bci, 366 DeoptReason reason, 367 Method* compiled_method, 368 //outputs: 369 uint& ret_this_trap_count, 370 bool& ret_maybe_prior_trap, 371 bool& ret_maybe_prior_recompile); 372 // class loading support for uncommon trap 373 static void load_class_by_index(constantPoolHandle constant_pool, int index, TRAPS); 374 static void load_class_by_index(constantPoolHandle constant_pool, int index); 375 376 static UnrollBlock* fetch_unroll_info_helper(JavaThread* thread); 377 378 static DeoptAction _unloaded_action; // == Action_reinterpret; 379 static const char* _trap_reason_name[]; 380 static const char* _trap_action_name[]; 381 382 static juint _deoptimization_hist[Reason_LIMIT][1+Action_LIMIT][BC_CASE_LIMIT]; 383 // Note: Histogram array size is 1-2 Kb. 384 385 public: 386 static void update_method_data_from_interpreter(MethodData* trap_mdo, int trap_bci, int reason); 387 }; 388 389 class DeoptimizationMarker : StackObj { // for profiling 390 static bool _is_active; 391 public: 392 DeoptimizationMarker() { _is_active = true; } 393 ~DeoptimizationMarker() { _is_active = false; } 394 static bool is_active() { return _is_active; } 395 }; 396 397 #endif // SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP |