[pypy-dev] Re: [pypy-svn] r23599 - pypy/dist/pypy/translator/c/src

Eric van Riet Paap eric at vanrietpaap.nl
Wed Feb 22 22:43:19 CET 2006


H,

I have a local version that does the test for the 'errorvalue' that  
gets returned when stack unwinding is going on. I did not check this  
in yet because it did not give a speedup, I will keep it around and  
look into a little further. We probably are making life difficult for  
the compiler because of the use of the resume_label. What we IMO  
really should to do is tell the compiler not to bother with the label  
and let all the register setup be handled in the resume block. In  
other words we need to make it clearer (for the compiler) that non  
stack unwind/resume is the case to optimize. Now the question is of  
course, how to do that?

cheers
Eric


On Feb 22, 2006, at 9:22 PM, tismer at codespeak.net wrote:

> Author: tismer
> Date: Wed Feb 22 21:22:46 2006
> New Revision: 23599
>
> Modified:
>    pypy/dist/pypy/translator/c/src/ll_stackless.h
> Log:
> a tiny change to stackless switching. This is still optimizable by  
> using special return values  (please talk with me when  
> considering). Anyway the effects of these changes are still rather  
> unpredictably.
>
> Modified: pypy/dist/pypy/translator/c/src/ll_stackless.h
> ====================================================================== 
> ========
> --- pypy/dist/pypy/translator/c/src/ll_stackless.h	(original)
> +++ pypy/dist/pypy/translator/c/src/ll_stackless.h	Wed Feb 22  
> 21:22:46 2006
> @@ -26,14 +26,33 @@
>
>  #define RPyExceptionClear()       rpython_exc_type = NULL
>
> +/*
>  #define StacklessUnwindAndRPyExceptionHandling(unwind_label,  
> resume_label, exception_label) \
>              if (RPyExceptionOccurred()) {   \
>                  if (slp_frame_stack_bottom) \
>                      goto unwind_label;      \
> -            resume_label:                   \
> +          resume_label:                   \
>                  if (RPyExceptionOccurred()) \
>                      FAIL(exception_label);  \
>              }
> +
> +    Following code was supposed to compiler to shorter machine  
> code, but on windows it doesn't.
> +    Probably some other code folding is prevented, and there is a  
> tiny increase of 20 kb.
> +    I'm leaving the change in here, anyway. Richards is getting a  
> bit slower, PySone
> +    is getting faster, all in all speed is slightly increased.
> +    We should further investigate and try to use Eric's suggestion  
> of checking certain
> +    return values to get even shorter code paths.
> +    In any case, these optimizations are still flaky, because we  
> are probably in a high
> +    noise level of caching effects and random decisions of the  
> compiler.
> +*/
> +#define StacklessUnwindAndRPyExceptionHandling(unwind_label,  
> resume_label, exception_label) \
> +          resume_label:                   \
> +            if (RPyExceptionOccurred()) {   \
> +                if (slp_frame_stack_bottom) \
> +                    goto unwind_label;      \
> +                FAIL(exception_label);      \
> +            }
> +*/
>  #else
>
>  #define RPyRaisePseudoException()
> _______________________________________________
> pypy-svn mailing list
> pypy-svn at codespeak.net
> http://codespeak.net/mailman/listinfo/pypy-svn




More information about the Pypy-dev mailing list