aboutsummaryrefslogtreecommitdiffhomepage
path: root/compiler/calls.go
diff options
context:
space:
mode:
authorAyke van Laethem <[email protected]>2018-11-01 11:42:04 +0100
committerAyke van Laethem <[email protected]>2018-11-01 11:42:04 +0100
commitd7844ce1248c543a003953d1062458911502b10a (patch)
tree98a475485f1174ca7f8ba3be1a736afe56d29b9d /compiler/calls.go
parentc7cf6f0e828258aed269b75840dfe111f71eef05 (diff)
downloadtinygo-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.go13
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.