< prev index next >

src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/LineNumberTable.java

Print this page

        

@@ -20,13 +20,32 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 package jdk.vm.ci.meta;
 
-public interface LineNumberTable {
+public class LineNumberTable {
 
-    int[] getLineNumberEntries();
+    private final int[] lineNumbers;
+    private final int[] bci;
 
-    int[] getBciEntries();
+    public LineNumberTable(int[] lineNumbers, int[] bci) {
+        this.lineNumbers = lineNumbers;
+        this.bci = bci;
+    }
 
-    int getLineNumber(int bci);
+    public int[] getLineNumberEntries() {
+        return lineNumbers;
+    }
+
+    public int[] getBciEntries() {
+        return bci;
+    }
+
+    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];
+            }
+        }
+        return lineNumbers[lineNumbers.length - 1];
+    }
 }
< prev index next >