pypy / pypy / translator / exceptiontransform.py

Diff from to

pypy/translator/exceptiontransform.py

 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
         exc_data, null_type, null_value = self.setup_excdata()
 
         rclass = translator.rtyper.type_system.rclass
-        (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,
                 exc_data.exc_type = rclass.ll_inst_type(evalue)
                 exc_data.exc_value = evalue
 
-        def rpyexc_raise_stack_overflow():
-            rpyexc_raise(stackovf_ll_exc_type, stackovf_ll_exc)
-
         self.rpyexc_occured_ptr = self.build_func(
             "RPyExceptionOccurred",
             rpyexc_occured,
             lltype.Void,
             jitcallkind='rpyexc_raise') # for the JIT
 
-        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(
             "RPyFetchException",
             rpyexc_fetch_exception,
                 self.transform_jump_to_except_block(graph, entrymap, link)
         #
         for block in list(graph.iterblocks()):
-            self.replace_stack_unwind(block)
             self.replace_fetch_restore_operations(block)
             need_exc_matching, gen_exc_checks = self.transform_block(graph, block)
             n_need_exc_matching_blocks += need_exc_matching
         cleanup_graph(graph)
         return n_need_exc_matching_blocks, n_gen_exc_checks
 
-    def replace_stack_unwind(self, block):
-        for i in range(len(block.operations)):
-            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 StackOverflow in any
-                # case
-                block.operations[i].opname = "direct_call"
-                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
         # order of transformations is important - but the gctransformer will
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.