internal/reflectlite, reflect: move StringHeader and SliceHeader back to package reflect

This commit is contained in:
Randy Reddig
2025-03-08 20:35:36 -08:00
committed by Ron Evans
parent bf88cdea90
commit 417aa4312e
5 changed files with 24 additions and 16 deletions
-8
View File
@@ -1,8 +0,0 @@
//go:build !avr
package reflectlite
// intw is an integer type, used in places where an int is typically required,
// except architectures where the size of an int != word size.
// See https://github.com/tinygo-org/tinygo/issues/1284.
type intw = int
-8
View File
@@ -1,8 +0,0 @@
//go:build avr
package reflectlite
// intw is an integer type, used in places where an int is typically required,
// except architectures where the size of an int != word size.
// See https://github.com/tinygo-org/tinygo/issues/1284.
type intw = uintptr
-30
View File
@@ -1,30 +0,0 @@
//go:build !avr
package reflectlite_test
import (
"reflect"
"testing"
"unsafe"
)
// Verify that SliceHeader is the same size as a slice.
var _ [unsafe.Sizeof([]byte{})]byte = [unsafe.Sizeof(reflect.SliceHeader{})]byte{}
// TestSliceHeaderIntegerSize verifies that SliceHeader.Len and Cap are type int on non-AVR platforms.
// See https://github.com/tinygo-org/tinygo/issues/1284.
func TestSliceHeaderIntegerSize(t *testing.T) {
var h reflect.SliceHeader
h.Len = int(0)
h.Cap = int(0)
}
// Verify that StringHeader is the same size as a string.
var _ [unsafe.Sizeof("hello")]byte = [unsafe.Sizeof(reflect.StringHeader{})]byte{}
// TestStringHeaderIntegerSize verifies that StringHeader.Len and Cap are type int on non-AVR platforms.
// See https://github.com/tinygo-org/tinygo/issues/1284.
func TestStringHeaderIntegerSize(t *testing.T) {
var h reflect.StringHeader
h.Len = int(0)
}
-13
View File
@@ -1686,12 +1686,6 @@ type funcHeader struct {
Code unsafe.Pointer
}
type SliceHeader struct {
Data uintptr
Len intw
Cap intw
}
// Slice header that matches the underlying structure. Used for when we switch
// to a precise GC, which needs to know exactly where pointers live.
type sliceHeader struct {
@@ -1700,11 +1694,6 @@ type sliceHeader struct {
cap uintptr
}
type StringHeader struct {
Data uintptr
Len intw
}
// Like sliceHeader, this type is used internally to make sure pointer and
// non-pointer fields match those of actual strings.
type stringHeader struct {
@@ -1716,9 +1705,7 @@ type stringHeader struct {
// See https://github.com/tinygo-org/tinygo/pull/4156
// and https://github.com/tinygo-org/tinygo/issues/1284.
var (
_ [unsafe.Sizeof([]byte{})]byte = [unsafe.Sizeof(SliceHeader{})]byte{}
_ [unsafe.Sizeof([]byte{})]byte = [unsafe.Sizeof(sliceHeader{})]byte{}
_ [unsafe.Sizeof("")]byte = [unsafe.Sizeof(StringHeader{})]byte{}
_ [unsafe.Sizeof("")]byte = [unsafe.Sizeof(stringHeader{})]byte{}
)