| #!/bin/bash |
| # |
| # Copyright (C) 2015 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| echo ' |
| .class multidimensional |
| .super java/lang/Object |
| ' |
| |
| function onetype() { |
| local typename=$1 |
| local stacksize=$2 |
| local defaultvalue=$3 |
| local descriptor=$4 |
| local defaultload=$5 |
| local loadstoreprefix=$6 |
| local returnprefix=${7:-$loadstoreprefix} |
| echo " |
| ; Output from some versions of javac on: |
| ; public static $typename test_get${typename^}Array() { |
| ; $typename[][] array = null; |
| ; return array[1][1]; |
| ; } |
| .method public static test_get${typename^}Array()$descriptor |
| .limit locals 1 |
| .limit stack 2 |
| |
| aconst_null |
| astore_0 |
| aload_0 |
| iconst_1 |
| aaload |
| iconst_1 |
| ${loadstoreprefix}aload |
| ${returnprefix}return |
| .end method |
| |
| ; Output from some versions of javac on: |
| ; public static void test_set${typename^}Array() { |
| ; $typename[][] array = null; |
| ; array[1][1] = $defaultvalue; |
| ; } |
| .method public static test_set${typename^}Array()V |
| .limit locals 1 |
| .limit stack $((stacksize+2)) |
| |
| aconst_null |
| astore_0 |
| aload_0 |
| iconst_1 |
| aaload |
| iconst_1 |
| $defaultload |
| ${loadstoreprefix}astore |
| return |
| .end method |
| " |
| } |
| |
| onetype Object 1 null 'Ljava/lang/Object;' aconst_null a |
| onetype boolean 1 false Z iconst_0 b i |
| onetype byte 1 0 B iconst_0 b i |
| onetype char 1 0 C iconst_0 c i |
| onetype short 1 0 S iconst_0 s i |
| onetype int 1 0 I iconst_0 i |
| onetype long 2 0 J lconst_0 l |
| onetype float 1 0 F fconst_0 f |
| onetype double 2 0 D dconst_0 d |