Removes context parameter from instruction-scoped operations (#923)
We originally had a `context.Context` for anything that might be traced, but it turned out to be only useful for lifecycle and host functions. For instruction-scoped aspects like memory updates, a context parameter is too fine-grained and also invisible in practice. For example, most users will use the compiler engine, and its memory, global or table access will never use go's context. Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
@@ -67,9 +67,9 @@ func main() {
|
||||
defer deallocate.Call(ctx, namePtr, nameSize)
|
||||
|
||||
// The pointer is a linear memory offset, which is where we write the name.
|
||||
if !mod.Memory().Write(ctx, uint32(namePtr), []byte(name)) {
|
||||
if !mod.Memory().Write(uint32(namePtr), []byte(name)) {
|
||||
log.Panicf("Memory.Write(%d, %d) out of range of memory size %d",
|
||||
namePtr, nameSize, mod.Memory().Size(ctx))
|
||||
namePtr, nameSize, mod.Memory().Size())
|
||||
}
|
||||
|
||||
// Now, we can call "greet", which reads the string we wrote to memory!
|
||||
@@ -91,16 +91,16 @@ func main() {
|
||||
defer deallocate.Call(ctx, uint64(greetingPtr), uint64(greetingSize))
|
||||
|
||||
// The pointer is a linear memory offset, which is where we write the name.
|
||||
if bytes, ok := mod.Memory().Read(ctx, greetingPtr, greetingSize); !ok {
|
||||
if bytes, ok := mod.Memory().Read(greetingPtr, greetingSize); !ok {
|
||||
log.Panicf("Memory.Read(%d, %d) out of range of memory size %d",
|
||||
greetingPtr, greetingSize, mod.Memory().Size(ctx))
|
||||
greetingPtr, greetingSize, mod.Memory().Size())
|
||||
} else {
|
||||
fmt.Println("go >>", string(bytes))
|
||||
}
|
||||
}
|
||||
|
||||
func logString(ctx context.Context, m api.Module, offset, byteCount uint32) {
|
||||
buf, ok := m.Memory().Read(ctx, offset, byteCount)
|
||||
buf, ok := m.Memory().Read(offset, byteCount)
|
||||
if !ok {
|
||||
log.Panicf("Memory.Read(%d, %d) out of range", offset, byteCount)
|
||||
}
|
||||
|
||||
@@ -73,9 +73,9 @@ func main() {
|
||||
defer free.Call(ctx, namePtr)
|
||||
|
||||
// The pointer is a linear memory offset, which is where we write the name.
|
||||
if !mod.Memory().Write(ctx, uint32(namePtr), []byte(name)) {
|
||||
if !mod.Memory().Write(uint32(namePtr), []byte(name)) {
|
||||
log.Panicf("Memory.Write(%d, %d) out of range of memory size %d",
|
||||
namePtr, nameSize, mod.Memory().Size(ctx))
|
||||
namePtr, nameSize, mod.Memory().Size())
|
||||
}
|
||||
|
||||
// Now, we can call "greet", which reads the string we wrote to memory!
|
||||
@@ -94,16 +94,16 @@ func main() {
|
||||
greetingPtr := uint32(ptrSize[0] >> 32)
|
||||
greetingSize := uint32(ptrSize[0])
|
||||
// The pointer is a linear memory offset, which is where we write the name.
|
||||
if bytes, ok := mod.Memory().Read(ctx, greetingPtr, greetingSize); !ok {
|
||||
if bytes, ok := mod.Memory().Read(greetingPtr, greetingSize); !ok {
|
||||
log.Panicf("Memory.Read(%d, %d) out of range of memory size %d",
|
||||
greetingPtr, greetingSize, mod.Memory().Size(ctx))
|
||||
greetingPtr, greetingSize, mod.Memory().Size())
|
||||
} else {
|
||||
fmt.Println("go >>", string(bytes))
|
||||
}
|
||||
}
|
||||
|
||||
func logString(ctx context.Context, m api.Module, offset, byteCount uint32) {
|
||||
buf, ok := m.Memory().Read(ctx, offset, byteCount)
|
||||
func logString(_ context.Context, m api.Module, offset, byteCount uint32) {
|
||||
buf, ok := m.Memory().Read(offset, byteCount)
|
||||
if !ok {
|
||||
log.Panicf("Memory.Read(%d, %d) out of range", offset, byteCount)
|
||||
}
|
||||
|
||||
@@ -81,9 +81,9 @@ func run() error {
|
||||
defer free.Call(ctx, namePtr, nameSize)
|
||||
|
||||
// The pointer is a linear memory offset, which is where we write the name.
|
||||
if !mod.Memory().Write(ctx, uint32(namePtr), []byte(name)) {
|
||||
if !mod.Memory().Write(uint32(namePtr), []byte(name)) {
|
||||
return fmt.Errorf("Memory.Write(%d, %d) out of range of memory size %d",
|
||||
namePtr, nameSize, mod.Memory().Size(ctx))
|
||||
namePtr, nameSize, mod.Memory().Size())
|
||||
}
|
||||
|
||||
// Now, we can call "greet", which reads the string we wrote to memory!
|
||||
@@ -102,9 +102,9 @@ func run() error {
|
||||
greetingPtr := uint32(ptrSize[0] >> 32)
|
||||
greetingSize := uint32(ptrSize[0])
|
||||
// The pointer is a linear memory offset, which is where we write the name.
|
||||
if bytes, ok := mod.Memory().Read(ctx, greetingPtr, greetingSize); !ok {
|
||||
if bytes, ok := mod.Memory().Read(greetingPtr, greetingSize); !ok {
|
||||
return fmt.Errorf("Memory.Read(%d, %d) out of range of memory size %d",
|
||||
greetingPtr, greetingSize, mod.Memory().Size(ctx))
|
||||
greetingPtr, greetingSize, mod.Memory().Size())
|
||||
} else {
|
||||
fmt.Println("go >>", string(bytes))
|
||||
}
|
||||
@@ -112,8 +112,8 @@ func run() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func logString(ctx context.Context, m api.Module, offset, byteCount uint32) {
|
||||
buf, ok := m.Memory().Read(ctx, offset, byteCount)
|
||||
func logString(_ context.Context, m api.Module, offset, byteCount uint32) {
|
||||
buf, ok := m.Memory().Read(offset, byteCount)
|
||||
if !ok {
|
||||
log.Panicf("Memory.Read(%d, %d) out of range", offset, byteCount)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user