1.1 --- a/src/share/vm/code/nmethod.hpp Fri Jan 29 12:13:05 2010 +0100 1.2 +++ b/src/share/vm/code/nmethod.hpp Fri Jan 29 08:33:24 2010 -0800 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright 1997-2010 Sun Microsystems, Inc. All Rights Reserved. 1.6 + * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -145,12 +145,8 @@ 1.11 1.12 // Offsets for different nmethod parts 1.13 int _exception_offset; 1.14 - // All deoptee's will resume execution at this location described by 1.15 - // this offset. 1.16 + // All deoptee's will resume execution at this location described by this offset 1.17 int _deoptimize_offset; 1.18 - // All deoptee's at a MethodHandle call site will resume execution 1.19 - // at this location described by this offset. 1.20 - int _deoptimize_mh_offset; 1.21 #ifdef HAVE_DTRACE_H 1.22 int _trap_offset; 1.23 #endif // def HAVE_DTRACE_H 1.24 @@ -333,25 +329,24 @@ 1.25 bool is_compiled_by_c2() const; 1.26 1.27 // boundaries for different parts 1.28 - address code_begin () const { return _entry_point; } 1.29 - address code_end () const { return header_begin() + _stub_offset ; } 1.30 - address exception_begin () const { return header_begin() + _exception_offset ; } 1.31 - address deopt_handler_begin () const { return header_begin() + _deoptimize_offset ; } 1.32 - address deopt_mh_handler_begin() const { return header_begin() + _deoptimize_mh_offset ; } 1.33 - address stub_begin () const { return header_begin() + _stub_offset ; } 1.34 - address stub_end () const { return header_begin() + _consts_offset ; } 1.35 - address consts_begin () const { return header_begin() + _consts_offset ; } 1.36 - address consts_end () const { return header_begin() + _scopes_data_offset ; } 1.37 - address scopes_data_begin () const { return header_begin() + _scopes_data_offset ; } 1.38 - address scopes_data_end () const { return header_begin() + _scopes_pcs_offset ; } 1.39 - PcDesc* scopes_pcs_begin () const { return (PcDesc*)(header_begin() + _scopes_pcs_offset ); } 1.40 - PcDesc* scopes_pcs_end () const { return (PcDesc*)(header_begin() + _dependencies_offset) ; } 1.41 - address dependencies_begin () const { return header_begin() + _dependencies_offset ; } 1.42 - address dependencies_end () const { return header_begin() + _handler_table_offset ; } 1.43 - address handler_table_begin () const { return header_begin() + _handler_table_offset ; } 1.44 - address handler_table_end () const { return header_begin() + _nul_chk_table_offset ; } 1.45 - address nul_chk_table_begin () const { return header_begin() + _nul_chk_table_offset ; } 1.46 - address nul_chk_table_end () const { return header_begin() + _nmethod_end_offset ; } 1.47 + address code_begin () const { return _entry_point; } 1.48 + address code_end () const { return header_begin() + _stub_offset ; } 1.49 + address exception_begin () const { return header_begin() + _exception_offset ; } 1.50 + address deopt_handler_begin() const { return header_begin() + _deoptimize_offset ; } 1.51 + address stub_begin () const { return header_begin() + _stub_offset ; } 1.52 + address stub_end () const { return header_begin() + _consts_offset ; } 1.53 + address consts_begin () const { return header_begin() + _consts_offset ; } 1.54 + address consts_end () const { return header_begin() + _scopes_data_offset ; } 1.55 + address scopes_data_begin () const { return header_begin() + _scopes_data_offset ; } 1.56 + address scopes_data_end () const { return header_begin() + _scopes_pcs_offset ; } 1.57 + PcDesc* scopes_pcs_begin () const { return (PcDesc*)(header_begin() + _scopes_pcs_offset ); } 1.58 + PcDesc* scopes_pcs_end () const { return (PcDesc*)(header_begin() + _dependencies_offset); } 1.59 + address dependencies_begin () const { return header_begin() + _dependencies_offset ; } 1.60 + address dependencies_end () const { return header_begin() + _handler_table_offset ; } 1.61 + address handler_table_begin() const { return header_begin() + _handler_table_offset ; } 1.62 + address handler_table_end () const { return header_begin() + _nul_chk_table_offset ; } 1.63 + address nul_chk_table_begin() const { return header_begin() + _nul_chk_table_offset ; } 1.64 + address nul_chk_table_end () const { return header_begin() + _nmethod_end_offset ; } 1.65 1.66 int code_size () const { return code_end () - code_begin (); } 1.67 int stub_size () const { return stub_end () - stub_begin (); } 1.68 @@ -520,7 +515,7 @@ 1.69 private: 1.70 ScopeDesc* scope_desc_in(address begin, address end); 1.71 1.72 - address* orig_pc_addr(const frame* fr) { return (address*) ((address)fr->unextended_sp() + _orig_pc_offset); } 1.73 + address* orig_pc_addr(const frame* fr ) { return (address*) ((address)fr->unextended_sp() + _orig_pc_offset); } 1.74 1.75 PcDesc* find_pc_desc_internal(address pc, bool approximate); 1.76 1.77 @@ -543,17 +538,13 @@ 1.78 void copy_scopes_pcs(PcDesc* pcs, int count); 1.79 void copy_scopes_data(address buffer, int size); 1.80 1.81 - // Deopt 1.82 - // Return true is the PC is one would expect if the frame is being deopted. 1.83 - bool is_deopt_pc (address pc) { return is_deopt_entry(pc) || is_deopt_mh_entry(pc); } 1.84 - bool is_deopt_entry (address pc) { return pc == deopt_handler_begin(); } 1.85 - bool is_deopt_mh_entry(address pc) { return pc == deopt_mh_handler_begin(); } 1.86 + // deopt 1.87 + // return true is the pc is one would expect if the frame is being deopted. 1.88 + bool is_deopt_pc(address pc); 1.89 // Accessor/mutator for the original pc of a frame before a frame was deopted. 1.90 address get_original_pc(const frame* fr) { return *orig_pc_addr(fr); } 1.91 void set_original_pc(const frame* fr, address pc) { *orig_pc_addr(fr) = pc; } 1.92 1.93 - static address get_deopt_original_pc(const frame* fr); 1.94 - 1.95 // MethodHandle 1.96 bool is_method_handle_return(address return_pc); 1.97