< prev index next >

src/hotspot/cpu/ppc/frame_ppc.hpp

Print this page

362 
363   // frame pointer for this frame
364   intptr_t* _fp;
365 
366  public:
367 
368   // Accessors for fields
369   intptr_t* fp() const { return _fp; }
370 
371   // Accessors for ABIs
372   inline abi_minframe* own_abi()     const { return (abi_minframe*) _sp; }
373   inline abi_minframe* callers_abi() const { return (abi_minframe*) _fp; }
374 
375  private:
376 
377   // Find codeblob and set deopt_state.
378   inline void find_codeblob_and_set_pc_and_deopt_state(address pc);
379 
380  public:
381 


382   // Constructors
383   inline frame(intptr_t* sp);
384   inline frame(intptr_t* sp, address pc);
385   inline frame(intptr_t* sp, address pc, intptr_t* unextended_sp);
386 
387  private:
388 
389   intptr_t* compiled_sender_sp(CodeBlob* cb) const;
390   address*  compiled_sender_pc_addr(CodeBlob* cb) const;
391   address*  sender_pc_addr(void) const;
392 
393  public:
394 
395   inline ijava_state* get_ijava_state() const;
396   // Some convenient register frame setters/getters for deoptimization.
397   inline intptr_t* interpreter_frame_esp() const;
398   inline void interpreter_frame_set_cpcache(ConstantPoolCache* cp);
399   inline void interpreter_frame_set_esp(intptr_t* esp);
400   inline void interpreter_frame_set_top_frame_sp(intptr_t* top_frame_sp);
401   inline void interpreter_frame_set_sender_sp(intptr_t* sender_sp);
402 






403   // Size of a monitor in bytes.
404   static int interpreter_frame_monitor_size_in_bytes();
405 
406   // The size of a cInterpreter object.
407   static inline int interpreter_frame_cinterpreterstate_size_in_bytes();
408 
409   // Additional interface for entry frames:
410   inline entry_frame_locals* get_entry_frame_locals() const {
411     return (entry_frame_locals*) (((address) fp()) - entry_frame_locals_size);
412   }
413 
414   enum {
415     // normal return address is 1 bundle past PC
416     pc_return_offset = 0
417   };
418 
419   static jint interpreter_frame_expression_stack_direction() { return -1; }
420 
421   // returns the sending frame, without applying any barriers
422   frame sender_raw(RegisterMap* map) const;

362 
363   // frame pointer for this frame
364   intptr_t* _fp;
365 
366  public:
367 
368   // Accessors for fields
369   intptr_t* fp() const { return _fp; }
370 
371   // Accessors for ABIs
372   inline abi_minframe* own_abi()     const { return (abi_minframe*) _sp; }
373   inline abi_minframe* callers_abi() const { return (abi_minframe*) _fp; }
374 
375  private:
376 
377   // Find codeblob and set deopt_state.
378   inline void find_codeblob_and_set_pc_and_deopt_state(address pc);
379 
380  public:
381 
382   const ImmutableOopMap* get_oop_map() const;
383 
384   // Constructors

385   inline frame(intptr_t* sp, address pc);
386   inline frame(intptr_t* sp, address pc, intptr_t* unextended_sp);
387 
388  private:
389 
390   intptr_t* compiled_sender_sp(CodeBlob* cb) const;
391   address*  compiled_sender_pc_addr(CodeBlob* cb) const;
392   address*  sender_pc_addr(void) const;
393 
394  public:
395 
396   inline ijava_state* get_ijava_state() const;
397   // Some convenient register frame setters/getters for deoptimization.
398   inline intptr_t* interpreter_frame_esp() const;
399   inline void interpreter_frame_set_cpcache(ConstantPoolCache* cp);
400   inline void interpreter_frame_set_esp(intptr_t* esp);
401   inline void interpreter_frame_set_top_frame_sp(intptr_t* top_frame_sp);
402   inline void interpreter_frame_set_sender_sp(intptr_t* sender_sp);
403 
404   template <bool relative = false>
405   inline intptr_t* interpreter_frame_last_sp() const;
406 
407   template <typename RegisterMapT>
408   static void update_map_with_saved_link(RegisterMapT* map, intptr_t** link_addr);
409 
410   // Size of a monitor in bytes.
411   static int interpreter_frame_monitor_size_in_bytes();
412 
413   // The size of a cInterpreter object.
414   static inline int interpreter_frame_cinterpreterstate_size_in_bytes();
415 
416   // Additional interface for entry frames:
417   inline entry_frame_locals* get_entry_frame_locals() const {
418     return (entry_frame_locals*) (((address) fp()) - entry_frame_locals_size);
419   }
420 
421   enum {
422     // normal return address is 1 bundle past PC
423     pc_return_offset = 0
424   };
425 
426   static jint interpreter_frame_expression_stack_direction() { return -1; }
427 
428   // returns the sending frame, without applying any barriers
429   frame sender_raw(RegisterMap* map) const;
< prev index next >