Author: Anders Lehmann <[email protected]>
Branch: numpypy_count_nonzero
Changeset: r55991:1be7eb14bc19
Date: 2012-07-08 13:29 +0200
http://bitbucket.org/pypy/pypy/changeset/1be7eb14bc19/
Log: Fix compile.py to understand count_nonzero, fix the test
diff --git a/pypy/module/micronumpy/compile.py
b/pypy/module/micronumpy/compile.py
--- a/pypy/module/micronumpy/compile.py
+++ b/pypy/module/micronumpy/compile.py
@@ -35,7 +35,7 @@
pass
SINGLE_ARG_FUNCTIONS = ["sum", "prod", "max", "min", "all", "any",
- "unegative", "flat", "tostring"]
+ "unegative", "flat", "tostring","count_nonzero"]
TWO_ARG_FUNCTIONS = ["dot", 'take']
THREE_ARG_FUNCTIONS = ['where']
@@ -445,6 +445,8 @@
elif self.name == "tostring":
arr.descr_tostring(interp.space)
w_res = None
+ elif self.name == "count_nonzero":
+ w_res = arr.descr_count_nonzero(interp.space)
else:
assert False # unreachable code
elif self.name in TWO_ARG_FUNCTIONS:
@@ -478,6 +480,8 @@
return w_res
if isinstance(w_res, FloatObject):
dtype = get_dtype_cache(interp.space).w_float64dtype
+ elif isinstance(w_res, IntObject):
+ dtype = get_dtype_cache(interp.space).w_int64dtype
elif isinstance(w_res, BoolObject):
dtype = get_dtype_cache(interp.space).w_booldtype
elif isinstance(w_res, interp_boxes.W_GenericBox):
diff --git a/pypy/module/micronumpy/test/test_zjit.py
b/pypy/module/micronumpy/test/test_zjit.py
--- a/pypy/module/micronumpy/test/test_zjit.py
+++ b/pypy/module/micronumpy/test/test_zjit.py
@@ -483,21 +483,18 @@
def define_count_nonzero():
return """
a = [[0, 2, 3, 4], [5, 6, 0, 8], [9, 10, 11, 0]]
- c = count_nonzero(a)
+ count_nonzero(a)
"""
def test_count_nonzero(self):
result = self.run("count_nonzero")
assert result == 9
- self.check_simple_loop({'arraylen_gc': 9,
- 'float_add': 1,
- 'float_mul': 1,
- 'getinteriorfield_raw': 3,
- 'guard_false': 3,
- 'guard_true': 3,
- 'int_add': 6,
- 'int_lt': 6,
- 'int_sub': 3,
- 'jump': 1,
- 'setinteriorfield_raw': 1})
+ self.check_simple_loop({'setfield_gc': 3,
+ 'getinteriorfield_raw': 1,
+ 'guard_false': 1,
+ 'jump': 1,
+ 'int_ge': 1,
+ 'new_with_vtable': 1,
+ 'int_add': 2,
+ 'float_ne': 1})
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit