[Jython-checkins] SF.net SVN: jython: [2963]
trunk/jython/src/org/python/compiler/ CodeCompiler.java
From: <cg...@us...> - 2006-10-17 02:42:19
|
Revision: 2963 http://svn.sourceforge.net/jython/?rev=2963&view=rev Author: cgroves Date: 2006-10-16 19:42:13 -0700 (Mon, 16 Oct 2006) Log Message: ----------- get var names from scope.up rather than going distance scopes up to lookup names. scope.up is already the correct function or top scope as it's calculated in ScopesCompiler.endScope. The distance is only needed for the actual loading of the scope when its fully nested in intervening class scopes in the bytecode. Modified Paths: -------------- trunk/jython/src/org/python/compiler/CodeCompiler.java Modified: trunk/jython/src/org/python/compiler/CodeCompiler.java =================================================================== --- trunk/jython/src/org/python/compiler/CodeCompiler.java 2006-10-17 02:38:13 UTC (rev 2962) +++ trunk/jython/src/org/python/compiler/CodeCompiler.java 2006-10-17 02:42:13 UTC (rev 2963) @@ -379,9 +379,8 @@ int getclosure; public boolean makeClosure(ScopeInfo scope) throws Exception { - Vector freevars = scope.freevars; - if (freevars == null) return false; - int n = freevars.size(); + if (scope == null || scope.freevars == null) return false; + int n = scope.freevars.size(); if (n == 0) return false; if (mrefs.getclosure == 0) { @@ -393,20 +392,16 @@ code.iconst(n); code.anewarray(code.pool.Class("org/python/core/PyObject")); code.astore(tmp); - Hashtable containingSymbolTable = scope.tbl; - int distance = scope.distance; - for(int i = 0; i < distance; i++){ - scope = scope.up; - containingSymbolTable = scope.tbl; - } + Hashtable upTbl = scope.up.tbl; for(int i=0; i<n; i++) { code.aload(tmp); code.iconst(i); loadFrame(); - for(int j = 1; j < distance; j++) { + for(int j = 1; j < scope.distance; j++) { loadf_back(); } - code.iconst(((SymInfo)containingSymbolTable.get(freevars.elementAt(i))).env_index); + SymInfo symInfo = (SymInfo)upTbl.get(scope.freevars.elementAt(i)); + code.iconst(symInfo.env_index); code.invokevirtual(getclosure); code.aastore(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[Jython-checkins] SF.net SVN: jython: [3122]
trunk/jython/src/org/python/compiler/ CodeCompiler.java
From: <cg...@us...> - 2007-02-25 22:56:05
|
Revision: 3122 http://svn.sourceforge.net/jython/?rev=3122&view=rev Author: cgroves Date: 2007-02-25 14:56:03 -0800 (Sun, 25 Feb 2007) Log Message: ----------- use invoke if there are no keywords in addition to if keywords is null Modified Paths: -------------- trunk/jython/src/org/python/compiler/CodeCompiler.java Modified: trunk/jython/src/org/python/compiler/CodeCompiler.java =================================================================== --- trunk/jython/src/org/python/compiler/CodeCompiler.java 2007-02-24 14:50:53 UTC (rev 3121) +++ trunk/jython/src/org/python/compiler/CodeCompiler.java 2007-02-25 22:56:03 UTC (rev 3122) @@ -6,7 +6,6 @@ import java.util.Hashtable; import java.util.Stack; import java.util.Vector; - import org.python.core.CompilerFlags; import org.python.core.PyComplex; import org.python.core.PyFloat; @@ -1648,7 +1647,7 @@ } // Detect a method invocation with no keywords - if (node.keywords == null && node.starargs == null && + if ((node.keywords == null || node.keywords.length == 0)&& node.starargs == null && node.kwargs == null && node.func instanceof Attribute) { return Invoke((Attribute) node.func, values); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[Jython-checkins] SF.net SVN: jython: [4432]
trunk/jython/src/org/python/compiler/ CodeCompiler.java
From: <pj...@us...> - 2008-05-20 20:39:13
|
Revision: 4432 http://jython.svn.sourceforge.net/jython/?rev=4432&view=rev Author: pjenvey Date: 2008-05-20 13:39:12 -0700 (Tue, 20 May 2008) Log Message: ----------- need to track line numbers for inplace ops Modified Paths: -------------- trunk/jython/src/org/python/compiler/CodeCompiler.java Modified: trunk/jython/src/org/python/compiler/CodeCompiler.java =================================================================== --- trunk/jython/src/org/python/compiler/CodeCompiler.java 2008-05-20 19:19:52 UTC (rev 4431) +++ trunk/jython/src/org/python/compiler/CodeCompiler.java 2008-05-20 20:39:12 UTC (rev 4432) @@ -1542,6 +1542,8 @@ } public Object visitAugAssign(AugAssign node) throws Exception { + setline(node); + visit(node.value); int tmp = storeTop(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |