aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs222
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*/
28using System; 28using System;
29using System.IO;
30using System.Collections.Generic; 29using System.Collections.Generic;
31using System.Text; 30using System.IO;
32using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; 31using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types;
33using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; 32using 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