Ayke van Laethem
5ed0cecf0d
nrf: fix memory issue in ADC read
There was a very subtle bug in the ADC read code: it stores a pointer to
a variable in a register, waits for the hardware to complete the read,
and then reads the value again from the local variable. Unfortunately,
the compiler doesn't know there is some form of synchronization
happening in between.
This can be fixed in roughly two ways:
* Introduce some sort of synchronization.
* Do a volatile read from the variable.
I chose the second one as it is probably the least intrusive. We
certainly don't need atomic instructions (the chip is single threaded),
we just need to tell the compiler the value could have changed by making
the read volatile.
2 years ago
Ayke van Laethem
523c6c0e3b
compiler: correctly generate code for local named types
It is possible to create function-local named types:
func foo() any {
type named int
return named(0)
}
This patch makes sure they don't alias with named types declared at the
package scope.
Bug originally found by Damian Gryski while working on reflect support.
2 years ago
Damian Gryski
17f5fb1071
reflect; SetLen() requires an addressable value
2 years ago
Damian Gryski
4d43df75d5
reflect: fix some vet issues
2 years ago
Damian Gryski
57b0c21492
reflect: tweak Type.String() for interfaces to make encoding/xml happy
2 years ago
Damian Gryski
8fb5877d9e
reflect: fix isBinary() for float types
2 years ago
Damian Gryski
6fbe6fa2ae
reflect: tweak Type.String() to match what encoding/json expects for empty structs
2 years ago
Damian Gryski
24b4dc31a4
reflect: stub MapOf()
2 years ago
Damian Gryski
4f8127d0bf
builder: bump sizes tests
2 years ago
Damian Gryski
e0329b25de
transform: fix OptimizeReflectImplements pass for new named elem offset
2 years ago
Damian Gryski
229f479a7d
reflect: make sure pointerTo() works for named types
2 years ago
Damian Gryski
876f08979f
compiler,reflect: sort out pkg path vs pkg name for named types
2 years ago
Damian Gryski
f2cc98caa5
compiler,reflect: adjust struct layout for type info
2 years ago
Damian Gryski
0d65b4dd26
compiler: only define the package path once
Adding https://github.com/tinygo-org/tinygo/pull/3534 by hand to avoid conflicts when I rebase.
2 years ago
Damian Gryski
6a685b2a8d
reflect: add test for Type.NumMethod()
2 years ago
Damian Gryski
569817a514
refect: Type.String() should use a shortened package name
2 years ago
Damian Gryski
7a96f0f609
compiler,reflect: add reflect.Type.NumMethods()
2 years ago
deadprogram
821227a03b
docker: correct path for GHCR dev container build
Signed-off-by: deadprogram <ron@hybridgroup.com>
2 years ago
Ayke van Laethem
5b42871baa
compiler: support all kinds of recursive types
Previously we only supported recursive types in structs. But there can
be other kinds of recursive types, like slices:
type RecursiveSlice []RecursiveSlice
This doesn't involve structs, so it led to infinite recursion in the
compiler. This fix avoids recursion at the proper level: at the place
where the named type is defined.
2 years ago
deadprogram
c5598630c9
machine/stm32: correct Flash implementation
Signed-off-by: deadprogram <ron@hybridgroup.com>
2 years ago
Ayke van Laethem
6c40ee93fe
transform: update wasm-abi to use opaque pointers
2 years ago
Ayke van Laethem
4acb1a5845
transform: update stringtobytes test to opaque pointers
2 years ago
Ayke van Laethem
e0f3333cc3
transform: update stringequal test to opaque pointers
2 years ago
Ayke van Laethem
af247e27ff
transform: update stacksize test to opaque pointers
2 years ago
Ayke van Laethem
ec3a4da4df
transform: update panic test to opaque pointers
2 years ago
Ayke van Laethem
905269bf11
transform: update maps test to opaque pointers
2 years ago
Ayke van Laethem
e4f29ae2f9
transform: update interrupt test to opaque pointers
2 years ago
Ayke van Laethem
7fb23824e2
transform: update interface test to opaque pointers
2 years ago
Ayke van Laethem
f8a6e662d8
transform: update gc-stackslots test to opaque pointers
2 years ago
Ayke van Laethem
0ddd65658e
transform: update allocs test to opaque pointers
Also, rename most of the SSA values while we're at it.
2 years ago
Ayke van Laethem
db08b5aaa5
transform: update reflect-implements test to opaque pointers
2 years ago
deadprogram
383e7ae14a
machine, runtime/interrupt: switch to use register definitions from device/gba
Signed-off-by: deadprogram <ron@hybridgroup.com>
2 years ago
deadprogram
4f7864b757
device/gba: add mostly complete hand-written register definitions
Signed-off-by: deadprogram <ron@hybridgroup.com>
2 years ago
Damian Gryski
833c91fceb
builder: fix binary size rodata value
2 years ago
Damian Gryski
344e493ac8
compiler,reflect: fix pkgpath for struct fields
2 years ago
Damian Gryski
1626b50457
reflect: set PkgPath in StructField
2 years ago
Damian Gryski
93fb897feb
compiler, reflect: properly handle embedded structs
2 years ago
Damian Gryski
15109a2924
reflect: disable visiblefields test for FieldByIndexErr
2 years ago
Damian Gryski
d9c6f7c11f
reflect: import visiblefields code and tests from upstream
2 years ago
Damian Gryski
fa4f361ca7
reflect: add FieldByName(), and FieldByIndex()
2 years ago
Damian Gryski
9f02340a26
reflect: fix Type.Name to return empty string for non-named types
// Name returns the type's name within its package for a defined type.
// For other (non-defined) types it returns the empty string.
2 years ago
Damian Gryski
c6728643e6
reflect: loosen unaddressable array rules for Copy()
2 years ago
Damian Gryski
e849901ad6
Update src/reflect/value.go
Co-authored-by: Ayke <aykevanlaethem@gmail.com>
2 years ago
Damian Gryski
91d6ca057c
reflect: add SetBytes()
2 years ago
Damian Gryski
0da97e2427
reflect: fix IsNil() for interfaces
2 years ago
Damian Gryski
ac36f232bc
reflect: MapIter.Next() needs to allocate new keys/values every time
2 years ago
Damian Gryski
94a54bc105
reflect: add UnsafePointer() for Func types
2 years ago
Damian Gryski
b044d27dff
reflect: move StructField.Anonymous field to match upstream location
2 years ago
Damian Gryski
6768af91e7
reflect: TypeOf(nil) should be nil
2 years ago
Damian Gryski
a366c014c7
reflect: call decomposeInterface() directly in TypeOf()
2 years ago