Package st.gravel.support.compiler.ast

Examples of st.gravel.support.compiler.ast.MethodNode


    MethodMapping methodMapping = ImageBootstrapper.systemMapping
        .methodMappingForNil_(selector);
    if (methodMapping == null) {
      return createDNUHandleForNil();
    }
    MethodNode methodNode = methodMapping.methodNode();
    return inlineBlocks(methodNode, ImageBootstrapper.systemMapping
        .nilClassMapping().reference(), JVMDefinedObjectType.factory.object());
  }
View Full Code Here


    MethodMapping methodMapping = ImageBootstrapper.systemMapping
        .methodMappingFor_methodName_(receiverClass, selector);
    if (methodMapping == null) {
      return createDNUHandle(receiverClass).asType(type);
    }
    MethodNode methodNode = methodMapping
        .methodNode();
    return inlineBlocks(methodNode, ImageBootstrapper.systemMapping
        .classMappingForJavaClass_(receiverClass).reference(), (JVMNonPrimitiveType) ImageBootstrapper.systemMapping.compilerTools().jvmTypeForClass_(receiverClass));
  }
View Full Code Here

    super();
    this.reference = reference;
  }

  public Object compile_classified_(String source, String protocol) {
    final MethodNode method = Parser.factory.parseMethod_(source)
        .withProtocol_(protocol);

    ClassDescriptionNode currentClassNode = definitionClassNode();
    final MethodNode current = currentClassNode.methodOrNilAt_(method
        .selector());
    Symbol targetPackageName = current == null ? definitionClassNode()
        .packageName() : current.packageName();
    if (targetPackageName == null) {
      targetPackageName = definitionClassNode().packageName();
      if (targetPackageName == null) {
        targetPackageName = current.packageName();
      }
    }
    SystemDefinitionNode newSystem = ImageBootstrapper.systemMapping
        .systemDefinitionNode().copyUpdatePackage_do_(
            targetPackageName,
View Full Code Here

  public MethodMirror getMethodMirror(Object selObject) {
    if (!(selObject instanceof Symbol))
      return null;
    Symbol selector = (Symbol) selObject;
    MethodNode method = getMethodNode(selector);
    if (method == null) {
      return null;
    }
    return new MethodMirror(method, this);
  }
View Full Code Here

    }
    return new MethodMirror(method, this);
  }

  private MethodNode getMethodNode(Symbol selector) {
    MethodNode method = runtimeClassNode().methodOrNilAt_(
        selector.asString());
    return method;
  }
View Full Code Here

      return _res;
    }

    public MethodNode parseMethod_(final String _aString) {
      final Parser _parser;
      final MethodNode _res;
      _parser = this.source_(_aString);
      _res = _parser.parseMethod();
      st.gravel.support.jvm.ObjectExtensions.assert_(this, _parser.atEnd());
      return _res;
    }
View Full Code Here

      return _res;
    }

    public MethodNode parseMethod_sourceFile_(final String _aString, final SourceFile _sourceFile) {
      final Parser _parser;
      final MethodNode _res;
      _parser = this.source_sourceFile_(_aString, _sourceFile);
      _res = _parser.parseMethod();
      st.gravel.support.jvm.ObjectExtensions.assert_(this, _parser.atEnd());
      return _res;
    }
View Full Code Here

    _owner[0] = SelfNode.factory.basicNew();
    return st.gravel.support.jvm.ArrayExtensions.collect_(_methods, ((st.gravel.support.jvm.Block1<MethodNode, MethodNode>) (new st.gravel.support.jvm.Block1<MethodNode, MethodNode>() {

      @Override
      public MethodNode value_(final MethodNode _m) {
        final MethodNode _fieldAccessed;
        _fieldAccessed = ((MethodNode) SystemMappingUpdater.this.localLink_instVars_ownerReference_owner_(_m, _instVars, _ownerReference, _owner[0]));
        return (MethodNode) _fieldAccessed;
      }
    })));
  }
View Full Code Here

    }
    return _arguments[0].toArray(new VariableDeclarationNode[_arguments[0].size()]);
  }

  public java.lang.invoke.MethodHandle buildNonOptimized() {
    final MethodNode _node;
    final VariableDeclarationNode[] _arguments;
    final List<Expression>[] _sendArgs;
    _sendArgs = new List[1];
    for (final String _each : _copiedArgumentNames) {
      final String _newTempName;
      _newTempName = BlockInliner.this.newTempName_for_(_each, _methodNode);
      _copiedArgRenames.put(_each, _newTempName);
    }
    _arguments = this.buildMethodNodeArguments_(_methodNode);
    _sendArgs[0] = new java.util.ArrayList();
    st.gravel.support.jvm.ArrayExtensions.with_do_(_astConstants, _methodNode.arguments(), new st.gravel.support.jvm.Block2<Object, BlockSendArgument, VariableDeclarationNode>() {

      @Override
      public Object value_value_(final BlockSendArgument _astConstant, final VariableDeclarationNode _arg) {
        if (_astConstant == null) {
          return _sendArgs[0].add(_arg.asVariableNode());
        } else {
          return _sendArgs[0].add(BlockInliner.this.renamedBlockNodeFor_(_astConstant));
        }
      }
    });
    _node = this.newMethodNode_arguments_body_(_systemMapping.selectorConverter().selectorForNumArgs_(_arguments.length), _arguments, SequenceNode.factory.return_(SelfNode.factory.basicNew().send_withAll_(_methodNode.selector(), _sendArgs[0].toArray(new Expression[_sendArgs[0].size()]))));
    this.log_text_("nonOptimized: ", _node.sourceString());
    return this.compileMethodNode_allowBlockInlining_(this.link_(_node), false);
  }
View Full Code Here

    return this.compileMethodNode_allowBlockInlining_(this.link_(_node), false);
  }

  public java.lang.invoke.MethodHandle buildOptimized() {
    final MethodNode[] _node;
    MethodNode _inlined;
    final VariableDeclarationNode[] _arguments;
    final String _selector;
    _node = new MethodNode[1];
    this.log_text_("methodNode: ", _methodNode.sourceString());
    _node[0] = this.link_(_methodNode);
    this.log_text_("linked methodNode: ", _node[0].sourceString());
    for (final String _each : _copiedArgumentNames) {
      final String _newTempName;
      _newTempName = BlockInliner.this.newTempName_for_(_each, _node[0]);
      _copiedArgRenames.put(_each, _newTempName);
    }
    _arguments = this.buildMethodNodeArguments_(_node[0]);
    _selector = _systemMapping.selectorConverter().selectorForNumArgs_(_arguments.length);
    this.log_text_("selector: ", _selector);
    _node[0] = this.newMethodNode_arguments_body_(_selector, _arguments, _node[0].body()).withNlrMarker_(_node[0].nlrMarker());
    this.log_text_("node: ", _node[0].sourceString());
    st.gravel.support.jvm.ArrayExtensions.with_do_(_astConstants, _methodNode.arguments(), new st.gravel.support.jvm.Block2<Object, BlockSendArgument, VariableDeclarationNode>() {

      @Override
      public Object value_value_(final BlockSendArgument _astConstant, final VariableDeclarationNode _arg) {
        if (_astConstant != null) {
          BlockInliner.this.log_text_("block " + _arg.name() + ": ", _astConstant.blockNode().sourceString());
          return _node[0] = ((MethodNode) VariableNodeReplacer.factory.in_replace_with_(_node[0], _arg.name(), BlockInliner.this.renamedBlockNodeFor_(_astConstant)));
        }
        return BlockInliner.this;
      }
    });
    _inlined = LiteralSendInliner.factory.inline_(_node[0]);
    _inlined = this.link_(_inlined);
    this.log_text_("inlined: ", _inlined.sourceString());
    return this.compileMethodNode_(_inlined);
  }
View Full Code Here

TOP

Related Classes of st.gravel.support.compiler.ast.MethodNode

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.