Package com.strobel.reflection.emit

Examples of com.strobel.reflection.emit.LocalBuilder


            compiler.generator.putField(_boxValueField);
        }

        @Override
        void emitStore() {
            final LocalBuilder value = compiler.getLocal(variable.getType());
            compiler.generator.emitStore(value);
            emitLoadBox();
            compiler.generator.emitLoad(value);
            compiler.freeLocal(value);
            compiler.generator.putField(_boxValueField);
View Full Code Here


            compiler.generator.putField(_boxValueField);
        }

        @Override
        void emitStore() {
            final LocalBuilder value = compiler.getLocal(variable.getType());
            compiler.generator.emitStore(value);
            compiler.generator.emitLoad(_boxLocal);
            compiler.generator.emitLoad(value);
            compiler.freeLocal(value);
            compiler.generator.putField(_boxValueField);
View Full Code Here

    LocalBuilder getNamedLocal(final Type type, final ParameterExpression variable) {
        assert type != null && variable != null
            : "type != null && variable != null";

        final LocalBuilder lb = generator.declareLocal(variable.getName(), type);

        if (emitDebugSymbols() && variable.getName() != null) {
            _tree.getDebugInfoGenerator().setLocalName(lb, variable.getName());
        }
View Full Code Here

    LocalBuilder getLocal(final Type<?> type) {
        assert type != null
            : "type != null";

        final LocalBuilder local = _freeLocals.poll(type);

        if (local != null) {
            assert type.equals(local.getLocalType())
                : "type.equals(local.getLocalType())";

            return local;
        }
View Full Code Here

        if (!TypeUtils.hasReferenceConversion(rValue.getType(), lValue.getType())) {
            generator.emitConversion(rValue.getType(), lValue.getType());
        }

        LocalBuilder temp = null;

        final int emitAs = flags & CompilationFlags.EmitAsTypeMask;

        if (emitAs != CompilationFlags.EmitAsVoidType) {
            // Save the value so we can return it.
View Full Code Here

        if ((rightNodeType == ExpressionType.Increment ||
             rightNodeType == ExpressionType.Decrement) &&
            right.getType() == PrimitiveTypes.Integer) {

            final LocalBuilder local = _scope.getLocalForVariable(variable);

            if (local != null) {
                generator.increment(
                    local,
                    rightNodeType == ExpressionType.Increment ? 1 : -1
View Full Code Here

        if (!TypeUtils.hasReferenceConversion(right.getType(), left.getType())) {
            generator.emitConversion(right.getType(), left.getType());
        }

        // Save the expression value, if needed
        LocalBuilder temp = null;

        if (emitAs != CompilationFlags.EmitAsVoidType) {
            generator.dup();
            generator.emitStore(temp = getLocal(node.getType()));
        }
View Full Code Here

        generator.markLabel(end);
    }

    private void emitLambdaReferenceCoalesce(final BinaryExpression b) {
        final LocalBuilder operandStorage = getLocal(b.getLeft().getType());

        final Label end = generator.defineLabel();
        final Label notNull = generator.defineLabel();

        emitExpression(b.getLeft());
View Full Code Here

        else {
            operandType = leftType;
        }

        if (leftType != operandType) {
            final LocalBuilder rightStorage = getLocal(rightType);

            generator.emitStore(rightStorage);
            generator.emitConversion(leftType, operandType);
            generator.emitLoad(rightStorage);
View Full Code Here

        return finalRightType;
    }

    private Type unboxLeftBinaryOperand(final Type leftType, final Type rightType) {
        final Type finalLeftType = TypeUtils.getUnderlyingPrimitive(leftType);
        final LocalBuilder rightStorage = getLocal(rightType);

        generator.emitStore(rightStorage);
        generator.emitUnbox(finalLeftType);
        generator.emitLoad(rightStorage);
View Full Code Here

TOP

Related Classes of com.strobel.reflection.emit.LocalBuilder

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.