diff options
author | Ayke van Laethem <[email protected]> | 2018-11-01 11:42:04 +0100 |
---|---|---|
committer | Ayke van Laethem <[email protected]> | 2018-11-01 11:42:04 +0100 |
commit | d7844ce1248c543a003953d1062458911502b10a (patch) | |
tree | 98a475485f1174ca7f8ba3be1a736afe56d29b9d /compiler/calls.go | |
parent | c7cf6f0e828258aed269b75840dfe111f71eef05 (diff) | |
download | tinygo-d7844ce1248c543a003953d1062458911502b10a.tar.gz tinygo-d7844ce1248c543a003953d1062458911502b10a.zip |
compiler, runtime: move defer notes to the runtime file
This seems like the more appropriate place to describe the
implementation of defer.
Diffstat (limited to 'compiler/calls.go')
-rw-r--r-- | compiler/calls.go | 13 |
1 files changed, 0 insertions, 13 deletions
diff --git a/compiler/calls.go b/compiler/calls.go index 18dd74aef..f5ded1f4a 100644 --- a/compiler/calls.go +++ b/compiler/calls.go @@ -8,19 +8,6 @@ import ( // For a description of the calling convention in prose, see docs/internals.rst // or the online version of this document: // https://tinygo.readthedocs.io/en/latest/internals.html#calling-convention -// -// Some further notes: -// * Defer statements are implemented by transforming the function in the -// following way: -// * Creating an alloca in the entry block that contains a pointer -// (initially null) to the linked list of defer frames. -// * Every time a defer statement is executed, a new defer frame is -// created using alloca with a pointer to the previous defer frame, and -// the head pointer in the entry block is replaced with a pointer to -// this defer frame. -// * On return, runtime.rundefers is called which calls all deferred -// functions from the head of the linked list until it has gone through -// all defer frames. // The maximum number of arguments that can be expanded from a single struct. If // a struct contains more fields, it is passed as a struct without expanding. |