| Index: test/cctest/wasm/test-wasm-function-name-table.cc
|
| diff --git a/test/cctest/wasm/test-wasm-function-name-table.cc b/test/cctest/wasm/test-wasm-function-name-table.cc
|
| index f3285df1b76013e355202e4e55d22fa86922a9e8..53c17f50ff63a43d0d8cd140e7ecc557691f9ad7 100644
|
| --- a/test/cctest/wasm/test-wasm-function-name-table.cc
|
| +++ b/test/cctest/wasm/test-wasm-function-name-table.cc
|
| @@ -30,10 +30,13 @@ void testFunctionNameTable(Vector<Vector<const char>> names) {
|
|
|
| WasmModule module;
|
| std::vector<char> all_names;
|
| + // No name should have offset 0, because that encodes unnamed functions.
|
| + // In real wasm binary, offset 0 is impossible anyway.
|
| + all_names.push_back('\0');
|
|
|
| uint32_t func_index = 0;
|
| for (Vector<const char> name : names) {
|
| - size_t name_offset = all_names.size();
|
| + size_t name_offset = name.start() ? all_names.size() : 0;
|
| all_names.insert(all_names.end(), name.start(),
|
| name.start() + name.length());
|
| // Make every second function name null-terminated.
|
| @@ -56,16 +59,21 @@ void testFunctionNameTable(Vector<Vector<const char>> names) {
|
| Handle<Object> string_obj = GetWasmFunctionNameFromTable(
|
| Handle<ByteArray>::cast(wasm_function_name_table), func_index);
|
| CHECK(!string_obj.is_null());
|
| - CHECK(string_obj->IsString());
|
| - Handle<String> string = Handle<String>::cast(string_obj);
|
| - CHECK(string->IsUtf8EqualTo(name));
|
| + if (name.start()) {
|
| + CHECK(string_obj->IsString());
|
| + Handle<String> string = Handle<String>::cast(string_obj);
|
| + CHECK(string->IsUtf8EqualTo(name));
|
| + } else {
|
| + CHECK(string_obj->IsNull());
|
| + }
|
| ++func_index;
|
| }
|
| }
|
|
|
| void testFunctionNameTable(Vector<const char *> names) {
|
| std::vector<Vector<const char>> names_vec;
|
| - for (const char *name : names) names_vec.push_back(CStrVector(name));
|
| + for (const char *name : names)
|
| + names_vec.push_back(name ? CStrVector(name) : Vector<const char>());
|
| testFunctionNameTable(Vector<Vector<const char>>(
|
| names_vec.data(), static_cast<int>(names_vec.size())));
|
| }
|
| @@ -108,3 +116,8 @@ TEST(UTF8Names) {
|
| const char *names[] = {"↱fun↰", "↺", "alpha:α beta:β"};
|
| testFunctionNameTable(ArrayVector(names));
|
| }
|
| +
|
| +TEST(UnnamesVsEmptyNames) {
|
| + const char *names[] = {"", nullptr, nullptr, ""};
|
| + testFunctionNameTable(ArrayVector(names));
|
| +}
|
|
|