diff options
author | Russ Cox <rsc@golang.org> | 2014-12-05 20:34:45 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2014-12-05 20:34:45 -0500 |
commit | 9ec47922b8593000b20bd3bac2db330a98229949 (patch) | |
tree | edc89cf42f596da1464550c2e01605bfd826aa67 /src/runtime/wincallback.go | |
parent | f83565bc02ff8dbf9bb7d72a863f63c18361665d (diff) | |
parent | ffc214da93bb6958b83ded0eff1bd2de21e82431 (diff) | |
download | go-9ec47922b8593000b20bd3bac2db330a98229949.tar.gz |
all: merge dev.garbage (d1238958d4ae) into default branch
When we start work on Gerrit, ppc64 and garbage collection
work will continue in the master branch, not the dev branches.
(We may still use dev branches for other things later, but
these are ready to be merged, and doing it now, before moving
to Git means we don't have to have dev branches working
in the Gerrit workflow on day one.)
TBR=rlh
CC=golang-codereviews
https://codereview.appspot.com/183140043
Diffstat (limited to 'src/runtime/wincallback.go')
-rw-r--r-- | src/runtime/wincallback.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/runtime/wincallback.go b/src/runtime/wincallback.go new file mode 100644 index 000000000..4c0daf17c --- /dev/null +++ b/src/runtime/wincallback.go @@ -0,0 +1,43 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// Generate Windows callback assembly file. + +package main + +import ( + "bytes" + "fmt" + "io/ioutil" + "os" +) + +const maxCallback = 2000 + +func main() { + var buf bytes.Buffer + + buf.WriteString(`// generated by wincallback.go; run go generate + +// runtime·callbackasm is called by external code to +// execute Go implemented callback function. It is not +// called from the start, instead runtime·compilecallback +// always returns address into runtime·callbackasm offset +// appropriately so different callbacks start with different +// CALL instruction in runtime·callbackasm. This determines +// which Go callback function is executed later on. +TEXT runtime·callbackasm(SB),7,$0 +`) + for i := 0; i < maxCallback; i++ { + buf.WriteString("\tCALL\truntime·callbackasm1(SB)\n") + } + + err := ioutil.WriteFile("zcallback_windows.s", buf.Bytes(), 0666) + if err != nil { + fmt.Fprintf(os.Stderr, "wincallback: %s\n", err) + os.Exit(2) + } +} |