Merge: Optimizations in nitvm
authorJean Privat <jean@pryen.org>
Thu, 29 Jan 2015 11:58:53 +0000 (18:58 +0700)
committerJean Privat <jean@pryen.org>
Thu, 29 Jan 2015 11:58:53 +0000 (18:58 +0700)
commitfac640cbcd6ed13bce5bbf96f59fa8bebe19530a
treedd8be03e84d2c0101873c5ee9675dba1008b3907
parentfab92511736d64d200c7408e66c03e57a9c6e594
parent0a2ba983f6b7f6b026f4f0f2cddd8df11500b963
Merge: Optimizations in nitvm

This PR introduces some change in the implementation of object mechanisms in the nitvm.

Now, the dispatch between several mechanisms is made directly in the AST nodes instead of in runtime mechanisms themselves.
This PR is preliminary work before the implementation of complex optimization systems, but now the nitvm is sligtly more efficent than before because the choice between implementations is only made once (the first time).

I use a workaround in AST nodes to avoid conflict with refinements between the interpreter and the vm.
In the future this will need to be well implemented, maybe by creating a sort of ```CallSite``` for subtyping test and attribute access and store informations into them instead of into the nodes.

Pull-Request: #1120
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>