< prev index next >

src/share/vm/runtime/frame.hpp

Print this page
rev 11647 : 8161258: Simplify including platform files.
Summary: Include patform files with macros cpu_header() etc. Do various cleanups of macro usages. Remove _64/_32 from adlc generated files and platform .hpp files. Merge stubRoutines_x86*.hpp. Remove empty mutex_<os>* files.
Reviewed-by: dholmes, coleenp, kbarrett


  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_RUNTIME_FRAME_HPP
  26 #define SHARE_VM_RUNTIME_FRAME_HPP
  27 
  28 #include "oops/method.hpp"
  29 #include "runtime/basicLock.hpp"
  30 #include "runtime/monitorChunk.hpp"
  31 #include "runtime/registerMap.hpp"
  32 #ifdef TARGET_ARCH_zero

  33 # include "stack_zero.hpp"
  34 #endif
  35 
  36 typedef class BytecodeInterpreter* interpreterState;
  37 
  38 class CodeBlob;
  39 class FrameValues;
  40 class vframeArray;
  41 
  42 
  43 // A frame represents a physical stack frame (an activation).  Frames
  44 // can be C or Java frames, and the Java frames can be interpreted or
  45 // compiled.  In contrast, vframes represent source-level activations,
  46 // so that one physical frame can correspond to multiple source level
  47 // frames because of inlining.
  48 
  49 class frame VALUE_OBJ_CLASS_SPEC {
  50  private:
  51   // Instance variables:
  52   intptr_t* _sp; // stack pointer (from Thread::last_Java_sp)


 398   void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
 399   void oops_entry_do(OopClosure* f, const RegisterMap* map);
 400   void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
 401   int adjust_offset(Method* method, int index); // helper for above fn
 402  public:
 403   // Memory management
 404   void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
 405   void nmethods_do(CodeBlobClosure* cf);
 406 
 407   // RedefineClasses support for finding live interpreted methods on the stack
 408   void metadata_do(void f(Metadata*));
 409 
 410   // Verification
 411   void verify(const RegisterMap* map);
 412   static bool verify_return_pc(address x);
 413   // Usage:
 414   // assert(frame::verify_return_pc(return_address), "must be a return pc");
 415 
 416   int pd_oop_map_offset_adjustment() const;
 417 
 418 #ifdef TARGET_ARCH_x86
 419 # include "frame_x86.hpp"
 420 #endif
 421 #ifdef TARGET_ARCH_sparc
 422 # include "frame_sparc.hpp"
 423 #endif
 424 #ifdef TARGET_ARCH_zero
 425 # include "frame_zero.hpp"
 426 #endif
 427 #ifdef TARGET_ARCH_arm
 428 # include "frame_arm.hpp"
 429 #endif
 430 #ifdef TARGET_ARCH_ppc
 431 # include "frame_ppc.hpp"
 432 #endif
 433 #ifdef TARGET_ARCH_aarch64
 434 # include "frame_aarch64.hpp"
 435 #endif
 436 
 437 };
 438 
 439 #ifndef PRODUCT
 440 // A simple class to describe a location on the stack
 441 class FrameValue VALUE_OBJ_CLASS_SPEC {
 442  public:
 443   intptr_t* location;
 444   char* description;
 445   int owner;
 446   int priority;
 447 
 448   FrameValue() {
 449     location = NULL;
 450     description = NULL;
 451     owner = -1;
 452     priority = 0;
 453   }
 454 
 455 };




  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_RUNTIME_FRAME_HPP
  26 #define SHARE_VM_RUNTIME_FRAME_HPP
  27 
  28 #include "oops/method.hpp"
  29 #include "runtime/basicLock.hpp"
  30 #include "runtime/monitorChunk.hpp"
  31 #include "runtime/registerMap.hpp"
  32 #include "utilities/macros.hpp"
  33 #ifdef ZERO
  34 # include "stack_zero.hpp"
  35 #endif
  36 
  37 typedef class BytecodeInterpreter* interpreterState;
  38 
  39 class CodeBlob;
  40 class FrameValues;
  41 class vframeArray;
  42 
  43 
  44 // A frame represents a physical stack frame (an activation).  Frames
  45 // can be C or Java frames, and the Java frames can be interpreted or
  46 // compiled.  In contrast, vframes represent source-level activations,
  47 // so that one physical frame can correspond to multiple source level
  48 // frames because of inlining.
  49 
  50 class frame VALUE_OBJ_CLASS_SPEC {
  51  private:
  52   // Instance variables:
  53   intptr_t* _sp; // stack pointer (from Thread::last_Java_sp)


 399   void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
 400   void oops_entry_do(OopClosure* f, const RegisterMap* map);
 401   void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
 402   int adjust_offset(Method* method, int index); // helper for above fn
 403  public:
 404   // Memory management
 405   void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
 406   void nmethods_do(CodeBlobClosure* cf);
 407 
 408   // RedefineClasses support for finding live interpreted methods on the stack
 409   void metadata_do(void f(Metadata*));
 410 
 411   // Verification
 412   void verify(const RegisterMap* map);
 413   static bool verify_return_pc(address x);
 414   // Usage:
 415   // assert(frame::verify_return_pc(return_address), "must be a return pc");
 416 
 417   int pd_oop_map_offset_adjustment() const;
 418 
 419 #include CPU_HEADER(frame)

















 420 
 421 };
 422 
 423 #ifndef PRODUCT
 424 // A simple class to describe a location on the stack
 425 class FrameValue VALUE_OBJ_CLASS_SPEC {
 426  public:
 427   intptr_t* location;
 428   char* description;
 429   int owner;
 430   int priority;
 431 
 432   FrameValue() {
 433     location = NULL;
 434     description = NULL;
 435     owner = -1;
 436     priority = 0;
 437   }
 438 
 439 };


< prev index next >