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

Public Member Functions

 LineNumberWriter (int estimatedCount)
 
void AddMapping (int ilOffset, int linenumber)
 
byte[] ToArray ()
 

Properties

int Count [get]
 
int LineNo [get]
 

Detailed Description

Definition at line 47 of file LineNumberTableAttribute.cs.

Constructor & Destructor Documentation

◆ LineNumberWriter()

IKVM.Attributes.LineNumberTableAttribute.LineNumberWriter.LineNumberWriter ( int estimatedCount)

Definition at line 54 of file LineNumberTableAttribute.cs.

55 {
56 stream = new System.IO.MemoryStream(estimatedCount * 2);
57 }

Member Function Documentation

◆ AddMapping()

void IKVM.Attributes.LineNumberTableAttribute.LineNumberWriter.AddMapping ( int ilOffset,
int linenumber )

Definition at line 59 of file LineNumberTableAttribute.cs.

60 {
61 if(count == 0)
62 {
63 if(ilOffset == 0 && linenumber != 0)
64 {
65 prevLineNum = linenumber;
66 count++;
67 WritePackedInteger(linenumber - (64 + 50));
68 return;
69 }
70 else
71 {
72 prevLineNum = linenumber & ~3;
73 WritePackedInteger(((-prevLineNum / 4) - (64 + 50)));
74 }
75 }
76 bool pc_overflow;
77 bool lineno_overflow;
78 byte lead;
79 int deltaPC = ilOffset - prevILOffset;
80 if(deltaPC >= 0 && deltaPC < 31)
81 {
82 lead = (byte)deltaPC;
83 pc_overflow = false;
84 }
85 else
86 {
87 lead = (byte)31;
88 pc_overflow = true;
89 }
90 int deltaLineNo = linenumber - prevLineNum;
91 const int bias = 2;
92 if(deltaLineNo >= -bias && deltaLineNo < 7 - bias)
93 {
94 lead |= (byte)((deltaLineNo + bias) << 5);
95 lineno_overflow = false;
96 }
97 else
98 {
99 lead |= (byte)(7 << 5);
100 lineno_overflow = true;
101 }
102 stream.WriteByte(lead);
103 if(pc_overflow)
104 {
105 WritePackedInteger(deltaPC - (64 + 31));
106 }
107 if(lineno_overflow)
108 {
109 WritePackedInteger(deltaLineNo);
110 }
111 prevILOffset = ilOffset;
112 prevLineNum = linenumber;
113 count++;
114 }

◆ ToArray()

byte[] IKVM.Attributes.LineNumberTableAttribute.LineNumberWriter.ToArray ( )

Definition at line 132 of file LineNumberTableAttribute.cs.

133 {
134 return stream.ToArray();
135 }

Property Documentation

◆ Count

int IKVM.Attributes.LineNumberTableAttribute.LineNumberWriter.Count
get

Definition at line 116 of file LineNumberTableAttribute.cs.

117 {
118 get
119 {
120 return count;
121 }
122 }

◆ LineNo

int IKVM.Attributes.LineNumberTableAttribute.LineNumberWriter.LineNo
get

Definition at line 124 of file LineNumberTableAttribute.cs.

125 {
126 get
127 {
128 return prevLineNum;
129 }
130 }

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