Examples of MethodBodyInfo


Examples of org.apache.flex.abc.semantics.MethodBodyInfo

            assertLockHeld();
            definedClasses.add(this);
            if (null == classInfo.cInit)
            {
                classInfo.cInit = new MethodInfo();
                MethodBodyInfo m_cinit = new MethodBodyInfo();
                m_cinit.setMethodInfo(classInfo.cInit);

                IMethodVisitor mv = visitMethod(classInfo.cInit);
                mv.visit();
                IMethodBodyVisitor mbv = mv.visitBody(m_cinit);
                mbv.visit();
                mbv.visitInstruction(OP_returnvoid);
                mbv.visitEnd();
                mv.visitEnd();
            }

            visitPooledName(instanceInfo.name);
            visitPooledName(instanceInfo.superName);

            if (instanceInfo.hasProtectedNs())
                visitPooledNamespace(instanceInfo.protectedNs);

            if (null == instanceInfo.iInit)
            {
                instanceInfo.iInit = new MethodInfo();
                MethodBodyInfo iinit = new MethodBodyInfo();
                iinit.setMethodInfo(instanceInfo.iInit);

                IMethodVisitor mv = visitMethod(instanceInfo.iInit);
                mv.visit();

                //  Interfaces need an instance init method,
View Full Code Here

Examples of org.apache.flex.abc.semantics.MethodBodyInfo

        this.baseClass = baseClass;
        cinfo = new ClassInfo();
        cinfo.cInit = new MethodInfo();
        IMethodVisitor cInitVisitor = visitor.visitMethod(cinfo.cInit);
        cInitVisitor.visit();
        MethodBodyInfo cInitMethodBodyInfo = new MethodBodyInfo();
        cInitMethodBodyInfo.setMethodInfo(cinfo.cInit);
        IMethodBodyVisitor cInitMethodBodyVisitor = cInitVisitor.visitBody(cInitMethodBodyInfo);
        cInitMethodBodyVisitor.visit();
        cInitMethodBodyVisitor.visitInstructionList(cinitInstructions);
        cInitMethodBodyVisitor.visitEnd();
        cInitVisitor.visitEnd();

        iinfo = new InstanceInfo();
       
        if(hasProtectedMembers)
        {
            iinfo.flags |= ABCConstants.CONSTANT_ClassProtectedNs;
            iinfo.protectedNs = new Namespace(ABCConstants.CONSTANT_ProtectedNs,
                    className.getSingleQualifier().getName() + ":" +className.getBaseName());
        }
       
        iinfo.interfaceNames = implementedInterfaces.toArray(new Name[implementedInterfaces.size()]);
        iinfo.name = className;
        iinfo.superName = baseClass.getMName(project);
        iinfo.iInit = new MethodInfo();
        iinfo.iInit.setParamTypes(new Vector<Name>(iinitParameterTypes));
        iTraitsInitMethodVisitor = visitor.visitMethod(iinfo.iInit);
        iTraitsInitMethodVisitor.visit();
        MethodBodyInfo iTraitsInitMethodBodyInfo = new MethodBodyInfo();
        iTraitsInitMethodBodyInfo.setMethodInfo(iinfo.iInit);
        iTraitsInitMethodBodyVisitor = iTraitsInitMethodVisitor.visitBody(iTraitsInitMethodBodyInfo);
        iTraitsInitMethodBodyVisitor.visit();
        iTraitsInitMethodBodyVisitor.visitInstructionList(iinitInstructions);

        this.visitor = visitor;
View Full Code Here

Examples of org.apache.flex.abc.semantics.MethodBodyInfo

        scriptTraits.visitClassTrait(ABCConstants.TRAIT_Class, className, 0, cinfo);
        scriptTraits.visitEnd();
        MethodInfo scriptInitMethodInfo = new MethodInfo();
        IMethodVisitor scriptInitMethodVisitor = visitor.visitMethod(scriptInitMethodInfo);
        scriptInitMethodVisitor.visit();
        MethodBodyInfo scriptInitMethodBodyInfo = new MethodBodyInfo();
        scriptInitMethodBodyInfo.setMethodInfo(scriptInitMethodInfo);
        IMethodBodyVisitor scriptInitMethodBodyVisitor = scriptInitMethodVisitor.visitBody(scriptInitMethodBodyInfo);
        scriptInitMethodBodyVisitor.visit();
        InstructionList scriptInitInstructions = new InstructionList();
        scriptInitInstructions.addInstruction(OP_getlocal0);
        scriptInitInstructions.addInstruction(OP_pushscope);
View Full Code Here

Examples of org.apache.flex.abc.semantics.MethodBodyInfo

    {
        setMethodInfo(new MethodInfo());
        this.methodVisitor = getEmitter().visitMethod(this.methodInfo);
        this.methodVisitor.visit();

        MethodBodyInfo mbi = new MethodBodyInfo();
        mbi.setMethodInfo(this.methodInfo);

        this.methodBodyVisitor = this.methodVisitor.visitBody(mbi);
        this.methodBodyVisitor.visit();
        this.traitsVisitor = this.methodBodyVisitor.visitTraits();
View Full Code Here

Examples of org.apache.flex.abc.semantics.MethodBodyInfo

        String staticStr = isStatic ? "static " : "";
        String overrideStr = isOverride ? "override " : "";
        String nativeStr = methodInfo.isNative() ? "native " : "";
        String finalStr = isFinal ? "final " : "";
        printer.println(qualStr + staticStr + nativeStr + finalStr + overrideStr + kindStr + " " + nameStr + "(" + joinOn(",", paramTypeStrings) + "):" + nameToString(methodInfo.getReturnType()));
        MethodBodyInfo mb = getMethodBodyForMethodInfo(methodInfo);
        if (mb != null)
        {
            printer.println("{");
            printer.indent();
            TablePrinter tablePrinter = new TablePrinter(3, 2);
            tablePrinter.addRow(new String[]{"//", "derivedName", methodInfo.getMethodName()});
            tablePrinter.addRow(new String[]{"//", "method_info", String.valueOf(getMethodInfos().getId(mb.getMethodInfo()))});
            tablePrinter.addRow(new String[]{"//", "max_stack", String.valueOf(mb.max_stack)});
            tablePrinter.addRow(new String[]{"//", "max_regs", String.valueOf(mb.max_local)});
            tablePrinter.addRow(new String[]{"//", "scope_depth", String.valueOf(mb.initial_scope)});
            tablePrinter.addRow(new String[]{"//", "max_scope", String.valueOf(mb.max_scope)});
            tablePrinter.addRow(new String[]{"//", "code_length", String.valueOf(mb.code_len)});
            //tablePrinter.addRow(["//", "code_offset", mb.code_offset]);
            tablePrinter.print(printer);
            if (mb.getTraits() != null && mb.getTraits().getTraitCount() > 0)
            {
                printer.println("activation_traits {");
                printer.indent();

                for (Trait trait : mb.getTraits())
                {
                    //var kindStr : String;
                    switch (trait.getKind())
                    {
                        case TRAIT_Var:
                            kindStr = "var";
                            break;
                        case TRAIT_Const:
                            kindStr = "const";
                            break;
                        default:
                            throw new Error("Illegal activation trait in " + methodInfo.getMethodName());
                    }
                    writeSlotTrait(kindStr, trait, false);
                }

                printer.unindent();
                printer.println("}");
            }
            IFlowgraph cfg = mb.getCfg();
            Map<IBasicBlock, String> blockNames = new HashMap<IBasicBlock, String>();
            int i = 0;
            for (IBasicBlock block : cfg.getBlocksInEntryOrder())
            {
                blockNames.put(block, "bb" + i++);
            }
            int offset = 0;
            for (IBasicBlock block : cfg.getBlocksInEntryOrder())
            {
                printer.println(blockNames.get(block));
                printer.indent();
                // TODO: preds
                //printer.println("preds=[" + block.getPredeccessor()mb.blocks[i].getPredIds(mb.blocks).join(", ") + "]");
                Collection<? extends IBasicBlock> succs = block.getSuccessors();
                List<String> succNames = new ArrayList<String>();
                for (IBasicBlock s : succs)
                    succNames.add(blockNames.get(s));

                printer.println("succs=[" + joinOn(",", succNames) + "]");
                /*
                // TODO: implement this with FrameModelEncoder
                if(mb.blocks[i].state != null) {
                    printer.println("verification = " + (mb.blocks[i].state.verifyError == null ? "ok" : "failed: " + mb.blocks[i].state.verifyError));
                }
                */
                tablePrinter = new TablePrinter(4, 2);
                for (int j = 0; j < block.size(); j++)
                {
                    Instruction inst = block.get(j);
                    String constantStr = "";

                    if (inst.hasOperands() && inst.getOperand(0) instanceof Name)
                    {
                        constantStr = nameToString((Name) inst.getOperand(0));
                    }
                    else if (inst.isBranch() && inst.getOpcode() != OP_lookupswitch)
                    {
                        constantStr = blockNames.get(cfg.getBlock((Label) inst.getOperand(0)));
                    }
                    else
                    {
                        switch (inst.getOpcode())
                        {
                            case OP_debugfile:
                            case OP_pushstring:
                                constantStr = "\"" + stringToEscapedString((String) inst.getOperand(0)) + "\"";
                                break;
                            case OP_lookupswitch:
                                constantStr = stringForLookupSwitch(inst, mb, blockNames, cfg);
                                break;
                        }
                    }
                    tablePrinter.addRow(new String[]{offset + "    ",
                            Instruction.decodeOp(inst.getOpcode()),
                            constantStr,
                            inst.isImmediate() ? String.valueOf(inst.getImmediate()) : ""
                            // TODO : Use FrameModelEncoder to keep track
                            // TODO: of stack/local values
                            //(inst.getStackDepth() == null ? "" : "// stack: " + inst.getStackDepth()),
                            //(inst.getState() == null ? "" : "// stack["+inst.getState().stackDepth+"]: " + inst.getState().stackTypeString()),
                            //(inst.getState() == null ? "" : "// locals: " + inst.getState().localsTypeString()),
                            //inst.getVerifyError()
                    });
                    offset++;
                }
                tablePrinter.print(printer);
                printer.unindent();
            }

            printer.unindent();
            printer.println("}");
            if (mb.getExceptions().size() > 0)
            {
                tablePrinter = new TablePrinter(7, 2);
                tablePrinter.addRow(new String[]{"//", "exception", "start", "end", "target", "type string", "name string"});
                for (i = 0; i < mb.getExceptions().size(); i++)
                {
                    ExceptionInfo exception = mb.getExceptions().get(i);
                    tablePrinter.addRow(new String[]{"//", String.valueOf(i), String.valueOf(exception.getFrom().getPosition()),
                            String.valueOf(exception.getTo().getPosition()),
                            String.valueOf(exception.getTarget().getPosition()),
                            nameToString(exception.getExceptionType()),
                            nameToString(exception.getCatchVar())});
View Full Code Here

Examples of org.apache.flex.abc.semantics.MethodBodyInfo

        else if ( !this.iinitInsns.isEmpty() )
        {
            //  Synthesize a constructor.

            this.iinfo.iInit = new MethodInfo();
            MethodBodyInfo iinit = new MethodBodyInfo();
            iinit.setMethodInfo(this.iinfo.iInit);
           
            IMethodVisitor mv = emitter.visitMethod(this.iinfo.iInit);
            mv.visit();
            IMethodBodyVisitor mbv = mv.visitBody(iinit);
            InstructionList ctor_insns = new InstructionList();
View Full Code Here

Examples of org.apache.flex.abc.semantics.MethodBodyInfo

            //  Speculatively initialize the class' cinit
            //  (static class initializer routine)'s data
            //  structures; the code generator may need to
            //  store information in them.
            this.cinfo.cInit = new MethodInfo();
            MethodBodyInfo cinit_info = new MethodBodyInfo();
            cinit_info.setMethodInfo(this.cinfo.cInit);
       
            this.classStaticScope.setMethodInfo(this.cinfo.cInit);
            this.classStaticScope.methodVisitor = emitter.visitMethod(this.cinfo.cInit);
            this.classStaticScope.methodVisitor.visit();
            this.classStaticScope.methodBodyVisitor = this.classStaticScope.methodVisitor.visitBody(cinit_info);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.