< prev index next >
src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/LineNumberTable.java
Print this page
@@ -20,28 +20,38 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.vm.ci.meta;
+/**
+ * Maps bytecode indexes to source line numbers.
+ *
+ * @see "https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.12"
+ */
public class LineNumberTable {
private final int[] lineNumbers;
private final int[] bci;
+ /**
+ *
+ * @param lineNumbers an array or source line numbers. This array is now owned by this object
+ * and should not be mutated by the caller.
+ * @param bci an array of bytecode indexes the same length at {@code lineNumbers} whose entries
+ * are sorted in ascending order. This array is now owned by this object and must not
+ * be mutated by the caller.
+ */
+ @SuppressFBWarnings(value = "EI_EXPOSE_REP2", justification = "caller transfers ownership of `lineNumbers` and `bcis`")
public LineNumberTable(int[] lineNumbers, int[] bci) {
+ assert bci.length == lineNumbers.length;
this.lineNumbers = lineNumbers;
this.bci = bci;
}
- public int[] getLineNumberEntries() {
- return lineNumbers;
- }
-
- public int[] getBciEntries() {
- return bci;
- }
-
+ /**
+ * Gets a source line number for {@code atBci}.
+ */
public int getLineNumber(int atBci) {
for (int i = 0; i < this.bci.length - 1; i++) {
if (this.bci[i] <= atBci && atBci < this.bci[i + 1]) {
return lineNumbers[i];
}
< prev index next >