Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: test/mjsunit/wasm/function-names.js

Issue 1970503004: [wasm] Differentiate unnamed and empty names (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@add-utf8-check
Patch Set: Yang's last comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/cctest/wasm/test-wasm-trap-position.cc ('k') | test/mjsunit/wasm/stack.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/wasm/function-names.js
diff --git a/test/mjsunit/wasm/function-names.js b/test/mjsunit/wasm/function-names.js
new file mode 100644
index 0000000000000000000000000000000000000000..15771d847073604ce457eef33d8ccd601e084561
--- /dev/null
+++ b/test/mjsunit/wasm/function-names.js
@@ -0,0 +1,69 @@
+// Copyright 2016 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Flags: --expose-wasm
+
+load("test/mjsunit/wasm/wasm-constants.js");
+load("test/mjsunit/wasm/wasm-module-builder.js");
+
+var builder = new WasmModuleBuilder();
+
+var last_func_index = builder.addFunction("exec_unreachable", kSig_v_v)
+ .addBody([kExprUnreachable])
+
+var illegal_func_name = [0xff];
+var func_names = [ "☠", illegal_func_name, "some math: (½)² = ¼", "" ];
+var expected_names = ["exec_unreachable", "☠", null,
+ "some math: (½)² = ¼", "", "main"];
+
+for (var func_name of func_names) {
+ last_func_index = builder.addFunction(func_name, kSig_v_v)
+ .addBody([kExprCallFunction, kArity0, last_func_index]).index;
+}
+
+builder.addFunction("main", kSig_v_v)
+ .addBody([kExprCallFunction, kArity0, last_func_index])
+ .exportFunc();
+
+var module = builder.instantiate();
+
+(function testFunctionNamesAsString() {
+ var names = expected_names.concat(["testFunctionNamesAsString", null]);
+ try {
+ module.exports.main();
+ assertFalse("should throw");
+ } catch (e) {
+ var lines = e.stack.split(/\r?\n/);
+ lines.shift();
+ assertEquals(names.length, lines.length);
+ for (var i = 0; i < names.length; ++i) {
+ var line = lines[i].trim();
+ if (names[i] === null) continue;
+ var printed_name = names[i] === undefined ? "<WASM UNNAMED>" : names[i]
+ var expected_start = "at " + printed_name + " (";
+ assertTrue(line.startsWith(expected_start),
+ "should start with '" + expected_start + "': '" + line + "'");
+ }
+ }
+})();
+
+// For the remaining tests, collect the Callsite objects instead of just a
+// string:
+Error.prepareStackTrace = function(error, frames) {
+ return frames;
+};
+
+
+(function testFunctionNamesAsCallSites() {
+ var names = expected_names.concat(["testFunctionNamesAsCallSites", null]);
+ try {
+ module.exports.main();
+ assertFalse("should throw");
+ } catch (e) {
+ assertEquals(names.length, e.stack.length);
+ for (var i = 0; i < names.length; ++i) {
+ assertEquals(names[i], e.stack[i].getFunctionName());
+ }
+ }
+})();
« no previous file with comments | « test/cctest/wasm/test-wasm-trap-position.cc ('k') | test/mjsunit/wasm/stack.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698