<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/org/jruby/ast/FCallManyArgsBlockNode.java</filename>
    </added>
    <added>
      <filename>src/org/jruby/ast/FCallManyArgsBlockPassNode.java</filename>
    </added>
    <added>
      <filename>src/org/jruby/ast/FCallManyArgsNode.java</filename>
    </added>
    <added>
      <filename>src/org/jruby/ast/FCallSpecialArgBlockNode.java</filename>
    </added>
    <added>
      <filename>src/org/jruby/ast/FCallSpecialArgBlockPassNode.java</filename>
    </added>
    <added>
      <filename>src/org/jruby/ast/FCallSpecialArgNode.java</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -16,6 +16,6 @@
 	&lt;classpathentry kind=&quot;lib&quot; path=&quot;build_lib/joda-time-1.5.1.jar&quot;/&gt;
 	&lt;classpathentry kind=&quot;lib&quot; path=&quot;build_lib/jna-posix.jar&quot;/&gt;
 	&lt;classpathentry kind=&quot;lib&quot; path=&quot;build_lib/bytelist-0.1.jar&quot;/&gt;
-	&lt;classpathentry kind=&quot;lib&quot; path=&quot;build_lib/jvyamlb-0.2.jar&quot;/&gt;
+	&lt;classpathentry kind=&quot;lib&quot; path=&quot;build_lib/jvyamlb-0.2.3.jar&quot;/&gt;
 	&lt;classpathentry kind=&quot;output&quot; path=&quot;build/classes/jruby&quot;/&gt;
 &lt;/classpath&gt;</diff>
      <filename>.classpath</filename>
    </modified>
    <modified>
      <diff>@@ -89,7 +89,7 @@
         &lt;java-data xmlns=&quot;http://www.netbeans.org/ns/freeform-project-java/2&quot;&gt;
             &lt;compilation-unit&gt;
                 &lt;package-root&gt;${src.dir}&lt;/package-root&gt;
-                &lt;classpath mode=&quot;compile&quot;&gt;lib/bsf.jar:build_lib/junit.jar:build_lib/jline-0.9.93.jar:build_lib/asm-3.0.jar:build_lib/asm-commons-3.0.jar:build_lib/asm-util-3.0.jar:build_lib/jna.jar:build_lib/nailgun-0.7.1.jar:build_lib/joni.jar:build_lib/joda-time-1.5.1.jar:build_lib/jna-posix.jar:build_lib/bytelist-0.1.jar:build_lib/jvyamlb-0.2.jar:build_lib/dynalang-0.3.jar&lt;/classpath&gt;
+                &lt;classpath mode=&quot;compile&quot;&gt;lib/bsf.jar:build_lib/junit.jar:build_lib/jline-0.9.93.jar:build_lib/asm-3.0.jar:build_lib/asm-commons-3.0.jar:build_lib/asm-util-3.0.jar:build_lib/jna.jar:build_lib/nailgun-0.7.1.jar:build_lib/joni.jar:build_lib/joda-time-1.5.1.jar:build_lib/jna-posix.jar:build_lib/bytelist-0.1.jar:build_lib/jvyamlb-0.2.3.jar:build_lib/dynalang-0.3.jar&lt;/classpath&gt;
                 &lt;built-to&gt;${jruby.classes.dir}&lt;/built-to&gt;
                 &lt;built-to&gt;${lib.dir}/jruby.jar&lt;/built-to&gt;
                 &lt;javadoc-built-to&gt;docs/api&lt;/javadoc-built-to&gt;</diff>
      <filename>nbproject/project.xml</filename>
    </modified>
    <modified>
      <diff>@@ -78,17 +78,19 @@ public class ArrayNode extends ListNode implements ILiteralNode {
     
     @Override
     public IRubyObject interpret(Ruby runtime, ThreadContext context, IRubyObject self, Block aBlock) {
+        IRubyObject[] array = interpretPrimitive(runtime, context, self, aBlock);
+        
+        return lightweight ? runtime.newArrayNoCopyLight(array) : runtime.newArrayNoCopy(array);        
+    }
+    
+    public IRubyObject[] interpretPrimitive(Ruby runtime, ThreadContext context, IRubyObject self, Block aBlock) {
         int size = size();
         IRubyObject[] array = new IRubyObject[size];
         
         for (int i = 0; i &lt; size; i++) {
             array[i] = get(i).interpret(runtime, context, self, aBlock);
         }
-   
-        if (lightweight) {
-            return runtime.newArrayNoCopyLight(array);
-        }
-        
-        return runtime.newArrayNoCopy(array);
+
+        return array;
     }
 }</diff>
      <filename>src/org/jruby/ast/ArrayNode.java</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,6 @@ import org.jruby.ast.types.INameNode;
 import org.jruby.ast.visitor.NodeVisitor;
 import org.jruby.evaluator.ASTInterpreter;
 import org.jruby.evaluator.Instruction;
-import org.jruby.exceptions.JumpException;
 import org.jruby.javasupport.util.RuntimeHelpers;
 import org.jruby.lexer.yacc.ISourcePosition;
 import org.jruby.runtime.Block;
@@ -56,11 +55,12 @@ public class FCallNode extends Node implements INameNode, IArgumentNode, BlockAc
     private Node iterNode;
     public CallSite callAdapter;
 
+    @Deprecated
     public FCallNode(ISourcePosition position, String name, Node argsNode) {
         this(position, name, argsNode, null);
     }
     
-    public FCallNode(ISourcePosition position, String name, Node argsNode, Node iterNode) {
+    protected FCallNode(ISourcePosition position, String name, Node argsNode, Node iterNode) {
         super(position, NodeType.FCALLNODE);
         setArgsNode(argsNode);
         this.iterNode = iterNode;
@@ -131,17 +131,9 @@ public class FCallNode extends Node implements INameNode, IArgumentNode, BlockAc
     
     @Override
     public IRubyObject interpret(Ruby runtime, ThreadContext context, IRubyObject self, Block aBlock) {
-        IRubyObject[] args = ASTInterpreter.setupArgs(runtime, context, argsNode, self, aBlock);
-        Block block = ASTInterpreter.getBlock(runtime, context, self, aBlock, iterNode);
+        assert false : &quot;Should not happen anymore&quot;;
 
-        // No block provided lets look at fast path for STI dispatch.
-        if (!block.isGiven()) {
-            return callAdapter.call(context, self, args);
-        }
-
-        return iterNode instanceof IterNode ?
-            callAdapter.callIter(context, self, args, block) :
-            callAdapter.call(context, self, args, block);
+        return null;
     }
     
     public Block getBlock(ThreadContext context, IRubyObject self) {</diff>
      <filename>src/org/jruby/ast/FCallNode.java</filename>
    </modified>
    <modified>
      <diff>@@ -74,6 +74,9 @@ import org.jruby.ast.DRegexpNode;
 import org.jruby.ast.DStrNode;
 import org.jruby.ast.DotNode;
 import org.jruby.ast.EvStrNode;
+import org.jruby.ast.FCallManyArgsBlockNode;
+import org.jruby.ast.FCallManyArgsBlockPassNode;
+import org.jruby.ast.FCallManyArgsNode;
 import org.jruby.ast.FCallNoArgBlockNode;
 import org.jruby.ast.FCallNoArgBlockPassNode;
 import org.jruby.ast.FCallNoArgNode;
@@ -81,6 +84,9 @@ import org.jruby.ast.FCallNode;
 import org.jruby.ast.FCallOneArgBlockNode;
 import org.jruby.ast.FCallOneArgBlockPassNode;
 import org.jruby.ast.FCallOneArgNode;
+import org.jruby.ast.FCallSpecialArgBlockNode;
+import org.jruby.ast.FCallSpecialArgBlockPassNode;
+import org.jruby.ast.FCallSpecialArgNode;
 import org.jruby.ast.FCallThreeArgBlockNode;
 import org.jruby.ast.FCallThreeArgBlockPassNode;
 import org.jruby.ast.FCallThreeArgNode;
@@ -911,7 +917,9 @@ public class ParserSupport {
                 
                 return new FCallThreeArgNode(union(operation, args), name, args);
             default:
-                return new FCallNode(union(operation, args), name, args, iter);
+                if (iter != null) return new FCallManyArgsBlockNode(union(operation, args), name, args, (IterNode) iter);
+
+                return new FCallManyArgsNode(union(operation, args), name, args);
         }
     }
     
@@ -921,7 +929,7 @@ public class ParserSupport {
         Node args = blockPass.getArgsNode();
         
         if (args == null) return new FCallNoArgBlockPassNode(position, name, args, blockPass);
-        if (!(args instanceof ArrayNode)) return new FCallNode(position, name, args, blockPass);
+        if (!(args instanceof ArrayNode)) return new FCallSpecialArgBlockPassNode(position, name, args, blockPass);
         
         switch (((ArrayNode) args).size()) {
             case 0:  // foo()
@@ -933,26 +941,21 @@ public class ParserSupport {
             case 3:
                 return new FCallThreeArgBlockPassNode(position, name, (ArrayNode) args, blockPass);
             default:
-                return new FCallNode(position, name, args, blockPass);
+                return new FCallManyArgsBlockPassNode(position, name, args, blockPass);
         }        
     }
     
     public Node new_fcall(Token operation, Node args, Node iter) {
         if (args == null) return new_fcall_noargs(operation, (IterNode) iter);
         if (args instanceof ArrayNode) return new_fcall_simpleargs(operation, (ArrayNode) args, iter);
-
-        String name = (String) operation.getValue();
-
         if (args instanceof BlockPassNode) {
-            if (iter != null) {
-                throw new SyntaxException(PID.BLOCK_ARG_AND_BLOCK_GIVEN, iter.getPosition(), &quot;Both block arg and actual block given.&quot;);
-            }
+            if (iter == null) return new_fcall_blockpass(operation, (BlockPassNode) args);
 
-            return new_fcall_blockpass(operation, (BlockPassNode) args);
+            throw new SyntaxException(PID.BLOCK_ARG_AND_BLOCK_GIVEN, iter.getPosition(), &quot;Both block arg and actual block given.&quot;);
         }
-        
 
-        return new FCallNode(union(operation, args), name, args, iter);
+        if (iter != null) new FCallSpecialArgBlockNode(union(operation, args), (String) operation.getValue(), args, (IterNode) iter);
+        return new FCallSpecialArgNode(union(operation, args), (String) operation.getValue(), args);
     }
 
     public Node new_super(Node args, Token operation) {</diff>
      <filename>src/org/jruby/parser/ParserSupport.java</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7200b78df4a661a340f59c560a37809504e80cb7</id>
    </parent>
  </parents>
  <author>
    <name>enebo</name>
    <email>enebo@961051c9-f516-0410-bf72-c9f7e237a7b7</email>
  </author>
  <url>http://github.com/bobmcwhirter/jruby/commit/5aaa2fda096d764813eb98a7d9ea1ad3412a0ccf</url>
  <id>5aaa2fda096d764813eb98a7d9ea1ad3412a0ccf</id>
  <committed-date>2008-08-15T20:36:40-07:00</committed-date>
  <authored-date>2008-08-15T20:36:40-07:00</authored-date>
  <message>Update jvYAML for eclipse+netbeans
Finish Specialization of FCallNode

git-svn-id: http://svn.codehaus.org/jruby/trunk/jruby@7473 961051c9-f516-0410-bf72-c9f7e237a7b7</message>
  <tree>7391b71b361a52ffd49869e35bff6d54cc3d1f84</tree>
  <committer>
    <name>enebo</name>
    <email>enebo@961051c9-f516-0410-bf72-c9f7e237a7b7</email>
  </committer>
</commit>
