src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/InvokerSignatureMismatchTest.java
author chegar
Thu, 17 Oct 2019 20:54:25 +0100
branchdatagramsocketimpl-branch
changeset 58679 9c3209ff7550
parent 58678 9cf78a70fa4f
parent 58299 6df94ce3ab2f
permissions -rw-r--r--
datagramsocketimpl-branch: merge with default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     1
/*
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     2
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     4
 *
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     7
 * published by the Free Software Foundation.
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     8
 *
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    13
 * accompanied this code).
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    14
 *
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    18
 *
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    21
 * questions.
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    22
 */
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    23
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    24
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    25
package org.graalvm.compiler.replacements.test;
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    26
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    27
import static org.graalvm.compiler.test.SubprocessUtil.getVMCommandLine;
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    28
import static org.graalvm.compiler.test.SubprocessUtil.withoutDebuggerArguments;
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    29
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    30
import java.nio.file.Files;
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    31
import java.nio.file.Path;
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    32
import java.nio.file.Paths;
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    33
import java.util.List;
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    34
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    35
import org.graalvm.compiler.core.test.CustomizedBytecodePatternTest;
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    36
import org.graalvm.compiler.serviceprovider.JavaVersionUtil;
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    37
import org.graalvm.compiler.test.SubprocessUtil;
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    38
import org.graalvm.compiler.test.SubprocessUtil.Subprocess;
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    39
import org.junit.Test;
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    40
import org.objectweb.asm.ClassWriter;
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    41
import org.objectweb.asm.MethodVisitor;
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    42
import org.objectweb.asm.Type;
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    43
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    44
public class InvokerSignatureMismatchTest extends CustomizedBytecodePatternTest {
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    45
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    46
    @SuppressWarnings("try")
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    47
    @Test
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    48
    public void test() throws Throwable {
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    49
        List<String> args = withoutDebuggerArguments(getVMCommandLine());
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    50
        try (TemporaryDirectory temp = new TemporaryDirectory(null, getClass().getSimpleName())) {
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    51
            if (JavaVersionUtil.JAVA_SPEC > 8) {
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    52
                args.add("--class-path=" + temp);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    53
                args.add("--patch-module=java.base=" + temp);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    54
            } else {
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    55
                args.add("-Xbootclasspath/a:" + temp);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    56
            }
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    57
            args.add("-XX:-TieredCompilation");
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    58
            args.add("-XX:+UnlockExperimentalVMOptions");
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    59
            args.add("-XX:+EnableJVMCI");
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    60
            args.add("-XX:+UseJVMCICompiler");
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    61
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    62
            Path invokeDir = Files.createDirectories(temp.path.resolve(Paths.get("java", "lang", "invoke")));
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    63
            Files.write(temp.path.resolve("ISMTest.class"), generateClass("ISMTest"));
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    64
            Files.write(invokeDir.resolve("MethodHandleHelper.class"), generateClass("java/lang/invoke/MethodHandleHelper"));
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    65
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    66
            args.add("ISMTest");
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    67
            Subprocess proc = SubprocessUtil.java(args);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    68
            if (proc.exitCode != 0) {
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    69
                throw new AssertionError(proc.toString());
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    70
            }
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    71
        }
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    72
    }
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    73
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    74
    @Override
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    75
    protected byte[] generateClass(String className) {
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    76
        String[] exceptions = new String[]{"java/lang/Throwable"};
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    77
        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    78
        cw.visit(52, ACC_SUPER | ACC_PUBLIC, className, null, "java/lang/Object", null);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    79
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
    80
        if (className.equals("java/lang/invoke/MethodHandleHelper")) {
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    81
            MethodVisitor internalMemberName = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "internalMemberName", "(Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;", null, exceptions);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    82
            internalMemberName.visitCode();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    83
            internalMemberName.visitVarInsn(ALOAD, 0);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    84
            internalMemberName.visitMethodInsn(INVOKEVIRTUAL, "java/lang/invoke/MethodHandle", "internalMemberName", "()Ljava/lang/invoke/MemberName;", false);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    85
            internalMemberName.visitInsn(ARETURN);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    86
            internalMemberName.visitMaxs(1, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    87
            internalMemberName.visitEnd();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    88
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    89
            MethodVisitor linkToStatic = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "linkToStatic", "(FLjava/lang/Object;)I", null, exceptions);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    90
            linkToStatic.visitCode();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    91
            linkToStatic.visitVarInsn(FLOAD, 0);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    92
            linkToStatic.visitVarInsn(ALOAD, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    93
            linkToStatic.visitMethodInsn(INVOKESTATIC, "java/lang/invoke/MethodHandle", "linkToStatic", "(FLjava/lang/Object;)I", false);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    94
            linkToStatic.visitInsn(IRETURN);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    95
            linkToStatic.visitMaxs(1, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    96
            linkToStatic.visitEnd();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    97
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    98
            MethodVisitor invokeBasicI = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "invokeBasicI", "(Ljava/lang/invoke/MethodHandle;F)I", null, exceptions);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
    99
            invokeBasicI.visitCode();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   100
            invokeBasicI.visitVarInsn(ALOAD, 0);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   101
            invokeBasicI.visitVarInsn(FLOAD, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   102
            invokeBasicI.visitMethodInsn(INVOKEVIRTUAL, "java/lang/invoke/MethodHandle", "invokeBasic", "(F)I", false);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   103
            invokeBasicI.visitInsn(IRETURN);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   104
            invokeBasicI.visitMaxs(1, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   105
            invokeBasicI.visitEnd();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   106
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   107
        } else {
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   108
            assert className.equals("ISMTest") : className;
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   109
            cw.visitField(ACC_FINAL | ACC_STATIC, "INT_MH", "Ljava/lang/invoke/MethodHandle;", null, null).visitAnnotation("Ljava/lang/invoke/Stable.class;", true).visitEnd();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   110
            MethodVisitor clinit = cw.visitMethod(ACC_STATIC, "<clinit>", "()V", null, exceptions);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   111
            clinit.visitCode();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   112
            clinit.visitInsn(ACONST_NULL);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   113
            clinit.visitVarInsn(ASTORE, 0);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   114
            clinit.visitMethodInsn(INVOKESTATIC, "java/lang/invoke/MethodHandles", "lookup", "()Ljava/lang/invoke/MethodHandles$Lookup;", false);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   115
            clinit.visitLdcInsn(Type.getObjectType(className));
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   116
            clinit.visitLdcInsn("bodyI");
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   117
            clinit.visitFieldInsn(GETSTATIC, "java/lang/Integer", "TYPE", "Ljava/lang/Class;");
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   118
            clinit.visitFieldInsn(GETSTATIC, "java/lang/Integer", "TYPE", "Ljava/lang/Class;");
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   119
            clinit.visitMethodInsn(INVOKESTATIC, "java/lang/invoke/MethodType", "methodType", "(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;", false);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   120
            clinit.visitMethodInsn(INVOKEVIRTUAL, "java/lang/invoke/MethodHandles$Lookup", "findStatic",
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   121
                            "(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", false);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   122
            clinit.visitFieldInsn(PUTSTATIC, className, "INT_MH", "Ljava/lang/invoke/MethodHandle;");
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   123
            clinit.visitInsn(RETURN);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   124
            clinit.visitMaxs(1, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   125
            clinit.visitEnd();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   126
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   127
            MethodVisitor mainLink = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "mainLink", "(I)I", null, exceptions);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   128
            mainLink.visitCode();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   129
            mainLink.visitFieldInsn(GETSTATIC, className, "INT_MH", "Ljava/lang/invoke/MethodHandle;");
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   130
            mainLink.visitMethodInsn(INVOKESTATIC, "java/lang/invoke/MethodHandleHelper", "internalMemberName", "(Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;", false);
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   131
            mainLink.visitVarInsn(ASTORE, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   132
            mainLink.visitVarInsn(ILOAD, 0);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   133
            mainLink.visitInsn(I2F);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   134
            mainLink.visitVarInsn(ALOAD, 1);
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   135
            mainLink.visitMethodInsn(INVOKESTATIC, "java/lang/invoke/MethodHandleHelper", "linkToStatic", "(FLjava/lang/Object;)I", false);
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   136
            mainLink.visitInsn(IRETURN);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   137
            mainLink.visitMaxs(1, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   138
            mainLink.visitEnd();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   139
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   140
            MethodVisitor mainInvoke = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "mainInvoke", "(I)I", null, exceptions);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   141
            mainInvoke.visitCode();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   142
            mainInvoke.visitFieldInsn(GETSTATIC, className, "INT_MH", "Ljava/lang/invoke/MethodHandle;");
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   143
            mainInvoke.visitVarInsn(ILOAD, 0);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   144
            mainInvoke.visitInsn(I2F);
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   145
            mainInvoke.visitMethodInsn(INVOKESTATIC, "java/lang/invoke/MethodHandleHelper", "invokeBasicI", "(Ljava/lang/invoke/MethodHandle;F)I", false);
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   146
            mainInvoke.visitInsn(IRETURN);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   147
            mainInvoke.visitMaxs(1, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   148
            mainInvoke.visitEnd();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   149
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   150
            MethodVisitor bodyI = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "bodyI", "(I)I", null, null);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   151
            bodyI.visitCode();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   152
            bodyI.visitVarInsn(ILOAD, 0);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   153
            bodyI.visitIntInsn(SIPUSH, 1023);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   154
            bodyI.visitInsn(IAND);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   155
            bodyI.visitInsn(IRETURN);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   156
            bodyI.visitMaxs(1, 1);
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   157
            bodyI.visitEnd();
58299
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   158
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   159
            MethodVisitor main = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "main", "([Ljava/lang/String;)V", null, exceptions);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   160
            main.visitCode();
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   161
            main.visitIntInsn(SIPUSH, 100);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   162
            main.visitMethodInsn(INVOKESTATIC, "ISMTest", "mainLink", "(I)I", false);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   163
            main.visitInsn(POP);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   164
            main.visitIntInsn(SIPUSH, 100);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   165
            main.visitMethodInsn(INVOKESTATIC, "ISMTest", "mainInvoke", "(I)I", false);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   166
            main.visitInsn(POP);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   167
            main.visitInsn(RETURN);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   168
            main.visitMaxs(1, 1);
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   169
            main.visitEnd();
6df94ce3ab2f 8229201: Update Graal
dlong
parents: 55509
diff changeset
   170
55509
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   171
        }
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   172
        cw.visitEnd();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   173
        return cw.toByteArray();
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   174
    }
d58442b8abc1 8225497: Update Graal
jwilhelm
parents:
diff changeset
   175
}