< prev index next >
src/java.base/share/classes/java/lang/StackFrameInfo.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 29,55 ****
import java.lang.StackWalker.StackFrame;
import java.lang.invoke.MethodType;
class StackFrameInfo implements StackFrame {
! private final byte RETAIN_CLASS_REF = 0x01;
private final static JavaLangInvokeAccess JLIA =
SharedSecrets.getJavaLangInvokeAccess();
private final byte flags;
! private final Object memberName;
! private final short bci;
private volatile StackTraceElement ste;
/*
! * Create StackFrameInfo for StackFrameTraverser and LiveStackFrameTraverser
! * to use
*/
StackFrameInfo(StackWalker walker) {
this.flags = walker.retainClassRef ? RETAIN_CLASS_REF : 0;
- this.bci = -1;
this.memberName = JLIA.newMemberName();
}
// package-private called by StackStreamFactory to skip
// the capability check
--- 29,57 ----
import java.lang.StackWalker.StackFrame;
import java.lang.invoke.MethodType;
class StackFrameInfo implements StackFrame {
! private final static byte RETAIN_CLASS_REF = 0x01;
private final static JavaLangInvokeAccess JLIA =
SharedSecrets.getJavaLangInvokeAccess();
private final byte flags;
! private final Object memberName; // MemberName initialized by VM
! private short bci; // unsigned 16-bit value set by VM
private volatile StackTraceElement ste;
/*
! * Construct an empty StackFrameInfo object that will be filled by the VM
! * during stack walking.
! *
! * @see StackStreamFactory.AbstractStackWalker#callStackWalk
! * @see StackStreamFactory.AbstractStackWalker#fetchStackFrames
*/
StackFrameInfo(StackWalker walker) {
this.flags = walker.retainClassRef ? RETAIN_CLASS_REF : 0;
this.memberName = JLIA.newMemberName();
}
// package-private called by StackStreamFactory to skip
// the capability check
*** 90,100 ****
public int getByteCodeIndex() {
// bci not available for native methods
if (isNativeMethod())
return -1;
! return bci;
}
@Override
public String getFileName() {
return toStackTraceElement().getFileName();
--- 92,102 ----
public int getByteCodeIndex() {
// bci not available for native methods
if (isNativeMethod())
return -1;
! return Short.toUnsignedInt(bci);
}
@Override
public String getFileName() {
return toStackTraceElement().getFileName();
< prev index next >