binary: makes NameMap and IndirectNameMap slices over values, not ptrs (#1351)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
This commit is contained in:
Takeshi Yoneda
2023-04-10 05:27:50 -07:00
committed by GitHub
parent b6d19696da
commit 3cbd881201
9 changed files with 26 additions and 24 deletions

View File

@@ -82,7 +82,7 @@ func encodeNameSubsection(subsectionID uint8, content []byte) []byte {
// encodeNameAssoc encodes the index and data prefixed by their size.
// See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#binary-namemap
func encodeNameAssoc(na *wasm.NameAssoc) []byte {
func encodeNameAssoc(na wasm.NameAssoc) []byte {
return append(leb128.EncodeUint32(na.Index), encodeSizePrefixed([]byte(na.Name))...)
}

View File

@@ -131,12 +131,12 @@ func TestEncodeNameSubsection(t *testing.T) {
}
func TestEncodeNameAssoc(t *testing.T) {
na := &wasm.NameAssoc{Index: 1, Name: "hello"}
na := wasm.NameAssoc{Index: 1, Name: "hello"}
require.Equal(t, []byte{byte(na.Index), 5, 'h', 'e', 'l', 'l', 'o'}, encodeNameAssoc(na))
}
func TestEncodeNameMap(t *testing.T) {
na := &wasm.NameAssoc{Index: 1, Name: "hello"}
na := wasm.NameAssoc{Index: 1, Name: "hello"}
m := wasm.NameMap{na}
require.Equal(t, []byte{byte(1), byte(na.Index), 5, 'h', 'e', 'l', 'l', 'o'}, encodeNameMap(m))
}

View File

@@ -77,15 +77,15 @@ func NewModuleBinary(moduleName string, proxyTarget wazero.CompiledModule) []byt
proxyFuncIndex := cnt + funcNum
// Assigns the same params name as the imported one.
paramNames := &wasm.NameMapAssoc{Index: proxyFuncIndex}
paramNames := wasm.NameMapAssoc{Index: proxyFuncIndex}
for i, n := range def.ParamNames() {
paramNames.NameMap = append(paramNames.NameMap, &wasm.NameAssoc{Index: wasm.Index(i), Name: n})
paramNames.NameMap = append(paramNames.NameMap, wasm.NameAssoc{Index: wasm.Index(i), Name: n})
}
proxyModule.NameSection.LocalNames = append(proxyModule.NameSection.LocalNames, paramNames)
// Plus, assigns the same function name.
proxyModule.NameSection.FunctionNames = append(proxyModule.NameSection.FunctionNames,
&wasm.NameAssoc{Index: proxyFuncIndex, Name: name})
wasm.NameAssoc{Index: proxyFuncIndex, Name: name})
// Finally, exports the proxy function with the same name as the imported one.
proxyModule.ExportSection = append(proxyModule.ExportSection, wasm.Export{