1 #!/bin/bash 2 # 3 # Copyright (C) 2015 The Android Open Source Project 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 echo ' 18 .class multidimensional 19 .super java/lang/Object 20 ' 21 22 function onetype() { 23 local typename=$1 24 local stacksize=$2 25 local defaultvalue=$3 26 local descriptor=$4 27 local defaultload=$5 28 local loadstoreprefix=$6 29 local returnprefix=${7:-$loadstoreprefix} 30 echo " 31 ; Output from some versions of javac on: 32 ; public static $typename test_get${typename^}Array() { 33 ; $typename[][] array = null; 34 ; return array[1][1]; 35 ; } 36 .method public static test_get${typename^}Array()$descriptor 37 .limit locals 1 38 .limit stack 2 39 40 aconst_null 41 astore_0 42 aload_0 43 iconst_1 44 aaload 45 iconst_1 46 ${loadstoreprefix}aload 47 ${returnprefix}return 48 .end method 49 50 ; Output from some versions of javac on: 51 ; public static void test_set${typename^}Array() { 52 ; $typename[][] array = null; 53 ; array[1][1] = $defaultvalue; 54 ; } 55 .method public static test_set${typename^}Array()V 56 .limit locals 1 57 .limit stack $((stacksize+2)) 58 59 aconst_null 60 astore_0 61 aload_0 62 iconst_1 63 aaload 64 iconst_1 65 $defaultload 66 ${loadstoreprefix}astore 67 return 68 .end method 69 " 70 } 71 72 onetype Object 1 null 'Ljava/lang/Object;' aconst_null a 73 onetype boolean 1 false Z iconst_0 b i 74 onetype byte 1 0 B iconst_0 b i 75 onetype char 1 0 C iconst_0 c i 76 onetype short 1 0 S iconst_0 s i 77 onetype int 1 0 I iconst_0 i 78 onetype long 2 0 J lconst_0 l 79 onetype float 1 0 F fconst_0 f 80 onetype double 2 0 D dconst_0 d 81