16
16
17
17
data ReferenceTypeDescriptor = ClassDesc ClassName
18
18
| InterfaceDesc ClassName
19
- | ArrayDesc ReferenceTypeDescriptor
19
+ | ArrayDesc FieldTypeDescriptor
20
20
| IdrisExportDesc ClassName
21
21
| NullableStrDesc
22
22
| NullableRefDesc ClassName
@@ -114,7 +114,7 @@ mutual
114
114
Show ReferenceTypeDescriptor where
115
115
show (ClassDesc className) = " ClassDesc " ++ show className
116
116
show (InterfaceDesc className) = " InterfaceDesc " ++ show className
117
- show (ArrayDesc referenceTypeDescriptor ) = " ArrayDesc " ++ show referenceTypeDescriptor
117
+ show (ArrayDesc tyDesc ) = " ArrayDesc " ++ show tyDesc
118
118
show (IdrisExportDesc className) = " IdrisExportDesc " ++ show className
119
119
show NullableStrDesc = " NullableStrDesc"
120
120
show (NullableRefDesc className) = " NullableRefDesc" ++ show className
@@ -146,34 +146,34 @@ Eq JMethodName where
146
146
Show JMethodName where
147
147
show (MkJMethodName cname mname) = cname ++ " #" ++ mname
148
148
149
-
150
- asmRefTyDesc : ReferenceTypeDescriptor -> String
151
- asmRefTyDesc (ClassDesc c) = " L" ++ c ++ " ;"
152
- asmRefTyDesc (IdrisExportDesc c) = " L" ++ c ++ " ;"
153
- asmRefTyDesc (InterfaceDesc c) = " L" ++ c ++ " ;"
154
- asmRefTyDesc (NullableRefDesc c) = " L" ++ c ++ " ;"
155
- asmRefTyDesc NullableStrDesc = " Ljava/lang/String;"
156
- asmRefTyDesc (ArrayDesc refTy ) = " [" ++ asmRefTyDesc refTy
157
-
158
- refTyClassName : ReferenceTypeDescriptor -> ClassName
159
- refTyClassName (ClassDesc c) = c
160
- refTyClassName (InterfaceDesc c) = c
161
- refTyClassName (IdrisExportDesc c) = c
162
- refTyClassName (NullableRefDesc c) = c
163
- refTyClassName NullableStrDesc = " java/lang/String"
164
- refTyClassName arr@(ArrayDesc _ ) = asmRefTyDesc arr
165
-
166
- asmFieldTypeDesc : FieldTypeDescriptor -> String
167
- asmFieldTypeDesc FieldTyDescByte = " B"
168
- asmFieldTypeDesc FieldTyDescChar = " C"
169
- asmFieldTypeDesc FieldTyDescShort = " S"
170
- asmFieldTypeDesc FieldTyDescBoolean = " Z"
171
- asmFieldTypeDesc FieldTyDescArray = " ["
172
- asmFieldTypeDesc FieldTyDescDouble = " D"
173
- asmFieldTypeDesc FieldTyDescFloat = " F"
174
- asmFieldTypeDesc FieldTyDescInt = " I"
175
- asmFieldTypeDesc FieldTyDescLong = " J"
176
- asmFieldTypeDesc (FieldTyDescReference f) = asmRefTyDesc f
149
+ mutual
150
+ asmRefTyDesc : ReferenceTypeDescriptor -> String
151
+ asmRefTyDesc (ClassDesc c) = " L" ++ c ++ " ;"
152
+ asmRefTyDesc (IdrisExportDesc c) = " L" ++ c ++ " ;"
153
+ asmRefTyDesc (InterfaceDesc c) = " L" ++ c ++ " ;"
154
+ asmRefTyDesc (NullableRefDesc c) = " L" ++ c ++ " ;"
155
+ asmRefTyDesc NullableStrDesc = " Ljava/lang/String;"
156
+ asmRefTyDesc (ArrayDesc ty ) = " [" ++ asmFieldTypeDesc ty
157
+
158
+ refTyClassName : ReferenceTypeDescriptor -> ClassName
159
+ refTyClassName (ClassDesc c) = c
160
+ refTyClassName (InterfaceDesc c) = c
161
+ refTyClassName (IdrisExportDesc c) = c
162
+ refTyClassName (NullableRefDesc c) = c
163
+ refTyClassName NullableStrDesc = " java/lang/String"
164
+ refTyClassName arr@(ArrayDesc _ ) = asmRefTyDesc arr
165
+
166
+ asmFieldTypeDesc : FieldTypeDescriptor -> String
167
+ asmFieldTypeDesc FieldTyDescByte = " B"
168
+ asmFieldTypeDesc FieldTyDescChar = " C"
169
+ asmFieldTypeDesc FieldTyDescShort = " S"
170
+ asmFieldTypeDesc FieldTyDescBoolean = " Z"
171
+ asmFieldTypeDesc FieldTyDescArray = " ["
172
+ asmFieldTypeDesc FieldTyDescDouble = " D"
173
+ asmFieldTypeDesc FieldTyDescFloat = " F"
174
+ asmFieldTypeDesc FieldTyDescInt = " I"
175
+ asmFieldTypeDesc FieldTyDescLong = " J"
176
+ asmFieldTypeDesc (FieldTyDescReference f) = asmRefTyDesc f
177
177
178
178
asmTypeDesc : TypeDescriptor -> String
179
179
asmTypeDesc (FieldDescriptor t) = asmFieldTypeDesc t
@@ -190,8 +190,23 @@ data Asm : Type -> Type where
190
190
Aconstnull : Asm ()
191
191
Aload : Int -> Asm ()
192
192
Anewarray : Descriptor -> Asm ()
193
- Astore : Int -> Asm ()
193
+
194
+ Anewbooleanarray : Asm ()
195
+ Anewbytearray : Asm ()
196
+ Anewchararray : Asm ()
197
+ Anewshortarray : Asm ()
198
+ Anewintarray : Asm ()
199
+ Anewlongarray : Asm ()
200
+ Anewfloatarray : Asm ()
201
+ Anewdoublearray : Asm ()
202
+
203
+ Arraylength : Asm ()
194
204
Areturn : Asm ()
205
+ Astore : Int -> Asm ()
206
+ Baload : Asm ()
207
+ Bastore : Asm ()
208
+ Caload : Asm ()
209
+ Castore : Asm ()
195
210
Checkcast : Descriptor -> Asm ()
196
211
ClassCodeStart : Int -> Access -> ClassName -> (Maybe Signature) -> ClassName -> List ClassName -> List Annotation -> Asm ()
197
212
ClassCodeEnd : String -> Asm ()
@@ -201,6 +216,8 @@ data Asm : Type -> Type where
201
216
CreateMethod : List Access -> ClassName -> MethodName -> Descriptor -> Maybe Signature ->
202
217
Maybe (List Exception) -> List Annotation -> List (List Annotation) -> Asm ()
203
218
Dadd : Asm ()
219
+ Daload : Asm ()
220
+ Dastore : Asm ()
204
221
Ddiv : Asm ()
205
222
Dload : Int -> Asm ()
206
223
Dmul : Asm ()
@@ -210,6 +227,8 @@ data Asm : Type -> Type where
210
227
Dup : Asm ()
211
228
Error : String -> Asm ()
212
229
F2d : Asm ()
230
+ Faload : Asm ()
231
+ Fastore : Asm ()
213
232
Field : FieldInsType -> ClassName -> FieldName -> Descriptor -> Asm ()
214
233
FieldEnd : Asm ()
215
234
Fload : Int -> Asm ()
@@ -224,7 +243,9 @@ data Asm : Type -> Type where
224
243
I2c : Asm ()
225
244
I2l : Asm ()
226
245
Iadd : Asm ()
246
+ Iaload : Asm ()
227
247
Iand : Asm ()
248
+ Iastore : Asm ()
228
249
Ior : Asm ()
229
250
Ixor : Asm ()
230
251
Icompl : Asm ()
@@ -249,7 +270,9 @@ data Asm : Type -> Type where
249
270
L2i : Asm ()
250
271
LabelStart : Label -> Asm ()
251
272
Ladd : Asm ()
273
+ Laload : Asm ()
252
274
Land : Asm ()
275
+ Lastore : Asm ()
253
276
Lor : Asm ()
254
277
Lxor : Asm ()
255
278
Lcompl : Asm ()
@@ -267,11 +290,14 @@ data Asm : Type -> Type where
267
290
MaxStackAndLocal : Int -> Int -> Asm ()
268
291
MethodCodeStart : Asm ()
269
292
MethodCodeEnd : Asm ()
293
+ Multianewarray : Descriptor -> Nat -> Asm ()
270
294
New : ClassName -> Asm ()
271
295
InstanceOf : ClassName -> Asm ()
272
296
Pop : Asm ()
273
297
Pop2 : Asm ()
274
298
Return : Asm ()
299
+ Saload : Asm ()
300
+ Sastore : Asm ()
275
301
ShouldDescribeFrame : Asm Bool
276
302
SourceInfo : SourceFileName -> Asm ()
277
303
Subroutine : Asm () -> Asm ()
@@ -296,4 +322,4 @@ Applicative Asm where
296
322
297
323
(<*> ) f a = Bind f (\ f' =>
298
324
Bind a (\ a' =>
299
- Pure (f' a')))
325
+ Pure (f' a')))
0 commit comments