Package com.sun.org.apache.bcel.internal.generic

Examples of com.sun.org.apache.bcel.internal.generic.INVOKESTATIC


            // call checkNCName if the name is an AVT
            final int check = cpg.addMethodref(BASIS_LIBRARY_CLASS, "checkNCName",
                                "("
                                +STRING_SIG
                                +")V");
                                il.append(new INVOKESTATIC(check));

            // Save the current handler base on the stack
            il.append(methodGen.loadHandler());
            il.append(DUP);     // first arg to "attributes" call
View Full Code Here


  }
  else {
      _name.translate(classGen, methodGen);
  }
  il.append(new INVOKEVIRTUAL(get));
  il.append(new INVOKESTATIC(fn3arg));
    }
View Full Code Here

          "("   
           + "Lorg/w3c/dom/NodeList;"
           + TRANSLET_INTF_SIG
           + DOM_INTF_SIG
           + ")" + NODE_ITERATOR_SIG );
     il.append(new INVOKESTATIC(convert));
  }
  else if (clazz.getName().equals("org.w3c.dom.Node")) {
     // w3c Node is on the stack from the external Java function call.
     // call BasisLibrary.node2Iterator() to consume Node and leave
     // Iterator on the stack.
     il.append(classGen.loadTranslet());   // push translet onto stack
     il.append(methodGen.loadDOM());      // push DOM onto stack
     final int convert = cpg.addMethodref(BASIS_LIBRARY_CLASS,
          "node2Iterator",
          "("   
           + "Lorg/w3c/dom/Node;"
           + TRANSLET_INTF_SIG
           + DOM_INTF_SIG
           + ")" + NODE_ITERATOR_SIG );
     il.append(new INVOKESTATIC(convert));
  }
  else {
      ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
    toString(), clazz.getName());
      classGen.getParser().reportError(Constants.FATAL, err);
View Full Code Here

     */
    public void translateTo(ClassGenerator classGen, MethodGenerator methodGen,
          RealType type) {
  final ConstantPoolGen cpg = classGen.getConstantPool();
  final InstructionList il = methodGen.getInstructionList();
  il.append(new INVOKESTATIC(cpg.addMethodref(BASIS_LIBRARY_CLASS,
                STRING_TO_REAL,
                STRING_TO_REAL_SIG)));
    }
View Full Code Here

  if (isSecureProcessing) {
      int index = cpg.addMethodref(BASIS_LIBRARY_CLASS,
                 "unallowed_extension_elementF",
                 "(Ljava/lang/String;)V");
      il.append(new PUSH(cpg, "redirect"));
      il.append(new INVOKESTATIC(index));
      return;  
  }

  // Save the current output handler on the stack
  il.append(methodGen.loadHandler());
View Full Code Here

      }

      // Invoke the method in the basis library
      index = cpg.addMethodref(BASIS_LIBRARY_CLASS, name,
             _chosenMethodType.toSignature(args));
      il.append(new INVOKESTATIC(index));
  }
  // Add call to BasisLibrary.unresolved_externalF() to generate
  // run-time error message for unsupported external functions
  else if (unresolvedExternal) {
      index = cpg.addMethodref(BASIS_LIBRARY_CLASS,
             "unresolved_externalF",
             "(Ljava/lang/String;)V");
      il.append(new PUSH(cpg, _fname.toString()));
      il.append(new INVOKESTATIC(index));
  }
  else if (_isExtConstructor) {
      if (isSecureProcessing)
          translateUnallowedExtension(cpg, il);
     
      final String clazz =
    _chosenConstructor.getDeclaringClass().getName();
      Class[] paramTypes = _chosenConstructor.getParameterTypes();
            LocalVariableGen[] paramTemp = new LocalVariableGen[n];

            // Backwards branches are prohibited if an uninitialized object is
            // on the stack by section 4.9.4 of the JVM Specification, 2nd Ed.
            // We don't know whether this code might contain backwards branches
            // so we mustn't create the new object until after we've created
            // the suspect arguments to its constructor.  Instead we calculate
            // the values of the arguments to the constructor first, store them
            // in temporary variables, create the object and reload the
            // arguments from the temporaries to avoid the problem.

      for (int i = 0; i < n; i++) {
    final Expression exp = argument(i);
                Type expType = exp.getType();
    exp.translate(classGen, methodGen);
    // Convert the argument to its Java type
    exp.startIterator(classGen, methodGen);
    expType.translateTo(classGen, methodGen, paramTypes[i]);
                paramTemp[i] =
                    methodGen.addLocalVariable("function_call_tmp"+i,
                                               expType.toJCType(),
                                               il.getEnd(), null);
                il.append(expType.STORE(paramTemp[i].getIndex()));
      }

      il.append(new NEW(cpg.addClass(_className)));
      il.append(InstructionConstants.DUP);

            for (int i = 0; i < n; i++) {
                final Expression arg = argument(i);
                il.append(arg.getType().LOAD(paramTemp[i].getIndex()));
            }

      final StringBuffer buffer = new StringBuffer();
      buffer.append('(');
      for (int i = 0; i < paramTypes.length; i++) {
    buffer.append(getSignature(paramTypes[i]));
      }
      buffer.append(')');
      buffer.append("V");

      index = cpg.addMethodref(clazz,
             "<init>",
             buffer.toString());
      il.append(new INVOKESPECIAL(index));

      // Convert the return type back to our internal type
      (Type.Object).translateFrom(classGen, methodGen,
        _chosenConstructor.getDeclaringClass());
     
  }
  // Invoke function calls that are handled in separate classes
  else {
      if (isSecureProcessing)
          translateUnallowedExtension(cpg, il);
     
      final String clazz = _chosenMethod.getDeclaringClass().getName();
      Class[] paramTypes = _chosenMethod.getParameterTypes();

      // Push "this" if it is an instance method
      if (_thisArgument != null) {
    _thisArgument.translate(classGen, methodGen);
      }     

      for (int i = 0; i < n; i++) {
    final Expression exp = argument(i);
    exp.translate(classGen, methodGen);
    // Convert the argument to its Java type
    exp.startIterator(classGen, methodGen);
    exp.getType().translateTo(classGen, methodGen, paramTypes[i]);
      }

      final StringBuffer buffer = new StringBuffer();
      buffer.append('(');
      for (int i = 0; i < paramTypes.length; i++) {
    buffer.append(getSignature(paramTypes[i]));
      }
      buffer.append(')');
      buffer.append(getSignature(_chosenMethod.getReturnType()));

      if (_thisArgument != null && _clazz.isInterface()) {
          index = cpg.addInterfaceMethodref(clazz,
             _fname.getLocalPart(),
             buffer.toString());
    il.append(new INVOKEINTERFACE(index, n+1));
            }
            else {
          index = cpg.addMethodref(clazz,
             _fname.getLocalPart(),
             buffer.toString());
          il.append(_thisArgument != null ? (InvokeInstruction) new INVOKEVIRTUAL(index) :
            (InvokeInstruction) new INVOKESTATIC(index));
            }
      // Convert the return type back to our internal type
      _type.translateFrom(classGen, methodGen,
        _chosenMethod.getReturnType());
View Full Code Here

                                             InstructionList il) {
  int index = cpg.addMethodref(BASIS_LIBRARY_CLASS,
             "unallowed_extension_functionF",
             "(Ljava/lang/String;)V");
  il.append(new PUSH(cpg, _fname.toString()));
  il.append(new INVOKESTATIC(index));  
    }   
View Full Code Here

    }

    public void translate(ClassGenerator classGen, MethodGenerator methodGen) {
  argument().translate(classGen, methodGen);
  methodGen.getInstructionList()
      .append(new INVOKESTATIC(classGen.getConstantPool()
             .addMethodref(MATH_CLASS,
               "floor", "(D)D")));
    }
View Full Code Here

            // call checkQName if the name is an AVT
            final int check = cpg.addMethodref(BASIS_LIBRARY_CLASS, "checkQName",
                            "("
                            +STRING_SIG
                            +")V");                
            il.append(new INVOKESTATIC(check));
           
            // Push handler for call to endElement()
            il.append(methodGen.loadHandler());        
           
            // load name value again   
            il.append(new ALOAD(nameValue.getIndex()))
                   
      if (_namespace != null) {
    _namespace.translate(classGen, methodGen);
      }
      else {
    il.append(ACONST_NULL);
      }

      // Push additional arguments
      il.append(methodGen.loadHandler());
      il.append(methodGen.loadDOM());
      il.append(methodGen.loadCurrentNode());
       
            // Invoke BasisLibrary.startXslElemCheckQName()
            il.append(new INVOKESTATIC(
            cpg.addMethodref(BASIS_LIBRARY_CLASS, "startXslElement",
                    "(" + STRING_SIG
                    + STRING_SIG
                    + TRANSLET_OUTPUT_SIG
                    + DOM_INTF_SIG + "I)" + STRING_SIG)));               
View Full Code Here

  final ConstantPoolGen cpg = classGen.getConstantPool();
  final InstructionList il = methodGen.getInstructionList();

  // Get two copies of the argument on the stack
        argument().translate(classGen, methodGen);   
                il.append(new INVOKESTATIC(cpg.addMethodref(BASIS_LIBRARY_CLASS,
                                                            "roundF", "(D)D")));
    }
View Full Code Here

TOP

Related Classes of com.sun.org.apache.bcel.internal.generic.INVOKESTATIC

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.