src/share/vm/runtime/frame.inline.hpp

Print this page
rev 4773 : 8005849: JEP 167: Event-Based JVM Tracing
Reviewed-by: acorn, coleenp, sla
Contributed-by: Karen Kinnear <karen.kinnear@oracle.com>, Bengt Rutisson <bengt.rutisson@oracle.com>, Calvin Cheung <calvin.cheung@oracle.com>, Erik Gahlin <erik.gahlin@oracle.com>, Erik Helin <erik.helin@oracle.com>, Jesper Wilhelmsson <jesper.wilhelmsson@oracle.com>, Keith McGuigan <keith.mcguigan@oracle.com>, Mattias Tobiasson <mattias.tobiasson@oracle.com>, Markus Gronlund <markus.gronlund@oracle.com>, Mikael Auno <mikael.auno@oracle.com>, Nils Eliasson <nils.eliasson@oracle.com>, Nils Loodin <nils.loodin@oracle.com>, Rickard Backman <rickard.backman@oracle.com>, Staffan Larsen <staffan.larsen@oracle.com>, Stefan Karlsson <stefan.karlsson@oracle.com>, Yekaterina Kantserova <yekaterina.kantserova@oracle.com>
   1 /*
   2  * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  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  *


  62 //       independent. These accessors make sure the correct value is returned
  63 //       by testing the range of the bcx value. bcp's are guaranteed to be above
  64 //       max_method_code_size, since methods are always allocated in OldSpace and
  65 //       Eden is allocated before OldSpace.
  66 //
  67 //       The bcp is accessed sometimes during GC for ArgumentDescriptors; than
  68 //       the correct translation has to be performed (was bug).
  69 
  70 inline bool frame::is_bci(intptr_t bcx) {
  71 #ifdef _LP64
  72   return ((uintptr_t) bcx) <= ((uintptr_t) max_method_code_size) ;
  73 #else
  74   return 0 <= bcx && bcx <= max_method_code_size;
  75 #endif
  76 }
  77 
  78 inline bool frame::is_entry_frame() const {
  79   return StubRoutines::returns_to_call_stub(pc());
  80 }
  81 




  82 inline bool frame::is_first_frame() const {
  83   return is_entry_frame() && entry_frame_is_first();
  84 }
  85 
  86 // here are the platform-dependent bodies:
  87 
  88 #ifdef TARGET_ARCH_x86
  89 # include "frame_x86.inline.hpp"
  90 #endif
  91 #ifdef TARGET_ARCH_sparc
  92 # include "frame_sparc.inline.hpp"
  93 #endif
  94 #ifdef TARGET_ARCH_zero
  95 # include "frame_zero.inline.hpp"
  96 #endif
  97 #ifdef TARGET_ARCH_arm
  98 # include "frame_arm.inline.hpp"
  99 #endif
 100 #ifdef TARGET_ARCH_ppc
 101 # include "frame_ppc.inline.hpp"
   1 /*
   2  * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  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  *


  62 //       independent. These accessors make sure the correct value is returned
  63 //       by testing the range of the bcx value. bcp's are guaranteed to be above
  64 //       max_method_code_size, since methods are always allocated in OldSpace and
  65 //       Eden is allocated before OldSpace.
  66 //
  67 //       The bcp is accessed sometimes during GC for ArgumentDescriptors; than
  68 //       the correct translation has to be performed (was bug).
  69 
  70 inline bool frame::is_bci(intptr_t bcx) {
  71 #ifdef _LP64
  72   return ((uintptr_t) bcx) <= ((uintptr_t) max_method_code_size) ;
  73 #else
  74   return 0 <= bcx && bcx <= max_method_code_size;
  75 #endif
  76 }
  77 
  78 inline bool frame::is_entry_frame() const {
  79   return StubRoutines::returns_to_call_stub(pc());
  80 }
  81 
  82 inline bool frame::is_stub_frame() const {
  83   return StubRoutines::is_stub_code(pc()) || (_cb != NULL && _cb->is_adapter_blob());
  84 }
  85 
  86 inline bool frame::is_first_frame() const {
  87   return is_entry_frame() && entry_frame_is_first();
  88 }
  89 
  90 // here are the platform-dependent bodies:
  91 
  92 #ifdef TARGET_ARCH_x86
  93 # include "frame_x86.inline.hpp"
  94 #endif
  95 #ifdef TARGET_ARCH_sparc
  96 # include "frame_sparc.inline.hpp"
  97 #endif
  98 #ifdef TARGET_ARCH_zero
  99 # include "frame_zero.inline.hpp"
 100 #endif
 101 #ifdef TARGET_ARCH_arm
 102 # include "frame_arm.inline.hpp"
 103 #endif
 104 #ifdef TARGET_ARCH_ppc
 105 # include "frame_ppc.inline.hpp"