Package org.apache.flex.abc.semantics

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


                initMethodInfo.setMethodName("FlexInit init method");
                initMethodInfo.setParamTypes(new Vector<Name>(Collections.singleton(new Name("Object"))));
                initMethodInfo.setReturnType(new Name(IASLanguageConstants.void_));
                IMethodVisitor initMethodVisitor = emitter.visitMethod(initMethodInfo);
                initMethodVisitor.visit();
                MethodBodyInfo initMethodBodyInfo = new MethodBodyInfo();
                initMethodBodyInfo.setMethodInfo(initMethodInfo);
                IMethodBodyVisitor initMethodBodyVisitor = initMethodVisitor.visitBody(initMethodBodyInfo);
                initMethodBodyVisitor.visit();
               
                // local0 = temp
                // local1 = module factory argument
                // local2 = style manager
                // local3 = inherited styles array
                InstructionList initMethod = new InstructionList();
                initMethod.addInstruction(ABCConstants.OP_returnvoid);
               
                initMethodBodyVisitor.visitInstructionList(initMethod);
                initMethodBodyVisitor.visitEnd();
                initMethodVisitor.visitEnd();
               
                ITraitVisitor initMethodTraitVisitor =
                    classGen.getCTraitsVisitor().visitMethodTrait(ABCConstants.TRAIT_Method, new Name("init"), 0, initMethodInfo);
                initMethodTraitVisitor.visitStart();
                initMethodTraitVisitor.visitEnd();

                codegenInfoMethod(classGen,
                        flexProject.getCompatibilityVersion(),
                        getMainClassQName(),
                        getPreloaderClassReference(),
                        getRuntimeDPIProviderClassReference(),
                        splashScreenImage,
                        getRootNode(),
                        getTargetAttributes(),
                        flexProject.getLocales(),
                        frame1Info,
                        accessibleClassNames,
                        getFlexInitClassName(),
                        getStylesClassName(),
                        targetSettings.getRuntimeSharedLibraries(),
                        rslInfo,
                        problems,
                        isAppFlexInfo);
               
            }
            else
            {
                MethodInfo initMethodInfo = new MethodInfo();
                initMethodInfo.setMethodName("FlexInit init method");
                initMethodInfo.setParamTypes(new Vector<Name>(Collections.singleton(iModuleFactoryReference.getMName())));
                initMethodInfo.setReturnType(new Name(IASLanguageConstants.void_));
                IMethodVisitor initMethodVisitor = emitter.visitMethod(initMethodInfo);
                initMethodVisitor.visit();
                MethodBodyInfo initMethodBodyInfo = new MethodBodyInfo();
                initMethodBodyInfo.setMethodInfo(initMethodInfo);
                IMethodBodyVisitor initMethodBodyVisitor = initMethodVisitor.visitBody(initMethodBodyInfo);
                initMethodBodyVisitor.visit();
               
                // local0 = temp
                // local1 = module factory argument
View Full Code Here


        IScriptVisitor sv = emitter.visitScript();
        sv.visit();
        MethodInfo init_method = new MethodInfo();
        sv.visitInit(init_method);
       
        MethodBodyInfo init_body = new MethodBodyInfo();
        init_body.setMethodInfo(init_method);
       
        IMethodVisitor mv = emitter.visitMethod(init_method);
        mv.visit();
        IMethodBodyVisitor mbv = mv.visitBody(init_body);
        mbv.visit();
View Full Code Here

        }
       
        IMethodVisitor mv = function_scope.getEmitter().visitMethod(mi);
        mv.visit();
       
        MethodBodyInfo mbi = new MethodBodyInfo();
        mbi.setMethodInfo(mi);
       
        IMethodBodyVisitor mbv = mv.visitBody(mbi);
        mbv.visit();
       
        function_scope.methodBodyVisitor = mbv;
View Full Code Here

     */
    public void generateMXMLDataBindingSetterFunction (MethodInfo mi, IExpressionNode setterExpression, LexicalScope enclosing_scope)
    {
        IMethodVisitor methodVisitor = enclosing_scope.getEmitter().visitMethod(mi);
        methodVisitor.visit();
        MethodBodyInfo methodBodyInfo = new MethodBodyInfo();
        methodBodyInfo.setMethodInfo(mi);
        IMethodBodyVisitor methodBodyVisitor = methodVisitor.visitBody(methodBodyInfo);
        methodBodyVisitor.visit();
       
        //  Set up a lexical scope for this function.
        LexicalScope function_scope = enclosing_scope.pushFrame();
View Full Code Here

     public void generateMXMLDataBindingGetterFunction (MethodInfo mi, List<IExpressionNode> nodes,
                                                        LexicalScope enclosing_scope)
     {
         IMethodVisitor methodVisitor = enclosing_scope.getEmitter().visitMethod(mi);
         methodVisitor.visit();
         MethodBodyInfo methodBodyInfo = new MethodBodyInfo();
         methodBodyInfo.setMethodInfo(mi);
         IMethodBodyVisitor methodBodyVisitor = methodVisitor.visitBody(methodBodyInfo);
         methodBodyVisitor.visit();
        
         //  Set up a lexical scope for this function.
         LexicalScope function_scope = enclosing_scope.pushFrame();
View Full Code Here

        classScope.callVisitEnds();
       
        {
            // Synthesize a constructor.
            iinfo.iInit = new MethodInfo();
            MethodBodyInfo iinit = new MethodBodyInfo();
            iinit.setMethodInfo(iinfo.iInit);
           
            IMethodVisitor mv = emitter.visitMethod(iinfo.iInit);
            mv.visit();
            IMethodBodyVisitor mbv = mv.visitBody(iinit);
           
            InstructionList ctor_insns = new InstructionList();
           
            // Don't even think of removing these instructions!
            // there is lots of code we are generating that assumes that the
            // scopes and such are set up like this!!
            // In particular the data binding code may create anonymous function objects
            // in the constructor that assume "this" is already on the scope stack.
            ctor_insns.addInstruction(OP_getlocal0);
            ctor_insns.addInstruction(OP_pushscope);
           
            // iinitInsns go before the constructsuper opcode.
            ctor_insns.addAll(iinitInsns);
   
            // Call the superclass' constructor after the instance
            // init instructions; this doesn't seem like an abstractly
            // correct sequence, but it's what ASC does.
            ctor_insns.addInstruction(OP_getlocal0);
            ctor_insns.addInstruction(OP_constructsuper, 0);

            // initialize currentState to first state
            // this has to go before other iinit because
            // otherwise setCurrentState will fire off transitions
            setCurrentState(ctor_insns);
           
            if (!getProject().getTargetSettings().getMxmlChildrenAsData())
            {
                // iinitAfterSuperInsns go after the constructsuper opcode.
                ctor_insns.addAll(iinitAfterSuperInsns);
            }
            else
            {
                if (!iinitForNonPublicProperties.isEmpty())
                    ctor_insns.addAll(iinitForNonPublicProperties);
            }
           
            // call the Binding helper to get all the data binding setup code
            addBindingCodeForCtor(ctor_insns);

            // add call to MXMLAttributes
            if (getProject().getTargetSettings().getMxmlChildrenAsData() && numElements > 0)
            {
                // generateMXMLAttributes(attributes);
                FunctionDefinition funcDef = (FunctionDefinition)SemanticUtils.findProperty(classDefinition.getContainedScope(),
                        "generateMXMLAttributes",
                        getProject(), false);
                if (funcDef != null)
                {
                    Name funcName = ((FunctionDefinition)funcDef).getMName(getProject());
                    ctor_insns.addInstruction(OP_getlocal0);          
                    ctor_insns.addAll(mxmlPropertiesInsns);
                    ctor_insns.addInstruction(OP_callpropvoid, new Object[] {funcName, 1 });
                }
            }

            ctor_insns.addInstruction(OP_returnvoid);
           
            mbv.visit();
            mbv.visitInstructionList(ctor_insns);
            mbv.visitEnd();
            mv.visitEnd();
        }
       
        // If the class has static variables with
        // initialization instructions, emit a class
        // init routine.
        if (!cinitInsns.isEmpty())
        {
            cinfo.cInit = new MethodInfo();
            MethodBodyInfo cinit_info = new MethodBodyInfo();
            cinit_info.setMethodInfo(cinfo.cInit);
           
            IMethodVisitor mv = emitter.visitMethod(cinfo.cInit);
            mv.visit();
            IMethodBodyVisitor mbv = mv.visitBody(cinit_info);
            InstructionList cinit_insns   = new InstructionList();
View Full Code Here

    private MethodInfo createNoParameterAnonymousFunction(Name returnType, InstructionList instructionList)
    {
        MethodInfo mi = new MethodInfo();       
        mi.setReturnType(returnType);
       
        MethodBodyInfo methodBodyInfo = new MethodBodyInfo();
        methodBodyInfo.setMethodInfo(mi);

        IMethodVisitor methodVisitor = emitter.visitMethod(mi);
        methodVisitor.visit();       
       
        IMethodBodyVisitor methodBodyVisitor = methodVisitor.visitBody(methodBodyInfo);
View Full Code Here

                                          InstructionList instructions)
    {
        IMethodVisitor mv = enclosing_scope.getEmitter().visitMethod(mi);
        mv.visit();
       
        MethodBodyInfo mbi = new MethodBodyInfo();
        mbi.setMethodInfo(mi);
       
        IMethodBodyVisitor mbv = mv.visitBody(mbi);
        mbv.visit();
       
        mbv.visitInstructionList(instructions);
View Full Code Here

     */
    public static void generateFunction(IABCVisitor abcVisitor, MethodInfo mi, InstructionList functionBody)
    {
        IMethodVisitor methodVisitor = abcVisitor.visitMethod(mi);
        methodVisitor.visit();
        MethodBodyInfo methodBodyInfo = new MethodBodyInfo();
        methodBodyInfo.setMethodInfo(mi);
        IMethodBodyVisitor methodBodyVisitor = methodVisitor.visitBody(methodBodyInfo);
        methodBodyVisitor.visit();
        methodBodyVisitor.visitInstructionList(functionBody);
        methodBodyVisitor.visitEnd();
        methodVisitor.visitEnd();
View Full Code Here

        methodInfo.setParamTypes(EMPTY_PARAM_TYPES);
        final IMethodVisitor methodVisitor = abcVisitor.visitMethod(methodInfo);
        methodVisitor.visit();

        // Generate method body.
        final MethodBodyInfo methodBodyInfo = new MethodBodyInfo();
        methodBodyInfo.setMethodInfo(methodInfo);
        final IMethodBodyVisitor methodBodyVisitor = methodVisitor.visitBody(methodBodyInfo);
        methodBodyVisitor.visit();
        methodBodyVisitor.visitInstructionList(propertyList.closureReduction);
        methodBodyVisitor.visitEnd();
View Full Code Here

TOP

Related Classes of org.apache.flex.abc.semantics.MethodBodyInfo

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.