From: <zy...@us...> - 2009-01-27 03:22:18
|
Revision: 5988 http://jython.svn.sourceforge.net/jython/?rev=5988&view=rev Author: zyasoft Date: 2009-01-27 02:16:49 +0000 (Tue, 27 Jan 2009) Log Message: ----------- Fixed opcode support for LOAD/STORE/DELETE_NAME and BUILD_CLASS. Modified Paths: -------------- branches/pbcvm/Tools/pbcvm/extract.py branches/pbcvm/src/org/python/core/PyBytecode.java Modified: branches/pbcvm/Tools/pbcvm/extract.py =================================================================== --- branches/pbcvm/Tools/pbcvm/extract.py 2009-01-27 01:45:48 UTC (rev 5987) +++ branches/pbcvm/Tools/pbcvm/extract.py 2009-01-27 02:16:49 UTC (rev 5988) @@ -93,7 +93,7 @@ values.append((attr, "["+', '.join(co_consts)+"]")) else: values.append((attr, repr(getattr(code, attr)))) - _codeobjs[code] = "PyBytecode(\n" + ',\n'.join([' '* 4 + v + ' # ' + attr for (attr, v) in values])+")" + _codeobjs[code] = "PyBytecode(\n" + '\n'.join([' '* 4 + v + ', # ' + attr for (attr, v) in values])+"\n )" return "_codeobjs[%r]" % (name,) Modified: branches/pbcvm/src/org/python/core/PyBytecode.java =================================================================== --- branches/pbcvm/src/org/python/core/PyBytecode.java 2009-01-27 01:45:48 UTC (rev 5987) +++ branches/pbcvm/src/org/python/core/PyBytecode.java 2009-01-27 02:16:49 UTC (rev 5988) @@ -193,7 +193,7 @@ System.err.println(co_name + ":" + count + "," + f.f_lasti + "> opcode: " + getOpname().__getitem__(Py.newInteger(opcode)) + - (opcode > Opcode.HAVE_ARGUMENT ? ", oparg: " + oparg : "") + + (opcode >= Opcode.HAVE_ARGUMENT ? ", oparg: " + oparg : "") + ", stack: " + stack.toString() + ", blocks: " + stringify_blocks(f)); } @@ -267,7 +267,7 @@ } opcode = co_code[next_instr]; - if (opcode > Opcode.HAVE_ARGUMENT) { + if (opcode >= Opcode.HAVE_ARGUMENT) { next_instr += 2; oparg = (co_code[next_instr] << 8) + co_code[next_instr - 1]; } @@ -705,18 +705,18 @@ case Opcode.BUILD_CLASS: { PyObject methods = stack.pop(); - PyObject bases[] = (new PyTuple(stack.pop())).getArray(); + PyObject bases[] = ((PyTuple)(stack.pop())).getArray(); // new PyTuple(stack.pop())).getArray(); String name = stack.pop().toString(); stack.push(Py.makeClass(name, bases, methods)); break; } case Opcode.STORE_NAME: - f.setlocal(oparg, stack.pop()); + f.setlocal(co_names[oparg], stack.pop()); break; case Opcode.DELETE_NAME: - f.dellocal(oparg); + f.dellocal(co_names[oparg]); break; case Opcode.UNPACK_SEQUENCE: { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |