Re: [racket-dev] cross-module function inlining

2011-12-02 Thread Matthew Flatt
At Thu, 01 Dec 2011 10:47:10 -0500, Neil Van Dyke wrote: > Are struct accessor procedures inlined across modules? Structure procedures are not inlined by the bytecode compiler, but they are semi-inlined by the JIT. There's room for the bytecode compiler to help the JIT generate better code, though

Re: [racket-dev] cross-module function inlining

2011-12-01 Thread Matthew Flatt
At Thu, 1 Dec 2011 09:25:43 -0700, Matthew Flatt wrote: > Yes, that's better. I'll push a change to use a syntax property instead > of a `begin' pattern. > > I won't add a macro just now, since I'm unsure of the right general > form or whether anyone will want to use it. Since Robby is already us

Re: [racket-dev] cross-module function inlining

2011-12-01 Thread Matthew Flatt
At Thu, 1 Dec 2011 09:54:36 -0500, Carl Eastlund wrote: > On Thu, Dec 1, 2011 at 9:49 AM, Matthew Flatt wrote: > >  (define-values () > >    (begin > >      'compiler-hint:cross-module-inline > >      )) > > > > Yes, this pattern is a hack; I don't have a better idea for the > > annotation at the

Re: [racket-dev] cross-module function inlining

2011-12-01 Thread Neil Van Dyke
Are struct accessor procedures inlined across modules? (Just curious; no pressing need.) -- http://www.neilvandyke.org/ _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] cross-module function inlining

2011-12-01 Thread Carl Eastlund
On Thu, Dec 1, 2011 at 9:49 AM, Matthew Flatt wrote: > The bytecode compiler now supports cross-module inlining of functions. > As a result, for example, `empty?' and `cons?' should now perform just > as well as `null?' and `pair?'. Excellent! > To avoid expanding bytecode too much, the compiler

[racket-dev] cross-module function inlining

2011-12-01 Thread Matthew Flatt
The bytecode compiler now supports cross-module inlining of functions. As a result, for example, `empty?' and `cons?' should now perform just as well as `null?' and `pair?'. To avoid expanding bytecode too much, the compiler is especially conservative about which functions it chooses as candidates