< prev index next >

src/hotspot/share/runtime/frame.hpp

Print this page

316 
317   void interpreter_frame_set_locals(intptr_t* locs);
318 
319   // byte code index
320   jint interpreter_frame_bci() const;
321 
322   // byte code pointer
323   address interpreter_frame_bcp() const;
324   void    interpreter_frame_set_bcp(address bcp);
325 
326   // method data pointer
327   address interpreter_frame_mdp() const;
328   void    interpreter_frame_set_mdp(address dp);
329 
330   // Find receiver out of caller's (compiled) argument list
331   oop retrieve_receiver(RegisterMap *reg_map);
332 
333   // Return the monitor owner and BasicLock for compiled synchronized
334   // native methods. Used by JVMTI's GetLocalInstance method
335   // (via VM_GetReceiver) to retrieve the receiver from a native wrapper frame.
336   BasicLock* get_native_monitor();
337   oop        get_native_receiver();
338 
339   // Find receiver for an invoke when arguments are just pushed on stack (i.e., callee stack-frame is
340   // not setup)
341   oop interpreter_callee_receiver(Symbol* signature);
342 
343 
344   oop* interpreter_callee_receiver_addr(Symbol* signature);
345 
346 
347   // expression stack (may go up or down, direction == 1 or -1)
348  public:
349   intptr_t* interpreter_frame_expression_stack() const;
350 
351   // The _at version returns a pointer because the address is used for GC.
352   intptr_t* interpreter_frame_expression_stack_at(jint offset) const;
353 
354   // top of expression stack
355   intptr_t* interpreter_frame_tos_at(jint offset) const;
356   intptr_t* interpreter_frame_tos_address() const;
357 

403 
404   void interpreter_frame_set_mirror(oop mirror);
405 
406  public:
407   // Entry frames
408   JavaCallWrapper* entry_frame_call_wrapper() const { return *entry_frame_call_wrapper_addr(); }
409   JavaCallWrapper* entry_frame_call_wrapper_if_safe(JavaThread* thread) const;
410   JavaCallWrapper** entry_frame_call_wrapper_addr() const;
411   intptr_t* entry_frame_argument_at(int offset) const;
412 
413   // tells whether there is another chunk of Delta stack above
414   bool entry_frame_is_first() const;
415   bool upcall_stub_frame_is_first() const;
416 
417   // Safepoints
418 
419  public:
420   oop saved_oop_result(RegisterMap* map) const;
421   void set_saved_oop_result(RegisterMap* map, oop obj);
422 


423   // For debugging
424  private:
425   const char* print_name() const;
426 
427   void describe_pd(FrameValues& values, int frame_no);
428 
429  public:
430   void print_value() const { print_value_on(tty,nullptr); }
431   void print_value_on(outputStream* st, JavaThread *thread) const;
432   void print_on(outputStream* st) const;
433   void interpreter_frame_print_on(outputStream* st) const;
434   void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
435   static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
436 
437   // Add annotated descriptions of memory locations belonging to this frame to values
438   void describe(FrameValues& values, int frame_no, const RegisterMap* reg_map=nullptr);
439 
440   // Conversion from a VMReg to physical stack location
441   template <typename RegisterMapT>
442   address oopmapreg_to_location(VMReg reg, const RegisterMapT* reg_map) const;
443   template <typename RegisterMapT>
444   oop* oopmapreg_to_oop_location(VMReg reg, const RegisterMapT* reg_map) const;
445 
446   // Oops-do's
447   void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f) const;
448   void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true) const;
449 
450  private:
451   void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) const;
452 
453   // Iteration of oops
454   void oops_do_internal(OopClosure* f, CodeBlobClosure* cf,
455                         DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
456                         const RegisterMap* map, bool use_interpreter_oop_map_cache) const;
457 
458   void oops_entry_do(OopClosure* f, const RegisterMap* map) const;

316 
317   void interpreter_frame_set_locals(intptr_t* locs);
318 
319   // byte code index
320   jint interpreter_frame_bci() const;
321 
322   // byte code pointer
323   address interpreter_frame_bcp() const;
324   void    interpreter_frame_set_bcp(address bcp);
325 
326   // method data pointer
327   address interpreter_frame_mdp() const;
328   void    interpreter_frame_set_mdp(address dp);
329 
330   // Find receiver out of caller's (compiled) argument list
331   oop retrieve_receiver(RegisterMap *reg_map);
332 
333   // Return the monitor owner and BasicLock for compiled synchronized
334   // native methods. Used by JVMTI's GetLocalInstance method
335   // (via VM_GetReceiver) to retrieve the receiver from a native wrapper frame.
336   BasicLock* get_native_monitor() const;
337   oop        get_native_receiver() const;
338 
339   // Find receiver for an invoke when arguments are just pushed on stack (i.e., callee stack-frame is
340   // not setup)
341   oop interpreter_callee_receiver(Symbol* signature);
342 
343 
344   oop* interpreter_callee_receiver_addr(Symbol* signature);
345 
346 
347   // expression stack (may go up or down, direction == 1 or -1)
348  public:
349   intptr_t* interpreter_frame_expression_stack() const;
350 
351   // The _at version returns a pointer because the address is used for GC.
352   intptr_t* interpreter_frame_expression_stack_at(jint offset) const;
353 
354   // top of expression stack
355   intptr_t* interpreter_frame_tos_at(jint offset) const;
356   intptr_t* interpreter_frame_tos_address() const;
357 

403 
404   void interpreter_frame_set_mirror(oop mirror);
405 
406  public:
407   // Entry frames
408   JavaCallWrapper* entry_frame_call_wrapper() const { return *entry_frame_call_wrapper_addr(); }
409   JavaCallWrapper* entry_frame_call_wrapper_if_safe(JavaThread* thread) const;
410   JavaCallWrapper** entry_frame_call_wrapper_addr() const;
411   intptr_t* entry_frame_argument_at(int offset) const;
412 
413   // tells whether there is another chunk of Delta stack above
414   bool entry_frame_is_first() const;
415   bool upcall_stub_frame_is_first() const;
416 
417   // Safepoints
418 
419  public:
420   oop saved_oop_result(RegisterMap* map) const;
421   void set_saved_oop_result(RegisterMap* map, oop obj);
422 
423   static JavaThread** saved_thread_address(const frame& f);
424 
425   // For debugging
426  private:
427   const char* print_name() const;
428 
429   void describe_pd(FrameValues& values, int frame_no);
430 
431  public:
432   void print_value() const { print_value_on(tty,nullptr); }
433   void print_value_on(outputStream* st, JavaThread *thread) const;
434   void print_on(outputStream* st) const;
435   void interpreter_frame_print_on(outputStream* st) const;
436   void print_on_error(outputStream* st, char* buf, int buflen, bool verbose = false) const;
437   static void print_C_frame(outputStream* st, char* buf, int buflen, address pc);
438 
439   // Add annotated descriptions of memory locations belonging to this frame to values
440   void describe(FrameValues& values, int frame_no, const RegisterMap* reg_map=nullptr, bool top = false);
441 
442   // Conversion from a VMReg to physical stack location
443   template <typename RegisterMapT>
444   address oopmapreg_to_location(VMReg reg, const RegisterMapT* reg_map) const;
445   template <typename RegisterMapT>
446   oop* oopmapreg_to_oop_location(VMReg reg, const RegisterMapT* reg_map) const;
447 
448   // Oops-do's
449   void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f) const;
450   void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true) const;
451 
452  private:
453   void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) const;
454 
455   // Iteration of oops
456   void oops_do_internal(OopClosure* f, CodeBlobClosure* cf,
457                         DerivedOopClosure* df, DerivedPointerIterationMode derived_mode,
458                         const RegisterMap* map, bool use_interpreter_oop_map_cache) const;
459 
460   void oops_entry_do(OopClosure* f, const RegisterMap* map) const;
< prev index next >