[pypy-svn] r73084 - in pypy/branch/stackovf/pypy: rlib/test translator translator/c
arigo at codespeak.net
arigo at codespeak.net
Mon Mar 29 17:13:21 CEST 2010
Author: arigo
Date: Mon Mar 29 17:13:19 2010
New Revision: 73084
Modified:
pypy/branch/stackovf/pypy/rlib/test/test_rstackovf.py
pypy/branch/stackovf/pypy/translator/c/node.py
pypy/branch/stackovf/pypy/translator/exceptiontransform.py
Log:
Minimal changes to make the new test pass.
Needs reviewing.
Modified: pypy/branch/stackovf/pypy/rlib/test/test_rstackovf.py
==============================================================================
--- pypy/branch/stackovf/pypy/rlib/test/test_rstackovf.py (original)
+++ pypy/branch/stackovf/pypy/rlib/test/test_rstackovf.py Mon Mar 29 17:13:19 2010
@@ -27,3 +27,9 @@
from pypy.rpython.test.test_llinterp import interpret
res = interpret(f, [sys.maxint], type_system='ootype')
assert res == 1
+
+def test_c_translation():
+ from pypy.translator.c.test.test_genc import compile
+ fn = compile(f, [int])
+ res = fn(sys.maxint)
+ assert res == 1
Modified: pypy/branch/stackovf/pypy/translator/c/node.py
==============================================================================
--- pypy/branch/stackovf/pypy/translator/c/node.py (original)
+++ pypy/branch/stackovf/pypy/translator/c/node.py Mon Mar 29 17:13:19 2010
@@ -11,6 +11,7 @@
from pypy.translator.c.support import c_char_array_constant, barebonearray
from pypy.translator.c.primitive import PrimitiveType, name_signed
from pypy.rlib.rarithmetic import isinf, isnan
+from pypy.rlib.rstackovf import _StackOverflow
from pypy.translator.c import extfunc
from pypy.translator.tool.cbuild import ExternalCompilationInfo
from py.builtin import BaseException
@@ -981,6 +982,8 @@
return 'PyExc_' + value.__name__
if value is py.code._AssertionError:
return 'PyExc_AssertionError'
+ if value is _StackOverflow:
+ return 'PyExc_RuntimeError'
raise Exception("don't know how to simply render py object: %r" %
(value, ))
Modified: pypy/branch/stackovf/pypy/translator/exceptiontransform.py
==============================================================================
--- pypy/branch/stackovf/pypy/translator/exceptiontransform.py (original)
+++ pypy/branch/stackovf/pypy/translator/exceptiontransform.py Mon Mar 29 17:13:19 2010
@@ -13,6 +13,7 @@
from pypy.rlib.rarithmetic import r_uint, r_longlong, r_ulonglong
from pypy.rlib.rarithmetic import r_singlefloat
from pypy.rlib.debug import ll_assert
+from pypy.rlib.rstackovf import _StackOverflow
from pypy.annotation import model as annmodel
from pypy.rpython.annlowlevel import MixLevelHelperAnnotator
from pypy.tool.sourcetools import func_with_new_name
@@ -60,8 +61,8 @@
exc_data, null_type, null_value = self.setup_excdata()
rclass = translator.rtyper.type_system.rclass
- (runtime_error_ll_exc_type,
- runtime_error_ll_exc) = self.get_builtin_exception(RuntimeError)
+ (stackovf_ll_exc_type,
+ stackovf_ll_exc) = self.get_builtin_exception(_StackOverflow)
(assertion_error_ll_exc_type,
assertion_error_ll_exc) = self.get_builtin_exception(AssertionError)
(n_i_error_ll_exc_type,
@@ -114,8 +115,8 @@
exc_data.exc_type = rclass.ll_inst_type(evalue)
exc_data.exc_value = evalue
- def rpyexc_raise_runtime_error():
- rpyexc_raise(runtime_error_ll_exc_type, runtime_error_ll_exc)
+ def rpyexc_raise_stack_overflow():
+ rpyexc_raise(stackovf_ll_exc_type, stackovf_ll_exc)
self.rpyexc_occured_ptr = self.build_func(
"RPyExceptionOccurred",
@@ -151,9 +152,9 @@
lltype.Void,
jitcallkind='rpyexc_raise') # for the JIT
- self.rpyexc_raise_runtime_error_ptr = self.build_func(
- "RPyRaiseRuntimeError",
- self.noinline(rpyexc_raise_runtime_error),
+ self.rpyexc_raise_stack_overflow_ptr = self.build_func(
+ "RPyRaiseStackOverflow",
+ self.noinline(rpyexc_raise_stack_overflow),
[], lltype.Void)
self.rpyexc_fetch_exception_ptr = self.build_func(
@@ -237,10 +238,10 @@
if block.operations[i].opname == 'stack_unwind':
# if there are stack_unwind ops left,
# the graph was not stackless-transformed
- # so we need to raise a RuntimeError in any
+ # so we need to raise a StackOverflow in any
# case
block.operations[i].opname = "direct_call"
- block.operations[i].args = [self.rpyexc_raise_runtime_error_ptr]
+ block.operations[i].args = [self.rpyexc_raise_stack_overflow_ptr]
def replace_fetch_restore_operations(self, block):
# the gctransformer will create these operations. It looks as if the
More information about the Pypy-commit
mailing list