[Newcompiler] Adding the create closure environment bytecode
Stéphane Ducasse
stephane.ducasse at univ-savoie.fr
Sun Aug 19 07:17:36 UTC 2007
mathieu can you post that to
squeak-dev and the vm mailing-list
stef
On 19 août 07, at 02:45, Mathieu Suen wrote:
> Hi,
>
> This last week I spend my time to implement the create closure
> environment bytecode.
> This bytecode replace the creation and registration of the closure
> environment:
>
> push: ClosureEnvironment
> push: 1
> send: #new:
>
> by a single bytecode.
>
> I have spend a lote of time trying to fix a bug when the VM do a
> gc. Finally I found out that was because the frame size of the
> method change with my bytecode(i.e I don't use the stack to create
> the colsure). Then the size of the method context is not correct.
> So instead of fixing the frame size I have fixed the bytecode which
> it not the best optimization
>
>
> I have made a little benchmark to see the performance:
>
> a := 0.
> #(1 2 3 4 5 6 7 8 9 10) do: [:each | a := each + a]] bench.
>
> Without the bytecode (with closure)
> '207 655.4689062188 per second.'.
> '207 615.876824635 per second.'.
> '206 797.6404719056 per second.'.
>
> With the bytecode
> '225 009.398120376 per second.'.
> '224 685.4629074185 per second.'.
> '225 539.6920615877 per second.'
>
> So with the bytecode we are about 8% faster
>
> Mth
>
>
>
More information about the Newcompiler
mailing list