digitalmars.D - Label as Values in D ?
- Patric Dexheimer (5/5) Jun 05 2017 https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
- ketmar (5/10) Jun 05 2017 as we have nested functions, you can just initialize a table with functi...
- Patric Dexheimer (4/17) Jun 05 2017 That´s nice, I take a look with compiler explorer and it indeed
- Basile B. (7/12) Jun 05 2017 It seems that labels are strictly compile time concepts. Once
https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html Is possible to use Label as Values in D? Or there is a way to do dynamic goto statements? Ps: This is out of curiosity / performance reasons. I know the potential of bad design / ugly code ;)
Jun 05 2017
Patric Dexheimer wrote:https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html Is possible to use Label as Values in D? Or there is a way to do dynamic goto statements? Ps: This is out of curiosity / performance reasons. I know the potential of bad design / ugly code ;)as we have nested functions, you can just initialize a table with function pointers, and use it instead of computed goto. this is way more powerful trick, as you can actually use any selector you want, in any way you want, and still have the speed of computed goto (most of the time).
Jun 05 2017
On Monday, 5 June 2017 at 13:16:43 UTC, ketmar wrote:Patric Dexheimer wrote:That´s nice, I take a look with compiler explorer and it indeed create a jump instead of a call. Not sure if fast as goto, w´ll have to benchmark it :)https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html Is possible to use Label as Values in D? Or there is a way to do dynamic goto statements? Ps: This is out of curiosity / performance reasons. I know the potential of bad design / ugly code ;)as we have nested functions, you can just initialize a table with function pointers, and use it instead of computed goto. this is way more powerful trick, as you can actually use any selector you want, in any way you want, and still have the speed of computed goto (most of the time).
Jun 05 2017
On Monday, 5 June 2017 at 11:40:28 UTC, Patric Dexheimer wrote:https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html Is possible to use Label as Values in D? Or there is a way to do dynamic goto statements? Ps: This is out of curiosity / performance reasons. I know the potential of bad design / ugly code ;)It seems that labels are strictly compile time concepts. Once used to set the JMP offsets they go back into the nil. For dynamic goto i think that you're already been given the answer: jump tables can be emulated with array of delegates/functions, although probably slightly slower (CALL vs JMP, there can be a function frame for the CALL destination).
Jun 05 2017