From: <pj...@us...> - 2009-04-21 03:14:09
|
Revision: 6249 http://jython.svn.sourceforge.net/jython/?rev=6249&view=rev Author: pjenvey Date: 2009-04-21 03:13:55 +0000 (Tue, 21 Apr 2009) Log Message: ----------- recycle numerics in some obvious places Modified Paths: -------------- trunk/jython/src/org/python/core/PyComplex.java trunk/jython/src/org/python/core/PyFloat.java trunk/jython/src/org/python/core/PyInteger.java trunk/jython/src/org/python/core/PyLong.java Modified: trunk/jython/src/org/python/core/PyComplex.java =================================================================== --- trunk/jython/src/org/python/core/PyComplex.java 2009-04-21 02:37:28 UTC (rev 6248) +++ trunk/jython/src/org/python/core/PyComplex.java 2009-04-21 03:13:55 UTC (rev 6249) @@ -639,6 +639,9 @@ @ExposedMethod(doc = BuiltinDocs.complex___pos___doc) final PyObject complex___pos__() { + if (getType() == TYPE) { + return this; + } return new PyComplex(real, imag); } Modified: trunk/jython/src/org/python/core/PyFloat.java =================================================================== --- trunk/jython/src/org/python/core/PyFloat.java 2009-04-21 02:37:28 UTC (rev 6248) +++ trunk/jython/src/org/python/core/PyFloat.java 2009-04-21 03:13:55 UTC (rev 6249) @@ -560,7 +560,7 @@ @ExposedMethod(doc = BuiltinDocs.float___pos___doc) final PyObject float___pos__() { - return Py.newFloat(value); + return float___float__(); } public PyObject __invert__() { @@ -573,10 +573,10 @@ @ExposedMethod(doc = BuiltinDocs.float___abs___doc) final PyObject float___abs__() { - if (value >= 0) - return Py.newFloat(value); - else - return __neg__(); + if (value < 0) { + return float___neg__(); + } + return float___float__(); } public PyObject __int__() { @@ -606,6 +606,9 @@ @ExposedMethod(doc = BuiltinDocs.float___float___doc) final PyFloat float___float__() { + if (getType() == TYPE) { + return this; + } return Py.newFloat(value); } public PyComplex __complex__() { Modified: trunk/jython/src/org/python/core/PyInteger.java =================================================================== --- trunk/jython/src/org/python/core/PyInteger.java 2009-04-21 02:37:28 UTC (rev 6248) +++ trunk/jython/src/org/python/core/PyInteger.java 2009-04-21 03:13:55 UTC (rev 6249) @@ -722,7 +722,7 @@ @ExposedMethod(doc = BuiltinDocs.int___pos___doc) final PyObject int___pos__() { - return Py.newInteger(getValue()); + return int___int__(); } public PyObject __abs__() { @@ -731,10 +731,10 @@ @ExposedMethod(doc = BuiltinDocs.int___abs___doc) final PyObject int___abs__() { - if (getValue() >= 0) - return Py.newInteger(getValue()); - else - return __neg__(); + if (getValue() < 0) { + return int___neg__(); + } + return int___int__(); } public PyObject __invert__() { @@ -752,6 +752,9 @@ @ExposedMethod(doc = BuiltinDocs.int___int___doc) final PyInteger int___int__() { + if (getType() == TYPE) { + return this; + } return Py.newInteger(getValue()); } Modified: trunk/jython/src/org/python/core/PyLong.java =================================================================== --- trunk/jython/src/org/python/core/PyLong.java 2009-04-21 02:37:28 UTC (rev 6248) +++ trunk/jython/src/org/python/core/PyLong.java 2009-04-21 03:13:55 UTC (rev 6249) @@ -741,7 +741,7 @@ @ExposedMethod(doc = BuiltinDocs.long___pos___doc) final PyObject long___pos__() { - return Py.newLong(value); + return long___long__(); } public PyObject __abs__() { @@ -750,7 +750,10 @@ @ExposedMethod(doc = BuiltinDocs.long___abs___doc) final PyObject long___abs__() { - return Py.newLong(value.abs()); + if (value.signum() == -1) { + return long___neg__(); + } + return long___long__(); } public PyObject __invert__() { @@ -771,7 +774,7 @@ if (value.compareTo(PyInteger.maxInt) <= 0 && value.compareTo(PyInteger.minInt) >= 0) { return Py.newInteger(value.intValue()); } - return Py.newLong(value); + return long___long__(); } @@ -781,6 +784,9 @@ @ExposedMethod(doc = BuiltinDocs.long___long___doc) final PyObject long___long__() { + if (getType() == TYPE) { + return this; + } return Py.newLong(value); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |