equal
deleted
inserted
replaced
49 |
49 |
50 // Warning: do not use rip relative addressing after the first counter load |
50 // Warning: do not use rip relative addressing after the first counter load |
51 // since that may scratch r10! |
51 // since that may scratch r10! |
52 |
52 |
53 address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) { |
53 address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) { |
54 const char *name; |
54 const char *name = NULL; |
55 switch (type) { |
55 switch (type) { |
56 case T_BOOLEAN: name = "jni_fast_GetBooleanField"; break; |
56 case T_BOOLEAN: name = "jni_fast_GetBooleanField"; break; |
57 case T_BYTE: name = "jni_fast_GetByteField"; break; |
57 case T_BYTE: name = "jni_fast_GetByteField"; break; |
58 case T_CHAR: name = "jni_fast_GetCharField"; break; |
58 case T_CHAR: name = "jni_fast_GetCharField"; break; |
59 case T_SHORT: name = "jni_fast_GetShortField"; break; |
59 case T_SHORT: name = "jni_fast_GetShortField"; break; |
109 |
109 |
110 __ ret (0); |
110 __ ret (0); |
111 |
111 |
112 slowcase_entry_pclist[count++] = __ pc(); |
112 slowcase_entry_pclist[count++] = __ pc(); |
113 __ bind (slow); |
113 __ bind (slow); |
114 address slow_case_addr; |
114 address slow_case_addr = NULL; |
115 switch (type) { |
115 switch (type) { |
116 case T_BOOLEAN: slow_case_addr = jni_GetBooleanField_addr(); break; |
116 case T_BOOLEAN: slow_case_addr = jni_GetBooleanField_addr(); break; |
117 case T_BYTE: slow_case_addr = jni_GetByteField_addr(); break; |
117 case T_BYTE: slow_case_addr = jni_GetByteField_addr(); break; |
118 case T_CHAR: slow_case_addr = jni_GetCharField_addr(); break; |
118 case T_CHAR: slow_case_addr = jni_GetCharField_addr(); break; |
119 case T_SHORT: slow_case_addr = jni_GetShortField_addr(); break; |
119 case T_SHORT: slow_case_addr = jni_GetShortField_addr(); break; |
151 address JNI_FastGetField::generate_fast_get_long_field() { |
151 address JNI_FastGetField::generate_fast_get_long_field() { |
152 return generate_fast_get_int_field0(T_LONG); |
152 return generate_fast_get_int_field0(T_LONG); |
153 } |
153 } |
154 |
154 |
155 address JNI_FastGetField::generate_fast_get_float_field0(BasicType type) { |
155 address JNI_FastGetField::generate_fast_get_float_field0(BasicType type) { |
156 const char *name; |
156 const char *name = NULL; |
157 switch (type) { |
157 switch (type) { |
158 case T_FLOAT: name = "jni_fast_GetFloatField"; break; |
158 case T_FLOAT: name = "jni_fast_GetFloatField"; break; |
159 case T_DOUBLE: name = "jni_fast_GetDoubleField"; break; |
159 case T_DOUBLE: name = "jni_fast_GetDoubleField"; break; |
160 default: ShouldNotReachHere(); |
160 default: ShouldNotReachHere(); |
161 } |
161 } |
204 |
204 |
205 __ ret (0); |
205 __ ret (0); |
206 |
206 |
207 slowcase_entry_pclist[count++] = __ pc(); |
207 slowcase_entry_pclist[count++] = __ pc(); |
208 __ bind (slow); |
208 __ bind (slow); |
209 address slow_case_addr; |
209 address slow_case_addr = NULL; |
210 switch (type) { |
210 switch (type) { |
211 case T_FLOAT: slow_case_addr = jni_GetFloatField_addr(); break; |
211 case T_FLOAT: slow_case_addr = jni_GetFloatField_addr(); break; |
212 case T_DOUBLE: slow_case_addr = jni_GetDoubleField_addr(); |
212 case T_DOUBLE: slow_case_addr = jni_GetDoubleField_addr(); |
213 } |
213 } |
214 // tail call |
214 // tail call |