Explicitly unimplemented computed gotos

Jimmy Cao jcao219 at gmail.com
Thu Nov 25 22:00:32 PST 2010


Good suggestion for a D3 feature.
Wikipedia says this is also called an "Assigned Goto."
It could make writing interpreters more efficient.

On Thu, Nov 25, 2010 at 9:55 PM, bearophile <bearophileHUGS at lycos.com>wrote:

> When I have suggested to add "computed gotos" (similar to the ones of GCC)
> to D, Walter has answered that they need some work to be implemented, and
> they have limited usefulness, almost only to optimize interpreters.
>
> But:
> - D is a system language, so writing interpreters is an important
> application of it.
> - I have found GCC computed gotos useful to speed up some of my code.
> Recently even the CPython has introduced their usage in the main interpreter
> loop.
> - The GCC implementation of computed gotos is not standard for C and other
> compilers may not understand it (to solve this trouble in GNU C code you
> need to disable pieces of code, and this is less easy to do in D).
>
> So even if computed gotos are not going to be implemented in DMD I suggest
> to:
> 1) Invent a syntax to represent and use them (probably the GCC syntax is
> good, because it's already known in C).
> 2) Make DMD understand this syntax, but refuse it at compile time (because
> DMD doesn't support computer gotos).
> 3) Define a new standard Predefined Version, like "computed_goto" or
> "Computed_goto" or something similar, that is defined if a D compiler
> supports them (so DMD doesn't define it), that allows to disable the code
> that contains the computed goto if a compiler doesn't support them.
>
> This:
> - Allows other D implementations, based on LLVM and GCC back-ends that
> already support computed gotos, to support such gotos in D code too;
> - Allows the programmer to write two versions of a performance-critical
> routine with and without computed gotos, in a clean way just like is done
> for version(D_InlineAsm_X86){...}else{...}.
> - Gives a single standard common syntax that all future D compilers may
> use, avoiding troubles caused by nonstandard syntax and implementations.
>
> (Explicitly unimplemented features have a precedent in D, the array
> operations. The difference is that D may never implement computed gotos.)
> (This an additive feature, so it may be left for D3 too.)
>
> Bye,
> bearophile
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20101126/73b4004d/attachment-0001.html>


More information about the Digitalmars-d mailing list