diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs | 222 |
1 files changed, 115 insertions, 107 deletions
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs index 5c3629c..3bcc824 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs | |||
@@ -26,9 +26,8 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using System; | 28 | using System; |
29 | using System.IO; | ||
30 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
31 | using System.Text; | 30 | using System.IO; |
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | 31 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; |
33 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; | 32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; |
34 | 33 | ||
@@ -56,7 +55,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
56 | 55 | ||
57 | public ClassRecord() | 56 | public ClassRecord() |
58 | { | 57 | { |
59 | |||
60 | } | 58 | } |
61 | 59 | ||
62 | public ClassInstance CreateNewInstance() | 60 | public ClassInstance CreateNewInstance() |
@@ -72,7 +70,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
72 | { | 70 | { |
73 | Console.WriteLine("loading script " + fileName); | 71 | Console.WriteLine("loading script " + fileName); |
74 | FileStream fs = File.OpenRead(fileName); | 72 | FileStream fs = File.OpenRead(fileName); |
75 | this.LoadClassFromBytes(ReadFully(fs)); | 73 | LoadClassFromBytes(ReadFully(fs)); |
76 | fs.Close(); | 74 | fs.Close(); |
77 | } | 75 | } |
78 | 76 | ||
@@ -80,9 +78,9 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
80 | { | 78 | { |
81 | int i = 0; | 79 | int i = 0; |
82 | i += 4; | 80 | i += 4; |
83 | m_minorVersion = (ushort)((data[i++] << 8) + data[i++]); | 81 | m_minorVersion = (ushort) ((data[i++] << 8) + data[i++]); |
84 | m_majorVersion = (ushort)((data[i++] << 8) + data[i++]); | 82 | m_majorVersion = (ushort) ((data[i++] << 8) + data[i++]); |
85 | m_constantPoolCount = (ushort)((data[i++] << 8) + data[i++]); | 83 | m_constantPoolCount = (ushort) ((data[i++] << 8) + data[i++]); |
86 | Console.WriteLine("there should be " + m_constantPoolCount + " items in the pool"); | 84 | Console.WriteLine("there should be " + m_constantPoolCount + " items in the pool"); |
87 | for (int count = 0; count < (m_constantPoolCount - 1); count++) | 85 | for (int count = 0; count < (m_constantPoolCount - 1); count++) |
88 | { | 86 | { |
@@ -92,13 +90,13 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
92 | //Console.WriteLine("start position is: " + i); | 90 | //Console.WriteLine("start position is: " + i); |
93 | switch (pooltype) | 91 | switch (pooltype) |
94 | { | 92 | { |
95 | case 1: //Utf8 | 93 | case 1: //Utf8 |
96 | ushort uLength = (ushort)((data[i++] << 8) + data[i++]); | 94 | ushort uLength = (ushort) ((data[i++] << 8) + data[i++]); |
97 | 95 | ||
98 | // Console.WriteLine("new utf8 type, length is " + uLength); | 96 | // Console.WriteLine("new utf8 type, length is " + uLength); |
99 | PoolUtf8 utf8 = new PoolUtf8(); | 97 | PoolUtf8 utf8 = new PoolUtf8(); |
100 | utf8.readValue(data, ref i, uLength); | 98 | utf8.readValue(data, ref i, uLength); |
101 | this.m_constantsPool.Add(utf8); | 99 | m_constantsPool.Add(utf8); |
102 | break; | 100 | break; |
103 | case 3: //Int | 101 | case 3: //Int |
104 | break; | 102 | break; |
@@ -107,53 +105,53 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
107 | case 7: //Class | 105 | case 7: //Class |
108 | PoolClass pClass = new PoolClass(this); | 106 | PoolClass pClass = new PoolClass(this); |
109 | pClass.readValue(data, ref i); | 107 | pClass.readValue(data, ref i); |
110 | this.m_constantsPool.Add(pClass); | 108 | m_constantsPool.Add(pClass); |
111 | break; | 109 | break; |
112 | case 9: //FieldRef | 110 | case 9: //FieldRef |
113 | PoolFieldRef pField = new PoolFieldRef(this); | 111 | PoolFieldRef pField = new PoolFieldRef(this); |
114 | pField.readValue(data, ref i); | 112 | pField.readValue(data, ref i); |
115 | this.m_constantsPool.Add(pField); | 113 | m_constantsPool.Add(pField); |
116 | break; | 114 | break; |
117 | case 10: //Method | 115 | case 10: //Method |
118 | PoolMethodRef pMeth = new PoolMethodRef(this); | 116 | PoolMethodRef pMeth = new PoolMethodRef(this); |
119 | pMeth.readValue(data, ref i); | 117 | pMeth.readValue(data, ref i); |
120 | this.m_constantsPool.Add(pMeth); | 118 | m_constantsPool.Add(pMeth); |
121 | break; | 119 | break; |
122 | case 12: //NamedType | 120 | case 12: //NamedType |
123 | PoolNamedType pNamed = new PoolNamedType(this); | 121 | PoolNamedType pNamed = new PoolNamedType(this); |
124 | pNamed.readValue(data, ref i); | 122 | pNamed.readValue(data, ref i); |
125 | this.m_constantsPool.Add(pNamed); | 123 | m_constantsPool.Add(pNamed); |
126 | break; | 124 | break; |
127 | } | 125 | } |
128 | } | 126 | } |
129 | 127 | ||
130 | m_accessFlags = (ushort)((data[i++] << 8) + data[i++]); | 128 | m_accessFlags = (ushort) ((data[i++] << 8) + data[i++]); |
131 | m_thisClass = (ushort)((data[i++] << 8) + data[i++]); | 129 | m_thisClass = (ushort) ((data[i++] << 8) + data[i++]); |
132 | m_supperClass = (ushort)((data[i++] << 8) + data[i++]); | 130 | m_supperClass = (ushort) ((data[i++] << 8) + data[i++]); |
133 | 131 | ||
134 | if (this.m_constantsPool[this.m_thisClass - 1] is PoolClass) | 132 | if (m_constantsPool[m_thisClass - 1] is PoolClass) |
135 | { | 133 | { |
136 | this.MClass = ((PoolClass)this.m_constantsPool[this.m_thisClass - 1]); | 134 | MClass = ((PoolClass) m_constantsPool[m_thisClass - 1]); |
137 | } | 135 | } |
138 | 136 | ||
139 | m_interfaceCount = (ushort)((data[i++] << 8) + data[i++]); | 137 | m_interfaceCount = (ushort) ((data[i++] << 8) + data[i++]); |
140 | //should now read in the info for each interface | 138 | //should now read in the info for each interface |
141 | 139 | ||
142 | m_fieldCount = (ushort)((data[i++] << 8) + data[i++]); | 140 | m_fieldCount = (ushort) ((data[i++] << 8) + data[i++]); |
143 | //should now read in the info for each field | 141 | //should now read in the info for each field |
144 | for (int count = 0; count < m_fieldCount; count++) | 142 | for (int count = 0; count < m_fieldCount; count++) |
145 | { | 143 | { |
146 | FieldInfo fieldInf = new FieldInfo(this); | 144 | FieldInfo fieldInf = new FieldInfo(this); |
147 | fieldInf.ReadData(data, ref i); | 145 | fieldInf.ReadData(data, ref i); |
148 | this.m_fieldList.Add(fieldInf); | 146 | m_fieldList.Add(fieldInf); |
149 | } | 147 | } |
150 | 148 | ||
151 | m_methodCount = (ushort)((data[i++] << 8) + data[i++]); | 149 | m_methodCount = (ushort) ((data[i++] << 8) + data[i++]); |
152 | for (int count = 0; count < m_methodCount; count++) | 150 | for (int count = 0; count < m_methodCount; count++) |
153 | { | 151 | { |
154 | MethodInfo methInf = new MethodInfo(this); | 152 | MethodInfo methInf = new MethodInfo(this); |
155 | methInf.ReadData(data, ref i); | 153 | methInf.ReadData(data, ref i); |
156 | this.m_methodsList.Add(methInf); | 154 | m_methodsList.Add(methInf); |
157 | } | 155 | } |
158 | } | 156 | } |
159 | 157 | ||
@@ -161,7 +159,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
161 | { | 159 | { |
162 | for (int count = 0; count < m_methodCount; count++) | 160 | for (int count = 0; count < m_methodCount; count++) |
163 | { | 161 | { |
164 | this.m_methodsList[count].AddMethodCode(memory); | 162 | m_methodsList[count].AddMethodCode(memory); |
165 | } | 163 | } |
166 | } | 164 | } |
167 | 165 | ||
@@ -169,12 +167,12 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
169 | { | 167 | { |
170 | for (int count = 0; count < m_methodCount; count++) | 168 | for (int count = 0; count < m_methodCount; count++) |
171 | { | 169 | { |
172 | if (this.m_constantsPool[this.m_methodsList[count].NameIndex - 1] is PoolUtf8) | 170 | if (m_constantsPool[m_methodsList[count].NameIndex - 1] is PoolUtf8) |
173 | { | 171 | { |
174 | if (((PoolUtf8)this.m_constantsPool[this.m_methodsList[count].NameIndex - 1]).Value == methodName) | 172 | if (((PoolUtf8) m_constantsPool[m_methodsList[count].NameIndex - 1]).Value == methodName) |
175 | { | 173 | { |
176 | //Console.WriteLine("found method: " + ((PoolUtf8)this._constantsPool[this._methodsList[count].NameIndex - 1]).Value); | 174 | //Console.WriteLine("found method: " + ((PoolUtf8)this._constantsPool[this._methodsList[count].NameIndex - 1]).Value); |
177 | thread.SetPC(this.m_methodsList[count].CodePointer); | 175 | thread.SetPC(m_methodsList[count].CodePointer); |
178 | return true; | 176 | return true; |
179 | } | 177 | } |
180 | } | 178 | } |
@@ -191,7 +189,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
191 | 189 | ||
192 | for (int i = 0; i < m_constantsPool.Count; i++) | 190 | for (int i = 0; i < m_constantsPool.Count; i++) |
193 | { | 191 | { |
194 | this.m_constantsPool[i].Print(); | 192 | m_constantsPool[i].Print(); |
195 | } | 193 | } |
196 | 194 | ||
197 | Console.WriteLine("Access flags: " + m_accessFlags); | 195 | Console.WriteLine("Access flags: " + m_accessFlags); |
@@ -201,16 +199,16 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
201 | for (int count = 0; count < m_fieldCount; count++) | 199 | for (int count = 0; count < m_fieldCount; count++) |
202 | { | 200 | { |
203 | Console.WriteLine(); | 201 | Console.WriteLine(); |
204 | this.m_fieldList[count].Print(); | 202 | m_fieldList[count].Print(); |
205 | } | 203 | } |
206 | 204 | ||
207 | for (int count = 0; count < m_methodCount; count++) | 205 | for (int count = 0; count < m_methodCount; count++) |
208 | { | 206 | { |
209 | Console.WriteLine(); | 207 | Console.WriteLine(); |
210 | this.m_methodsList[count].Print(); | 208 | m_methodsList[count].Print(); |
211 | } | 209 | } |
212 | 210 | ||
213 | Console.WriteLine("class name is " + this.MClass.Name.Value); | 211 | Console.WriteLine("class name is " + MClass.Name.Value); |
214 | } | 212 | } |
215 | 213 | ||
216 | public static byte[] ReadFully(Stream stream) | 214 | public static byte[] ReadFully(Stream stream) |
@@ -229,11 +227,11 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
229 | } | 227 | } |
230 | 228 | ||
231 | #region nested classes | 229 | #region nested classes |
230 | |||
232 | public class PoolItem | 231 | public class PoolItem |
233 | { | 232 | { |
234 | public virtual void Print() | 233 | public virtual void Print() |
235 | { | 234 | { |
236 | |||
237 | } | 235 | } |
238 | } | 236 | } |
239 | 237 | ||
@@ -245,21 +243,21 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
245 | { | 243 | { |
246 | for (int i = 0; i < length; i++) | 244 | for (int i = 0; i < length; i++) |
247 | { | 245 | { |
248 | int a = (int)data[pointer++]; | 246 | int a = (int) data[pointer++]; |
249 | if ((a & 0x80) == 0) | 247 | if ((a & 0x80) == 0) |
250 | { | 248 | { |
251 | Value = Value + (char)a; | 249 | Value = Value + (char) a; |
252 | } | 250 | } |
253 | else if ((a & 0x20) == 0) | 251 | else if ((a & 0x20) == 0) |
254 | { | 252 | { |
255 | int b = (int)data[pointer++]; | 253 | int b = (int) data[pointer++]; |
256 | Value = Value + (char)(((a & 0x1f) << 6) + (b & 0x3f)); | 254 | Value = Value + (char) (((a & 0x1f) << 6) + (b & 0x3f)); |
257 | } | 255 | } |
258 | else | 256 | else |
259 | { | 257 | { |
260 | int b = (int)data[pointer++]; | 258 | int b = (int) data[pointer++]; |
261 | int c = (int)data[pointer++]; | 259 | int c = (int) data[pointer++]; |
262 | Value = Value + (char)(((a & 0xf) << 12) + ((b & 0x3f) << 6) + (c & 0x3f)); | 260 | Value = Value + (char) (((a & 0xf) << 12) + ((b & 0x3f) << 6) + (c & 0x3f)); |
263 | } | 261 | } |
264 | } | 262 | } |
265 | } | 263 | } |
@@ -272,7 +270,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
272 | 270 | ||
273 | private class PoolInt : PoolItem | 271 | private class PoolInt : PoolItem |
274 | { | 272 | { |
275 | |||
276 | } | 273 | } |
277 | 274 | ||
278 | public class PoolClass : PoolItem | 275 | public class PoolClass : PoolItem |
@@ -289,15 +286,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
289 | 286 | ||
290 | public void readValue(byte[] data, ref int pointer) | 287 | public void readValue(byte[] data, ref int pointer) |
291 | { | 288 | { |
292 | namePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 289 | namePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
293 | } | 290 | } |
294 | 291 | ||
295 | public override void Print() | 292 | public override void Print() |
296 | { | 293 | { |
297 | this.Name = ((PoolUtf8)this.parent.m_constantsPool[namePointer - 1]); | 294 | Name = ((PoolUtf8) parent.m_constantsPool[namePointer - 1]); |
298 | Console.Write("Class type: " + namePointer); | 295 | Console.Write("Class type: " + namePointer); |
299 | Console.WriteLine(" // " + ((PoolUtf8)this.parent.m_constantsPool[namePointer - 1]).Value); | 296 | Console.WriteLine(" // " + ((PoolUtf8) parent.m_constantsPool[namePointer - 1]).Value); |
300 | |||
301 | } | 297 | } |
302 | } | 298 | } |
303 | 299 | ||
@@ -316,14 +312,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
316 | 312 | ||
317 | public void readValue(byte[] data, ref int pointer) | 313 | public void readValue(byte[] data, ref int pointer) |
318 | { | 314 | { |
319 | classPointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 315 | classPointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
320 | nameTypePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 316 | nameTypePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
321 | } | 317 | } |
322 | 318 | ||
323 | public override void Print() | 319 | public override void Print() |
324 | { | 320 | { |
325 | this.mNameType = ((PoolNamedType)this.parent.m_constantsPool[nameTypePointer - 1]); | 321 | mNameType = ((PoolNamedType) parent.m_constantsPool[nameTypePointer - 1]); |
326 | this.mClass = ((PoolClass)this.parent.m_constantsPool[classPointer - 1]); | 322 | mClass = ((PoolClass) parent.m_constantsPool[classPointer - 1]); |
327 | Console.WriteLine("FieldRef type: " + classPointer + " , " + nameTypePointer); | 323 | Console.WriteLine("FieldRef type: " + classPointer + " , " + nameTypePointer); |
328 | } | 324 | } |
329 | } | 325 | } |
@@ -343,14 +339,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
343 | 339 | ||
344 | public void readValue(byte[] data, ref int pointer) | 340 | public void readValue(byte[] data, ref int pointer) |
345 | { | 341 | { |
346 | classPointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 342 | classPointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
347 | nameTypePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 343 | nameTypePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
348 | } | 344 | } |
349 | 345 | ||
350 | public override void Print() | 346 | public override void Print() |
351 | { | 347 | { |
352 | this.mNameType = ((PoolNamedType)this.parent.m_constantsPool[nameTypePointer - 1]); | 348 | mNameType = ((PoolNamedType) parent.m_constantsPool[nameTypePointer - 1]); |
353 | this.mClass = ((PoolClass)this.parent.m_constantsPool[classPointer - 1]); | 349 | mClass = ((PoolClass) parent.m_constantsPool[classPointer - 1]); |
354 | Console.WriteLine("MethodRef type: " + classPointer + " , " + nameTypePointer); | 350 | Console.WriteLine("MethodRef type: " + classPointer + " , " + nameTypePointer); |
355 | } | 351 | } |
356 | } | 352 | } |
@@ -370,16 +366,16 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
370 | 366 | ||
371 | public void readValue(byte[] data, ref int pointer) | 367 | public void readValue(byte[] data, ref int pointer) |
372 | { | 368 | { |
373 | namePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 369 | namePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
374 | typePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 370 | typePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
375 | } | 371 | } |
376 | 372 | ||
377 | public override void Print() | 373 | public override void Print() |
378 | { | 374 | { |
379 | Name = ((PoolUtf8)this.parent.m_constantsPool[namePointer - 1]); | 375 | Name = ((PoolUtf8) parent.m_constantsPool[namePointer - 1]); |
380 | Type = ((PoolUtf8)this.parent.m_constantsPool[typePointer - 1]); | 376 | Type = ((PoolUtf8) parent.m_constantsPool[typePointer - 1]); |
381 | Console.Write("Named type: " + namePointer + " , " + typePointer); | 377 | Console.Write("Named type: " + namePointer + " , " + typePointer); |
382 | Console.WriteLine(" // " + ((PoolUtf8)this.parent.m_constantsPool[namePointer - 1]).Value); | 378 | Console.WriteLine(" // " + ((PoolUtf8) parent.m_constantsPool[namePointer - 1]).Value); |
383 | } | 379 | } |
384 | } | 380 | } |
385 | 381 | ||
@@ -402,23 +398,23 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
402 | 398 | ||
403 | public void AddMethodCode(MethodMemory memory) | 399 | public void AddMethodCode(MethodMemory memory) |
404 | { | 400 | { |
405 | Array.Copy(this.Attributes[0].Code, 0, memory.MethodBuffer, memory.NextMethodPC, this.Attributes[0].Code.Length); | 401 | Array.Copy(Attributes[0].Code, 0, memory.MethodBuffer, memory.NextMethodPC, Attributes[0].Code.Length); |
406 | memory.Methodcount++; | 402 | memory.Methodcount++; |
407 | this.CodePointer = memory.NextMethodPC; | 403 | CodePointer = memory.NextMethodPC; |
408 | memory.NextMethodPC += this.Attributes[0].Code.Length; | 404 | memory.NextMethodPC += Attributes[0].Code.Length; |
409 | } | 405 | } |
410 | 406 | ||
411 | public void ReadData(byte[] data, ref int pointer) | 407 | public void ReadData(byte[] data, ref int pointer) |
412 | { | 408 | { |
413 | AccessFlags = (ushort)((data[pointer++] << 8) + data[pointer++]); | 409 | AccessFlags = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
414 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 410 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
415 | DescriptorIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 411 | DescriptorIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
416 | AttributeCount = (ushort)((data[pointer++] << 8) + data[pointer++]); | 412 | AttributeCount = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
417 | for (int i = 0; i < AttributeCount; i++) | 413 | for (int i = 0; i < AttributeCount; i++) |
418 | { | 414 | { |
419 | MethodAttribute attri = new MethodAttribute(this.parent); | 415 | MethodAttribute attri = new MethodAttribute(parent); |
420 | attri.ReadData(data, ref pointer); | 416 | attri.ReadData(data, ref pointer); |
421 | this.Attributes.Add(attri); | 417 | Attributes.Add(attri); |
422 | } | 418 | } |
423 | } | 419 | } |
424 | 420 | ||
@@ -426,12 +422,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
426 | { | 422 | { |
427 | Console.WriteLine("Method Info Struct: "); | 423 | Console.WriteLine("Method Info Struct: "); |
428 | Console.WriteLine("AccessFlags: " + AccessFlags); | 424 | Console.WriteLine("AccessFlags: " + AccessFlags); |
429 | Console.WriteLine("NameIndex: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 425 | Console.WriteLine("NameIndex: " + NameIndex + " // " + |
430 | Console.WriteLine("DescriptorIndex: " + DescriptorIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[DescriptorIndex - 1]).Value); | 426 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); |
427 | Console.WriteLine("DescriptorIndex: " + DescriptorIndex + " // " + | ||
428 | ((PoolUtf8) parent.m_constantsPool[DescriptorIndex - 1]).Value); | ||
431 | Console.WriteLine("Attribute Count:" + AttributeCount); | 429 | Console.WriteLine("Attribute Count:" + AttributeCount); |
432 | for (int i = 0; i < AttributeCount; i++) | 430 | for (int i = 0; i < AttributeCount; i++) |
433 | { | 431 | { |
434 | this.Attributes[i].Print(); | 432 | Attributes[i].Print(); |
435 | } | 433 | } |
436 | } | 434 | } |
437 | 435 | ||
@@ -457,30 +455,35 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
457 | 455 | ||
458 | public void ReadData(byte[] data, ref int pointer) | 456 | public void ReadData(byte[] data, ref int pointer) |
459 | { | 457 | { |
460 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 458 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
461 | Length = (Int32)((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | 459 | Length = |
462 | MaxStack = (ushort)((data[pointer++] << 8) + data[pointer++]); | 460 | (Int32) |
463 | MaxLocals = (ushort)((data[pointer++] << 8) + data[pointer++]); | 461 | ((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); |
464 | CodeLength = (Int32)((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | 462 | MaxStack = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
463 | MaxLocals = (ushort) ((data[pointer++] << 8) + data[pointer++]); | ||
464 | CodeLength = | ||
465 | (Int32) | ||
466 | ((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | ||
465 | Code = new byte[CodeLength]; | 467 | Code = new byte[CodeLength]; |
466 | for (int i = 0; i < CodeLength; i++) | 468 | for (int i = 0; i < CodeLength; i++) |
467 | { | 469 | { |
468 | Code[i] = data[pointer++]; | 470 | Code[i] = data[pointer++]; |
469 | } | 471 | } |
470 | ExceptionTableLength = (ushort)((data[pointer++] << 8) + data[pointer++]); | 472 | ExceptionTableLength = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
471 | SubAttributeCount = (ushort)((data[pointer++] << 8) + data[pointer++]); | 473 | SubAttributeCount = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
472 | for (int i = 0; i < SubAttributeCount; i++) | 474 | for (int i = 0; i < SubAttributeCount; i++) |
473 | { | 475 | { |
474 | SubAttribute subAttri = new SubAttribute(this.parent); | 476 | SubAttribute subAttri = new SubAttribute(parent); |
475 | subAttri.ReadData(data, ref pointer); | 477 | subAttri.ReadData(data, ref pointer); |
476 | this.SubAttributes.Add(subAttri); | 478 | SubAttributes.Add(subAttri); |
477 | } | 479 | } |
478 | } | 480 | } |
479 | 481 | ||
480 | public void Print() | 482 | public void Print() |
481 | { | 483 | { |
482 | Console.WriteLine("Method Attribute: "); | 484 | Console.WriteLine("Method Attribute: "); |
483 | Console.WriteLine("Name Index: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 485 | Console.WriteLine("Name Index: " + NameIndex + " // " + |
486 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); | ||
484 | Console.WriteLine("Length: " + Length); | 487 | Console.WriteLine("Length: " + Length); |
485 | Console.WriteLine("MaxStack: " + MaxStack); | 488 | Console.WriteLine("MaxStack: " + MaxStack); |
486 | Console.WriteLine("MaxLocals: " + MaxLocals); | 489 | Console.WriteLine("MaxLocals: " + MaxLocals); |
@@ -492,7 +495,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
492 | Console.WriteLine("SubAttributes: " + SubAttributeCount); | 495 | Console.WriteLine("SubAttributes: " + SubAttributeCount); |
493 | for (int i = 0; i < SubAttributeCount; i++) | 496 | for (int i = 0; i < SubAttributeCount; i++) |
494 | { | 497 | { |
495 | this.SubAttributes[i].Print(); | 498 | SubAttributes[i].Print(); |
496 | } | 499 | } |
497 | } | 500 | } |
498 | 501 | ||
@@ -511,8 +514,11 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
511 | 514 | ||
512 | public void ReadData(byte[] data, ref int pointer) | 515 | public void ReadData(byte[] data, ref int pointer) |
513 | { | 516 | { |
514 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 517 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
515 | Length = (Int32)((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | 518 | Length = |
519 | (Int32) | ||
520 | ((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + | ||
521 | data[pointer++]); | ||
516 | Data = new byte[Length]; | 522 | Data = new byte[Length]; |
517 | for (int i = 0; i < Length; i++) | 523 | for (int i = 0; i < Length; i++) |
518 | { | 524 | { |
@@ -522,18 +528,17 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
522 | 528 | ||
523 | public void Print() | 529 | public void Print() |
524 | { | 530 | { |
525 | Console.WriteLine("SubAttribute: NameIndex: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 531 | Console.WriteLine("SubAttribute: NameIndex: " + NameIndex + " // " + |
532 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); | ||
526 | } | 533 | } |
527 | |||
528 | } | 534 | } |
529 | } | 535 | } |
530 | |||
531 | } | 536 | } |
537 | |||
532 | private class InterfaceInfo | 538 | private class InterfaceInfo |
533 | { | 539 | { |
534 | public void ReadData(byte[] data, ref int i) | 540 | public void ReadData(byte[] data, ref int i) |
535 | { | 541 | { |
536 | |||
537 | } | 542 | } |
538 | } | 543 | } |
539 | 544 | ||
@@ -554,15 +559,15 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
554 | 559 | ||
555 | public void ReadData(byte[] data, ref int pointer) | 560 | public void ReadData(byte[] data, ref int pointer) |
556 | { | 561 | { |
557 | AccessFlags = (ushort)((data[pointer++] << 8) + data[pointer++]); | 562 | AccessFlags = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
558 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 563 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
559 | DescriptorIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 564 | DescriptorIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
560 | AttributeCount = (ushort)((data[pointer++] << 8) + data[pointer++]); | 565 | AttributeCount = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
561 | for (int i = 0; i < AttributeCount; i++) | 566 | for (int i = 0; i < AttributeCount; i++) |
562 | { | 567 | { |
563 | FieldAttribute attri = new FieldAttribute(this.parent); | 568 | FieldAttribute attri = new FieldAttribute(parent); |
564 | attri.ReadData(data, ref pointer); | 569 | attri.ReadData(data, ref pointer); |
565 | this.Attributes.Add(attri); | 570 | Attributes.Add(attri); |
566 | } | 571 | } |
567 | } | 572 | } |
568 | 573 | ||
@@ -570,29 +575,30 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
570 | { | 575 | { |
571 | Console.WriteLine("Field Info Struct: "); | 576 | Console.WriteLine("Field Info Struct: "); |
572 | Console.WriteLine("AccessFlags: " + AccessFlags); | 577 | Console.WriteLine("AccessFlags: " + AccessFlags); |
573 | Console.WriteLine("NameIndex: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 578 | Console.WriteLine("NameIndex: " + NameIndex + " // " + |
574 | Console.WriteLine("DescriptorIndex: " + DescriptorIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[DescriptorIndex - 1]).Value); | 579 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); |
580 | Console.WriteLine("DescriptorIndex: " + DescriptorIndex + " // " + | ||
581 | ((PoolUtf8) parent.m_constantsPool[DescriptorIndex - 1]).Value); | ||
575 | Console.WriteLine("Attribute Count:" + AttributeCount); | 582 | Console.WriteLine("Attribute Count:" + AttributeCount); |
576 | //if static, add to static field list | 583 | //if static, add to static field list |
577 | // if (this.AccessFlags == 9) //public and static | 584 | // if (this.AccessFlags == 9) //public and static |
578 | if ((this.AccessFlags & 0x08) != 0) | 585 | if ((AccessFlags & 0x08) != 0) |
579 | { | 586 | { |
580 | switch (((PoolUtf8)this.parent.m_constantsPool[DescriptorIndex - 1]).Value) | 587 | switch (((PoolUtf8) parent.m_constantsPool[DescriptorIndex - 1]).Value) |
581 | { | 588 | { |
582 | case "I": | 589 | case "I": |
583 | Int newin = new Int(); | 590 | Int newin = new Int(); |
584 | this.parent.StaticFields.Add(((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value, newin); | 591 | parent.StaticFields.Add(((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value, newin); |
585 | break; | 592 | break; |
586 | case "F": | 593 | case "F": |
587 | Float newfl = new Float(); | 594 | Float newfl = new Float(); |
588 | this.parent.StaticFields.Add(((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value, newfl); | 595 | parent.StaticFields.Add(((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value, newfl); |
589 | break; | 596 | break; |
590 | } | 597 | } |
591 | |||
592 | } | 598 | } |
593 | for (int i = 0; i < AttributeCount; i++) | 599 | for (int i = 0; i < AttributeCount; i++) |
594 | { | 600 | { |
595 | this.Attributes[i].Print(); | 601 | Attributes[i].Print(); |
596 | } | 602 | } |
597 | } | 603 | } |
598 | 604 | ||
@@ -611,8 +617,10 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
611 | 617 | ||
612 | public void ReadData(byte[] data, ref int pointer) | 618 | public void ReadData(byte[] data, ref int pointer) |
613 | { | 619 | { |
614 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 620 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
615 | Length = (Int32)((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | 621 | Length = |
622 | (Int32) | ||
623 | ((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | ||
616 | Data = new byte[Length]; | 624 | Data = new byte[Length]; |
617 | for (int i = 0; i < Length; i++) | 625 | for (int i = 0; i < Length; i++) |
618 | { | 626 | { |
@@ -622,7 +630,8 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
622 | 630 | ||
623 | public void Print() | 631 | public void Print() |
624 | { | 632 | { |
625 | Console.WriteLine("FieldAttribute: NameIndex: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 633 | Console.WriteLine("FieldAttribute: NameIndex: " + NameIndex + " // " + |
634 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); | ||
626 | } | 635 | } |
627 | } | 636 | } |
628 | } | 637 | } |
@@ -631,10 +640,9 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
631 | { | 640 | { |
632 | public void ReadData(byte[] data, ref int i) | 641 | public void ReadData(byte[] data, ref int i) |
633 | { | 642 | { |
634 | |||
635 | } | 643 | } |
636 | } | 644 | } |
637 | #endregion | ||
638 | 645 | ||
646 | #endregion | ||
639 | } | 647 | } |
640 | } \ No newline at end of file | 648 | } \ No newline at end of file |