hotspot/src/share/vm/code/scopeDesc.hpp
changeset 3686 69c1b5228547
parent 3600 27aa4477d039
child 4894 8a76fd3d098d
equal deleted inserted replaced
3685:e14965d942e3 3686:69c1b5228547
     1 /*
     1 /*
     2  * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
     2  * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     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
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    37     PcDesc* pc_desc = code->pc_desc_at(pc);
    37     PcDesc* pc_desc = code->pc_desc_at(pc);
    38     assert(pc_desc != NULL, "Must be able to find matching PcDesc");
    38     assert(pc_desc != NULL, "Must be able to find matching PcDesc");
    39     DebugInfoReadStream buffer(code, pc_desc->scope_decode_offset());
    39     DebugInfoReadStream buffer(code, pc_desc->scope_decode_offset());
    40     int ignore_sender = buffer.read_int();
    40     int ignore_sender = buffer.read_int();
    41     _method           = methodOop(buffer.read_oop());
    41     _method           = methodOop(buffer.read_oop());
    42     bool dummy_reexecute; //only methodOop and bci are needed!
    42     _bci              = buffer.read_bci();
    43     _bci              = buffer.read_bci_and_reexecute(dummy_reexecute);
       
    44   }
    43   }
    45 
    44 
    46   methodOop method() { return _method; }
    45   methodOop method() { return _method; }
    47   int bci() { return _bci; }
    46   int bci() { return _bci; }
    48 };
    47 };
    51 // nmethods possible; each scopeDesc describes a method activation
    50 // nmethods possible; each scopeDesc describes a method activation
    52 
    51 
    53 class ScopeDesc : public ResourceObj {
    52 class ScopeDesc : public ResourceObj {
    54  public:
    53  public:
    55   // Constructor
    54   // Constructor
    56   ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset);
    55   ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute);
    57 
    56 
    58   // Calls above, giving default value of "serialized_null" to the
    57   // Calls above, giving default value of "serialized_null" to the
    59   // "obj_decode_offset" argument.  (We don't use a default argument to
    58   // "obj_decode_offset" argument.  (We don't use a default argument to
    60   // avoid a .hpp-.hpp dependency.)
    59   // avoid a .hpp-.hpp dependency.)
    61   ScopeDesc(const nmethod* code, int decode_offset);
    60   ScopeDesc(const nmethod* code, int decode_offset, bool reexecute);
    62 
    61 
    63   // JVM state
    62   // JVM state
    64   methodHandle method()   const { return _method; }
    63   methodHandle method()   const { return _method; }
    65   int          bci()      const { return _bci;    }
    64   int          bci()      const { return _bci;    }
    66   bool should_reexecute() const { return _reexecute; }
    65   bool should_reexecute() const { return _reexecute; }