IKVM11  11
Java SE 11 Virtual Machine for .NET
Loading...
Searching...
No Matches
IKVM.Attributes.LineNumberTableAttribute Class Referencesealed
Inheritance diagram for IKVM.Attributes.LineNumberTableAttribute:

Classes

class  LineNumberWriter
 

Public Member Functions

 LineNumberTableAttribute (ushort lineno)
 
 LineNumberTableAttribute (byte[] table)
 
int GetLineNumber (int ilOffset)
 

Detailed Description

Definition at line 30 of file LineNumberTableAttribute.cs.

Constructor & Destructor Documentation

◆ LineNumberTableAttribute() [1/2]

IKVM.Attributes.LineNumberTableAttribute.LineNumberTableAttribute ( ushort lineno)

Definition at line 35 of file LineNumberTableAttribute.cs.

36 {
37 LineNumberWriter w = new LineNumberWriter(1);
38 w.AddMapping(0, lineno);
39 table = w.ToArray();
40 }

◆ LineNumberTableAttribute() [2/2]

IKVM.Attributes.LineNumberTableAttribute.LineNumberTableAttribute ( byte[] table)

Definition at line 42 of file LineNumberTableAttribute.cs.

43 {
44 this.table = table;
45 }

Member Function Documentation

◆ GetLineNumber()

int IKVM.Attributes.LineNumberTableAttribute.GetLineNumber ( int ilOffset)

Definition at line 211 of file LineNumberTableAttribute.cs.

212 {
213 int i = 0;
214 int prevILOffset = 0;
215 int prevLineNum = ReadPackedInteger(ref i) + (64 + 50);
216 int line;
217 if(prevLineNum > 0)
218 {
219 line = prevLineNum;
220 }
221 else
222 {
223 prevLineNum = 4 * -prevLineNum;
224 line = -1;
225 }
226 while(i < table.Length)
227 {
228 byte lead = table[i++];
229 int deltaPC = lead & 31;
230 int deltaLineNo = (lead >> 5) - 2;
231 if(deltaPC == 31)
232 {
233 deltaPC = ReadPackedInteger(ref i) + (64 + 31);
234 }
235 if(deltaLineNo == 5)
236 {
237 deltaLineNo = ReadPackedInteger(ref i);
238 }
239 int currILOffset = prevILOffset + deltaPC;
240 if(currILOffset > ilOffset)
241 {
242 return line;
243 }
244 line = prevLineNum + deltaLineNo;
245 prevILOffset = currILOffset;
246 prevLineNum = line;
247 }
248 return line;
249 }

The documentation for this class was generated from the following file: