Package org.apache.flex.abc.semantics

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


        ctor.setNamespaceReference(NamespaceDefinition.getCodeModelImplicitDefinitionNamespace());
        ctor.setTypeReference(TYPE_FUNCTION);
        // NOTE: don't set a return type for constructors
        ctor.setReturnTypeReference(null);

        MethodInfo mInfo = iinfo.iInit;
        int paramTypesSize = mInfo.getParamTypes().size();
        final ParameterDefinition params[] = new ParameterDefinition[paramTypesSize + (mInfo.needsRest() ? 1 : 0)];
        if (params.length > 0)
        {
            Vector<PooledValue> defaultValues = mInfo.getDefaultValues();
            int firstOptionalParam = paramTypesSize - defaultValues.size();
            for (int i = 0; i < paramTypesSize; i++)
            {
                final Name paramType = mInfo.getParamTypes().get(i);
                final String paramName = i < mInfo.getParamNames().size() ? mInfo.getParamNames().get(i) : MethodInfo.UNKNOWN_PARAM_NAME;
                params[i] = new ParameterDefinition(paramName);
                params[i].setTypeReference(paramType == null ? TYPE_ANY : getReference(paramType));
                if (i >= firstOptionalParam)
                {
                    Object defaultValue = defaultValues.get(i - firstOptionalParam).getValue();
                    params[i].setDefaultValue(defaultValue);
                }
            }

            if (mInfo.needsRest())
            {
                ParameterDefinition rest = new ParameterDefinition(MethodInfo.UNKNOWN_PARAM_NAME);
                rest.setRest();
                rest.setTypeReference(ReferenceFactory.builtinReference(IASLanguageConstants.BuiltinType.ARRAY));
                params[paramTypesSize] = rest;
View Full Code Here


     * @return Instructions for array data and a map of closures.
     */
    public InstructionListAndClosure reduceRule(ICSSNode site, InstructionListAndClosure selector, PairOfInstructionLists propertyList)
    {
        // Generate anonymous function.
        final MethodInfo methodInfo = new MethodInfo();
        String miName = ((CSSRule)site).getSelectorGroup().get(0).getElementName();
        if (mediaQueryString != null)
        {
            pushNumericConstant(ICSSRuntimeConstants.MEDIA_QUERY, selector.arrayReduction);
            selector.arrayReduction.addInstruction(ABCConstants.OP_pushstring, mediaQueryString);

            miName = mediaQueryString + "_" + miName;
            if (mediaQueryMap.containsKey(mediaQueryString))
            {
                ArrayList<String> factoryList = mediaQueryMap.get(mediaQueryString);
                factoryList.add(miName);
            }
            else
            {
                ArrayList<String> factoryList = new ArrayList<String>();
                factoryList.add(miName);
                mediaQueryMap.put(mediaQueryString, factoryList);
            }
        }
        methodInfo.setMethodName(miName);
        methodInfo.setParamTypes(EMPTY_PARAM_TYPES);
        final IMethodVisitor methodVisitor = abcVisitor.visitMethod(methodInfo);
        methodVisitor.visit();

        // Generate method body.
        final MethodBodyInfo methodBodyInfo = new MethodBodyInfo();
View Full Code Here

        throw new IllegalArgumentException("Unable to find ClassInfo index for " + info);
    }

    private void emitScriptInfo(ScriptInfo info)
    {
        final MethodInfo scriptInit = info.getInit();
        final int nRequiredArguments =
            scriptInit.getParamTypes().size() - scriptInit.getDefaultValues().size();
        if (nRequiredArguments > 0)
            diagnosticsVisitor.scriptInitWithRequiredArguments(info, scriptInit);
        w.writeU30(getMethodId(scriptInit));
        emitTraits(info.getTraits());
    }
View Full Code Here

        }
    }

    private void emitMethodBody(MethodBodyInfo f) throws Exception
    {
        MethodInfo signature = f.getMethodInfo();

        w.writeU30(getMethodId(signature));
        //  Note: computeFrameCounts() called at MethodBodyInfo.visitEnd().
        w.writeU30(f.getMaxStack());

        int max_local = f.getLocalCount();
        if (signature.getParamCount() > max_local)
            max_local = signature.getParamCount();

        w.writeU30(max_local);

        w.writeU30(f.getInitScopeDepth());
        w.writeU30(f.getMaxScopeDepth());
View Full Code Here

            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();
View Full Code Here

        this.project = project;
        this.className = className;
        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);
View Full Code Here

        sv.visit();
        ITraitsVisitor scriptTraits = sv.visitTraits();
        scriptTraits.visit();
        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);
View Full Code Here

            Collection<Object> defaultParameterValues,
            boolean needsRest,
            int functionTraitKind,
            InstructionList body)
    {
        MethodInfo mi = new MethodInfo();
        for (Object defaultParameterValue : defaultParameterValues)
            mi.addDefaultValue(new PooledValue(defaultParameterValue));
        mi.setParamTypes(new Vector<Name>(parameterTypes));
        mi.setReturnType(returnType);
        if (needsRest)
            mi.setFlags(mi.getFlags() | ABCConstants.METHOD_Needrest);
        FunctionGeneratorHelper.generateFunction(visitor, mi, body);
        return traits.visitMethodTrait(functionTraitKind, methodName, 0, mi);
    }
View Full Code Here

        setFunctionName(name);
    }

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

        MethodBodyInfo mbi = new MethodBodyInfo();
        mbi.setMethodInfo(this.methodInfo);
View Full Code Here

     */
    protected void traverseScript (int id, ScriptInfo scriptInfo)
    {
        printer.println("// script " + id);
        traverseScriptTraits(scriptInfo.getTraits(), scriptInfo);
        MethodInfo initMethodInfo = scriptInfo.getInit();
        traverseScriptInit(initMethodInfo, scriptInfo, id);
        printer.println("");
    }
View Full Code Here

TOP

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

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.