src/os/solaris/dtrace/libjvm_db.c

changeset 1934
e9ff18c4ace7
parent 1907
c18cbe5936b8
parent 1918
1a5913bf5e19
child 2103
3e8fbc61cee8
     1.1 --- a/src/os/solaris/dtrace/libjvm_db.c	Tue Jun 01 11:48:33 2010 -0700
     1.2 +++ b/src/os/solaris/dtrace/libjvm_db.c	Wed Jun 02 22:45:42 2010 -0700
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. 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 @@ -130,7 +130,7 @@
    1.11    int32_t  scopes_data_beg;     /* _scopes_data_offset */
    1.12    int32_t  scopes_data_end;
    1.13    int32_t  oops_beg;            /* _oops_offset */
    1.14 -  int32_t  oops_len;            /* _oops_length */
    1.15 +  int32_t  oops_end;
    1.16    int32_t  scopes_pcs_beg;      /* _scopes_pcs_offset */
    1.17    int32_t  scopes_pcs_end;
    1.18  
    1.19 @@ -597,9 +597,9 @@
    1.20    CHECK_FAIL(err);
    1.21  
    1.22    /* Oops */
    1.23 -  err = ps_pread(J->P, nm + OFFSET_CodeBlob_oops_offset, &N->oops_beg, SZ32);
    1.24 +  err = ps_pread(J->P, nm + OFFSET_nmethod_oops_offset, &N->oops_beg, SZ32);
    1.25    CHECK_FAIL(err);
    1.26 -  err = ps_pread(J->P, nm + OFFSET_CodeBlob_oops_length, &N->oops_len, SZ32);
    1.27 +  err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_offset, &N->oops_end, SZ32);
    1.28    CHECK_FAIL(err);
    1.29  
    1.30    /* scopes_pcs */
    1.31 @@ -624,8 +624,8 @@
    1.32        fprintf(stderr, "\t nmethod_info: orig_pc_offset: %#x \n",
    1.33                         N->orig_pc_offset);
    1.34  
    1.35 -      fprintf(stderr, "\t nmethod_info: oops_beg: %#x, oops_len: %#x\n",
    1.36 -                       N->oops_beg, N->oops_len);
    1.37 +      fprintf(stderr, "\t nmethod_info: oops_beg: %#x, oops_end: %#x\n",
    1.38 +                       N->oops_beg, N->oops_end);
    1.39  
    1.40        fprintf(stderr, "\t nmethod_info: scopes_data_beg: %#x, scopes_data_end: %#x\n",
    1.41                         N->scopes_data_beg, N->scopes_data_end);
    1.42 @@ -959,8 +959,8 @@
    1.43      err = scope_desc_at(N, decode_offset, vf);
    1.44      CHECK_FAIL(err);
    1.45  
    1.46 -    if (vf->methodIdx > N->oops_len) {
    1.47 -      fprintf(stderr, "\t scopeDesc_chain: (methodIdx > oops_len) !\n");
    1.48 +    if (vf->methodIdx > ((N->oops_end - N->oops_beg) / POINTER_SIZE)) {
    1.49 +      fprintf(stderr, "\t scopeDesc_chain: (methodIdx > oops length) !\n");
    1.50        return -1;
    1.51      }
    1.52      err = read_pointer(N->J, N->nm + N->oops_beg + (vf->methodIdx-1)*POINTER_SIZE,

mercurial