Skip to content

Commit

Permalink
test: use cgo.Incomplete instead of go:notinheap for "run" tests
Browse files Browse the repository at this point in the history
Same as CL 421880, but for test directory.

Updates #46731

Change-Id: If8d18df013a6833adcbd40acc1a721bbc23ca6b2
Reviewed-on: https://go-review.googlesource.com/c/go/+/421881
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Keith Randall <khr@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
  • Loading branch information
cuonglm committed Sep 1, 2022
1 parent ca634fa commit 64b260d
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 15 deletions.
8 changes: 6 additions & 2 deletions test/fixedbugs/bug514.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build cgo

package main

import "runtime/cgo"

type iface interface {
Get() int
}

//go:notinheap
type notInHeap struct {
_ cgo.Incomplete
i int
}

Expand All @@ -29,7 +33,7 @@ type embed struct {

var val = 1234

var valNotInHeap = notInHeap{val}
var valNotInHeap = notInHeap{i: val}

func main() {
i := val
Expand Down
13 changes: 9 additions & 4 deletions test/fixedbugs/issue40954.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,29 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build cgo

package main

import (
"runtime/cgo"
"unsafe"
)

//go:notinheap
type S struct{ x int }
type S struct {
_ cgo.Incomplete
x int
}

func main() {
var i int
p := (*S)(unsafe.Pointer(uintptr(unsafe.Pointer(&i))))
v := uintptr(unsafe.Pointer(p))
// p is a pointer to a go:notinheap type. Like some C libraries,
// p is a pointer to a not-in-heap type. Like some C libraries,
// we stored an integer in that pointer. That integer just happens
// to be the address of i.
// v is also the address of i.
// p has a base type which is marked go:notinheap, so it
// p has a base type which is marked not-in-heap, so it
// should not be adjusted when the stack is copied.
recurse(100, p, v)
}
Expand Down
6 changes: 5 additions & 1 deletion test/fixedbugs/issue42032.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@
// source code is governed by a BSD-style license that can be found in
// the LICENSE file.

//go:build cgo

package main

//go:notinheap
import "runtime/cgo"

type NIH struct {
_ cgo.Incomplete
}

type T struct {
Expand Down
9 changes: 7 additions & 2 deletions test/fixedbugs/issue42076.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@
// source code is governed by a BSD-style license that can be found in
// the LICENSE file.

//go:build cgo

package main

import "reflect"
import (
"reflect"
"runtime/cgo"
)

//go:notinheap
type NIH struct {
_ cgo.Incomplete
}

var x, y NIH
Expand Down
12 changes: 8 additions & 4 deletions test/fixedbugs/issue46903.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// run
//go:build goexperiment.unified
// +build goexperiment.unified
//go:build goexperiment.unified && cgo
// +build goexperiment.unified,cgo

// TODO(mdempsky): Enable test unconditionally. This test should pass
// for non-unified mode too.
Expand All @@ -11,8 +11,12 @@

package main

//go:notinheap
type A struct{ B }
import "runtime/cgo"

type A struct {
B
_ cgo.Incomplete
}
type B struct{ x byte }
type I interface{ M() *B }

Expand Down
6 changes: 4 additions & 2 deletions test/typeparam/issue51733.go → test/fixedbugs/issue51733.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build cgo

package main

import (
"log"
"runtime/cgo"
"unsafe"
)

//go:notinheap
type S struct{}
type S struct{ _ cgo.Incomplete }

func main() {
p := (*S)(unsafe.Pointer(uintptr(0x8000)))
Expand Down

0 comments on commit 64b260d

Please sign in to comment.