Package com.android.dx.rop.type

Examples of com.android.dx.rop.type.StdTypeList


        addInstruction(new ThrowingInsn(Rops.THROW, sourcePosition,
                RegisterSpecList.make(toThrow.spec()), catches));
    }

    private StdTypeList toTypeList(List<TypeId<?>> types) {
        StdTypeList result = new StdTypeList(types.size());
        for (int i = 0; i < types.size(); i++) {
            result.set(i, types.get(i).ropType);
        }
        return result;
    }
View Full Code Here


    final TypeId<?>[] types;
    final StdTypeList ropTypes;

    TypeList(TypeId<?>[] types) {
        this.types = types.clone();
        this.ropTypes = new StdTypeList(types.length);
        for (int i = 0; i < types.length; i++) {
            ropTypes.set(i, types[i].ropType);
        }
    }
View Full Code Here

   */
  private Element processParameterList(CstBaseMethodRef methodRef, List<RegisterSpec> registers)
  {
    Element result= new Element("parameters", NS_DEX);
    Prototype prototype= methodRef.getPrototype();
    StdTypeList parameters= prototype.getParameterTypes();

    // Sanity check.
    if (parameters.size() != registers.size())
    {
      Log.error(TAG, "DEXmlvmOutputProcess.processParameterList: Size mismatch: " + "registers vs parameters");
      System.exit(-1);
    }

    for (int i= 0; i < parameters.size(); ++i)
    {
      Element parameterElement= new Element("parameter", NS_DEX);
      String parameterType= parameters.get(i).toHuman();
      parameterElement.setAttribute("type", parameterType);
      if (isRedType(parameterType))
      {
        parameterElement.setAttribute("isRedType", "true");
      }
View Full Code Here

   * needed for the reflection API.
   */
  private Element processSignature(CstMethodRef methodRef, Map<String, ReferenceKind> referencedTypes)
  {
    Prototype prototype= methodRef.getPrototype();
    StdTypeList parameters= prototype.getParameterTypes();

    Element result= new Element("signature", NS_XMLVM);
    for (int i= 0; i < parameters.size(); ++i)
    {
      Element parameterElement= new Element("parameter", NS_XMLVM);
      String parameterType= parameters.get(i).toHuman();
      parameterElement.setAttribute("type", parameterType);
      if (isRedType(parameterType))
      {
        parameterElement.setAttribute("isRedType", "true");
      }
View Full Code Here

  private static void processSignature(CstMethodRef methodRef, Set<String> dependencies)
  {
    Prototype prototype= methodRef.getPrototype();

    // Parameter types.
    StdTypeList parameters= prototype.getParameterTypes();
    for (int i= 0; i < parameters.size(); ++i)
    {
      String parameterType= parameters.get(i).toHuman();
      dependencies.add(parameterType);
    }

    // Return type.
    dependencies.add(prototype.getReturnType().getType().toHuman());
View Full Code Here

     */
    private void addSetupBlocks() {
        LocalVariableList localVariables = method.getLocalVariables();
        SourcePosition pos = method.makeSourcePosistion(0);
        Prototype desc = method.getEffectiveDescriptor();
        StdTypeList params = desc.getParameterTypes();
        int sz = params.size();
        InsnList insns = new InsnList(sz + 1);
        int at = 0;

        for (int i = 0; i < sz; i++) {
            Type one = params.get(i);
            LocalVariableList.Item local = localVariables.pcAndIndexToLocal(0, at);
            RegisterSpec result = (local == null) ?
                RegisterSpec.make(at, one) :
                RegisterSpec.makeLocalOptional(at, one, local.getLocalItem());

View Full Code Here

    private void decode0() throws IOException {
        ByteArrayInputStream bs = new ByteArrayInputStream(encoded);

        line = readUnsignedLeb128(bs);
        int szParams = readUnsignedLeb128(bs);
        StdTypeList params = desc.getParameterTypes();
        int curReg = getParamBase();

        if (szParams != params.size()) {
            throw new RuntimeException(
                    "Mismatch between parameters_size and prototype");
        }
       
        if (!isStatic) {
            // Start off with implicit 'this' entry
            LocalEntry thisEntry =
                new LocalEntry(0, true, curReg, thisStringIdx, 0, 0);
            locals.add(thisEntry);
            lastEntryForReg[curReg] = thisEntry;
            curReg++;
        }

        for (int i = 0; i < szParams; i++) {
            Type paramType = params.getType(i);
            LocalEntry le;

            int nameIdx = readStringIndex(bs);

            if (nameIdx == -1) {
View Full Code Here

            annotate(output.getCursor() - mark, "line_start: " + line);
        }

        int curParam = getParamBase();
        // paramTypes will not include 'this'
        StdTypeList paramTypes = desc.getParameterTypes();
        int szParamTypes = paramTypes.size();

        /*
         * Initialize lastEntryForReg to have an initial
         * entry for the 'this' pointer.
         */
        if (!isStatic) {
            for (LocalList.Entry arg : methodArgs) {
                if (curParam == arg.getRegister()) {
                    lastEntryForReg[curParam] = arg;
                    break;
                }
            }
            curParam++;
        }

        // Write out the number of parameter entries that will follow.
        mark = output.getCursor();
        output.writeUnsignedLeb128(szParamTypes);

        if (annotate) {
            annotate(output.getCursor() - mark,
                    String.format("parameters_size: %04x", szParamTypes));
        }

        /*
         * Then emit the string indicies of all the method parameters.
         * Note that 'this', if applicable, is excluded.
         */
        for (int i = 0; i < szParamTypes; i++) {
            Type pt = paramTypes.get(i);
            LocalList.Entry found = null;

            mark = output.getCursor();

            for (LocalList.Entry arg : methodArgs) {
View Full Code Here

        if (count < 0) {
            throw new IllegalArgumentException("count < 0");
        }

        StdTypeList sourceTypes = new StdTypeList(count);

        for (int i = 0; i < count; i++) {
            sourceTypes.set(i, elementType);
        }

        // Note: The resulting rop is considered call-like.
        return new Rop(RegOps.FILLED_NEW_ARRAY,
                       sourceTypes,
View Full Code Here

                                   foundThisClass.getOuterClass()));
            }
        }

        if (membersSize != 0) {
            StdTypeList typeList = new StdTypeList(membersSize);
            for (int i = 0; i < membersSize; i++) {
                typeList.set(i, membersList.get(i));
            }
            typeList.setImmutable();
            result.add(AnnotationUtils.makeMemberClasses(typeList));
        }

        result.setImmutable();
        return result;
View Full Code Here

TOP

Related Classes of com.android.dx.rop.type.StdTypeList

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.