Version française
Home     About     Download     Resources     Contact us    
Browse thread
Compiler internals question
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Xavier Leroy <Xavier.Leroy@i...>
Subject: Re: Compiler internals question
> (catch
>   (let (match/51 (apply (global f/49g) 5))
>     (catch
>       (switch match/51
>        case tag 1:
>         (let (match/52 (field 0 match/51) match/53 (field 1 match/51)) 17))
>      with exit))
>  with (raise (makeblock 0 (global Match_failure/12g) [0: "" 0 28])))
> 
> Does the inner "catch" serve any purpose or is it redundant?

It is redundant.  A latter pass (the translation from Lambda to
bytecode) will remove it by applying the equivalence (catch e with exit) == e.

- Xavier Leroy