Пример #1
0
  public void callSuper(
      Code code, String name, String superclass, Class<?>[] parameters, Class<?> ret, String sig)
      throws Exception {

    code.aload(0);
    int local_index;
    int i;
    for (i = 0, local_index = 1; i < parameters.length; i++) {
      switch (getType(parameters[i])) {
        case tCharacter:
        case tBoolean:
        case tByte:
        case tShort:
        case tInteger:
          code.iload(local_index);
          local_index += 1;
          break;
        case tLong:
          code.lload(local_index);
          local_index += 2;
          break;
        case tFloat:
          code.fload(local_index);
          local_index += 1;
          break;
        case tDouble:
          code.dload(local_index);
          local_index += 2;
          break;
        default:
          code.aload(local_index);
          local_index += 1;
          break;
      }
    }
    code.invokespecial(superclass, name, sig);

    doReturn(code, ret);
  }