Package org.jruby.compiler.ir.operands

Examples of org.jruby.compiler.ir.operands.ClassMetaObject


        Operand superClass = (superNode == null) ? MetaObject.create(IRClass.getCoreClass("Object")) : build(superNode, s);
        String className = cpath.getName();
        Operand container = getContainerFromCPath(cpath, s);

        IRClass c = new IRClass(s, container, superClass, className, classNode.getScope());
        ClassMetaObject cmo = (ClassMetaObject) MetaObject.create(c);
        s.getNearestModule().getRootMethod().addInstr(new DefineClassInstr(cmo, c.superClass));
        s.getNearestModule().addClass(c);

        build(classNode.getBodyNode(), c.getRootMethod());
View Full Code Here


        Operand receiver = build(sclassNode.getReceiverNode(), s);
        IRClass mc = new IRMetaClass(s, receiver, sclassNode.getScope());

        // Record the new class as being lexically defined in scope s
        s.getNearestModule().addClass(mc);
        ClassMetaObject cmo = (ClassMetaObject)MetaObject.create(mc);
        s.getNearestModule().getRootMethod().addInstr(new DefineClassInstr(cmo, mc.superClass));

        build(sclassNode.getBodyNode(), mc.getRootMethod());

        return Nil.NIL;
View Full Code Here

    }

    @Override
    public Label interpret(InterpreterContext interp, IRubyObject self) {
        Ruby       runtime   = interp.getRuntime();
        ClassMetaObject cmo  = (ClassMetaObject)getOperand1();
        IRScope    scope     = cmo.scope;
        RubyModule container = cmo.getContainer(interp, runtime);
        RubyModule module;
        if (scope instanceof IRMetaClass) {
            module = container.getMetaClass();
        } else {
            RubyClass sc = (RubyClass)getOperand2().retrieve(interp);
            module = container.defineOrGetClassUnder(scope.getName(), sc == null ? runtime.getObject() : sc);
        }

        cmo.interpretBody(interp, interp.getContext(), module);
        return null;
    }
View Full Code Here

TOP

Related Classes of org.jruby.compiler.ir.operands.ClassMetaObject

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.