Maximally minimal stack trace standardization
allen at wirfs-brock.com
Mon Sep 29 13:44:26 PDT 2014
On Sep 29, 2014, at 1:13 PM, Mark S. Miller wrote:
> The issue is the asymptotic space consumption almost-contract. The reason I say "almost" is that conformance of an implementation is not testable. Currently, the spec says nothing about when an implementation might run out of storage.
> So we (at least I) mean normative only in the following sense: When someone writes an algorithm in ES6 using, say, bound functions in a loop, what claims may they validly make about the space complexity of their program? The specification should help answer such questions, sometimes.
> Note that I distinguish here between "the space complexity of their program" and the space usage growth when their program is run on an actual implementation. Again, conformance with any requirement on the latter is not testable.
So what would you like it to say that it doesn't already say?
Here is what it currently says:
14.6.3 Runtime Semantics: PrepareForTailCall ( )
The abstract operation PrepareForTailCall performs the following steps:
1 Let leafContext be the running execution context.
2 Suspend leafContext.
3 Pop leafContext from the execution context context stack. The execution context now on the top of the stack becomes the running execution context.
4 Assert: leafContext has no further use. It will never be activated as the running execution context.
A tail position call must either release any transient internal resources associated with the currently executing function execution context before invoking the target function or reuse those resources in support of the target function.
NOTE For example, a tail position call should only grow an implementation’s activation record stack by the amount that the size of the target function’s activation record exceeds the size of the calling function’s activation record. If the target function’s activation record is smaller, then the total size of the stack should decrease.
More information about the es-discuss