summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/bytecode/accessors/InvokeDynamicInfoAccessor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/bytecode/accessors/InvokeDynamicInfoAccessor.java')
-rw-r--r--src/cuchaz/enigma/bytecode/accessors/InvokeDynamicInfoAccessor.java90
1 files changed, 34 insertions, 56 deletions
diff --git a/src/cuchaz/enigma/bytecode/accessors/InvokeDynamicInfoAccessor.java b/src/cuchaz/enigma/bytecode/accessors/InvokeDynamicInfoAccessor.java
index 169306a4..0d780ea6 100644
--- a/src/cuchaz/enigma/bytecode/accessors/InvokeDynamicInfoAccessor.java
+++ b/src/cuchaz/enigma/bytecode/accessors/InvokeDynamicInfoAccessor.java
@@ -12,85 +12,63 @@ package cuchaz.enigma.bytecode.accessors;
12 12
13import java.lang.reflect.Field; 13import java.lang.reflect.Field;
14 14
15public class InvokeDynamicInfoAccessor 15public class InvokeDynamicInfoAccessor {
16{ 16
17 private static Class<?> m_class; 17 private static Class<?> m_class;
18 private static Field m_bootstrapIndex; 18 private static Field m_bootstrapIndex;
19 private static Field m_nameAndTypeIndex; 19 private static Field m_nameAndTypeIndex;
20 20
21 static 21 static {
22 { 22 try {
23 try 23 m_class = Class.forName("javassist.bytecode.InvokeDynamicInfo");
24 { 24 m_bootstrapIndex = m_class.getDeclaredField("bootstrap");
25 m_class = Class.forName( "javassist.bytecode.InvokeDynamicInfo" ); 25 m_bootstrapIndex.setAccessible(true);
26 m_bootstrapIndex = m_class.getDeclaredField( "bootstrap" ); 26 m_nameAndTypeIndex = m_class.getDeclaredField("nameAndType");
27 m_bootstrapIndex.setAccessible( true ); 27 m_nameAndTypeIndex.setAccessible(true);
28 m_nameAndTypeIndex = m_class.getDeclaredField( "nameAndType" ); 28 } catch (Exception ex) {
29 m_nameAndTypeIndex.setAccessible( true ); 29 throw new Error(ex);
30 }
31 catch( Exception ex )
32 {
33 throw new Error( ex );
34 } 30 }
35 } 31 }
36 32
37 public static boolean isType( ConstInfoAccessor accessor ) 33 public static boolean isType(ConstInfoAccessor accessor) {
38 { 34 return m_class.isAssignableFrom(accessor.getItem().getClass());
39 return m_class.isAssignableFrom( accessor.getItem().getClass() );
40 } 35 }
41 36
42 private Object m_item; 37 private Object m_item;
43 38
44 public InvokeDynamicInfoAccessor( Object item ) 39 public InvokeDynamicInfoAccessor(Object item) {
45 {
46 m_item = item; 40 m_item = item;
47 } 41 }
48 42
49 public int getBootstrapIndex( ) 43 public int getBootstrapIndex() {
50 { 44 try {
51 try 45 return (Integer)m_bootstrapIndex.get(m_item);
52 { 46 } catch (Exception ex) {
53 return (Integer)m_bootstrapIndex.get( m_item ); 47 throw new Error(ex);
54 }
55 catch( Exception ex )
56 {
57 throw new Error( ex );
58 } 48 }
59 } 49 }
60 50
61 public void setBootstrapIndex( int val ) 51 public void setBootstrapIndex(int val) {
62 { 52 try {
63 try 53 m_bootstrapIndex.set(m_item, val);
64 { 54 } catch (Exception ex) {
65 m_bootstrapIndex.set( m_item, val ); 55 throw new Error(ex);
66 }
67 catch( Exception ex )
68 {
69 throw new Error( ex );
70 } 56 }
71 } 57 }
72 58
73 public int getNameAndTypeIndex( ) 59 public int getNameAndTypeIndex() {
74 { 60 try {
75 try 61 return (Integer)m_nameAndTypeIndex.get(m_item);
76 { 62 } catch (Exception ex) {
77 return (Integer)m_nameAndTypeIndex.get( m_item ); 63 throw new Error(ex);
78 }
79 catch( Exception ex )
80 {
81 throw new Error( ex );
82 } 64 }
83 } 65 }
84 66
85 public void setNameAndTypeIndex( int val ) 67 public void setNameAndTypeIndex(int val) {
86 { 68 try {
87 try 69 m_nameAndTypeIndex.set(m_item, val);
88 { 70 } catch (Exception ex) {
89 m_nameAndTypeIndex.set( m_item, val ); 71 throw new Error(ex);
90 }
91 catch( Exception ex )
92 {
93 throw new Error( ex );
94 } 72 }
95 } 73 }
96} 74}