On Saturday, 13 September 2014 at 19:20:51 UTC, Timon Gehr wrote:
On 09/13/2014 09:07 PM, "Marc =?UTF-8?B?U2Now7x0eiI=?= <schue...@gmx.net>" wrote:
Wouldn't `const` be enough? AFAICS, `immutable` is mostly useful for
shared data.

const prevents modification, but does not guarantee that no modification takes place elsewhere. I.e. it enables fewer program transformations.

But as it is thread-local, is it really relevant (for optimization)? I can see two situations where it can potentially matter: pointer parameter aliasing, and calls to function/delegate calls that might modify a value referenced by a pointer.

In practice the latter is probably not so important for optimizations, because the compiler would most likely have a hard time caching a value across a function call because of register pressure, so a reload would be necessary anyway. I don't know about parameter aliasing, but I guess it only makes a difference in corner cases. In these cases, it's easy to forbid it by contract (as slice copying does).

Reply via email to