Index: test/mjsunit/wasm/receiver.js |
diff --git a/test/mjsunit/wasm/receiver.js b/test/mjsunit/wasm/receiver.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c0070f8b913d703f203c260e16498bbc6b959f6d |
--- /dev/null |
+++ b/test/mjsunit/wasm/receiver.js |
@@ -0,0 +1,45 @@ |
+// 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"); |
+ |
+function testCallImport(func, expected, a, b) { |
+ var builder = new WasmModuleBuilder(); |
+ |
+ var sig_index = builder.addType(kSig_i_dd); |
+ builder.addImport("func", sig_index); |
+ builder.addFunction("main", sig_index) |
+ .addBody([ |
+ kExprGetLocal, 0, // -- |
+ kExprGetLocal, 1, // -- |
+ kExprCallImport, 2, 0]) // -- |
+ .exportAs("main"); |
+ |
+ var main = builder.instantiate({func: func}).exports.main; |
+ |
+ assertEquals(expected, main(a, b)); |
+} |
+ |
+var global = (function() { return this; })(); |
+ |
+function sloppyReceiver(a, b) { |
+ assertEquals(global, this); |
+ assertEquals(33.3, a); |
+ assertEquals(44.4, b); |
+ return 11; |
+} |
+ |
+function strictReceiver(a, b) { |
+ 'use strict'; |
+ assertEquals(undefined, this); |
+ assertEquals(55.5, a); |
+ assertEquals(66.6, b); |
+ return 22; |
+} |
+ |
+testCallImport(sloppyReceiver, 11, 33.3, 44.4); |
+testCallImport(strictReceiver, 22, 55.5, 66.6); |