vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 28 Sep 2012 14:45:00 +0200
changeset 46 b07c7c256771
parent 22 b9318fe303cd
child 48 4fca8ddf46de
permissions -rw-r--r--
Understands aconst_null. To achieve that we realized that invokeinterface bytecode is followed by four bytes, not just two.
     1 /*
     2 Java 4 Browser Bytecode Translator
     3 Copyright (C) 2012-2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     4 
     5 This program is free software: you can redistribute it and/or modify
     6 it under the terms of the GNU General Public License as published by
     7 the Free Software Foundation, version 2 of the License.
     8 
     9 This program is distributed in the hope that it will be useful,
    10 but WITHOUT ANY WARRANTY; without even the implied warranty of
    11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12 GNU General Public License for more details.
    13 
    14 You should have received a copy of the GNU General Public License
    15 along with this program. Look for COPYING file in the top folder.
    16 If not, see http://opensource.org/licenses/GPL-2.0.
    17 */
    18 package org.apidesign.vm4brwsr;
    19 
    20 /**
    21  *
    22  * @author Jaroslav Tulach <jtulach@netbeans.org>
    23  */
    24 public class StaticMethod {
    25     private static int cnt;
    26     
    27     public static Object none(int x, int y) {
    28         Object toRet = null;
    29         for (int i = x; i < y; i++) {
    30             if (i == 2) {
    31                 toRet = null;
    32             } else {
    33                 toRet = new Object();
    34             }
    35         }
    36         return toRet;
    37     }
    38     
    39     public static int sum(int x, int y) {
    40         return x + y;
    41     }
    42     public static float power(float x) {
    43         return x * x;
    44     }
    45     public static double minus(double x, long y) {
    46         return x - y;
    47     }
    48     public static int div(byte c, double d) {
    49         return (int)(d / c);
    50     }
    51     public static int mix(int a, long b, byte c, double d) {
    52         return (int)((b / a + c) * d);
    53     }
    54     public static long xor(int a, long b) {
    55         return a ^ b;
    56     }
    57     public static long orOrAnd(boolean doOr, int a, int b) {
    58         return doOr ? a | b : a & b;
    59     }
    60     public static long factRec(int n) {
    61         if (n <= 1) {
    62             return 1;
    63         } else {
    64             return n * factRec(n - 1);
    65         }
    66     }
    67     public static long factIter(int n) {
    68         long res = 1;
    69         for (int i = 2; i <= n; i++) {
    70             res *= i;
    71         }
    72         return res;
    73     }
    74     public static int inc4() {
    75         cnt++;
    76         cnt+=2;
    77         cnt++;
    78         return cnt;
    79     }
    80 }