| OLD | NEW | 
|    1 // Copyright 2016 the V8 project authors. All rights reserved. |    1 // Copyright 2016 the V8 project authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 // Flags: --expose-wasm |    5 // Flags: --expose-wasm | 
|    6  |    6  | 
|    7 load("test/mjsunit/wasm/wasm-constants.js"); |    7 load("test/mjsunit/wasm/wasm-constants.js"); | 
|    8 load("test/mjsunit/wasm/wasm-module-builder.js"); |    8 load("test/mjsunit/wasm/wasm-module-builder.js"); | 
|    9  |    9  | 
|   10 function instantiate(sig, body) { |   10 function instantiate(sig, body) { | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|   30  |   30  | 
|   31 function assertVerifies(sig, body) { |   31 function assertVerifies(sig, body) { | 
|   32   var module = instantiate(sig, body); |   32   var module = instantiate(sig, body); | 
|   33   assertFalse(module === undefined); |   33   assertFalse(module === undefined); | 
|   34   assertFalse(module === null); |   34   assertFalse(module === null); | 
|   35   assertFalse(module === 0); |   35   assertFalse(module === 0); | 
|   36   assertEquals("object", typeof module); |   36   assertEquals("object", typeof module); | 
|   37   return module; |   37   return module; | 
|   38 } |   38 } | 
|   39  |   39  | 
|   40 assertVerifies([kAstStmt], [kExprNop]); |   40 assertVerifies(kSig_v_v, [kExprNop]); | 
|   41 assertVerifies([kAstI32], [kExprI8Const, 0]); |   41 assertVerifies(kSig_i, [kExprI8Const, 0]); | 
|   42  |   42  | 
|   43 // Arguments aren't allow to start functions. |   43 // Arguments aren't allow to start functions. | 
|   44 assertFails([kAstI32, kAstI32], [kExprGetLocal, 0]); |   44 assertFails(kSig_i_i, [kExprGetLocal, 0]); | 
|   45 assertFails([kAstI32, kAstI32, kAstF32], [kExprGetLocal, 0]); |   45 assertFails(kSig_i_ii, [kExprGetLocal, 0]); | 
|   46 assertFails([kAstI32, kAstI32, kAstF32, kAstF64], [kExprGetLocal, 0]); |   46 assertFails(kSig_i_dd, [kExprGetLocal, 0]); | 
|   47  |   47  | 
|   48 (function testInvalidIndex() { |   48 (function testInvalidIndex() { | 
|   49   print("testInvalidIndex"); |   49   print("testInvalidIndex"); | 
|   50   var builder = new WasmModuleBuilder(); |   50   var builder = new WasmModuleBuilder(); | 
|   51  |   51  | 
|   52   var func = builder.addFunction("", [kAstStmt]) |   52   var func = builder.addFunction("", kSig_v_v) | 
|   53     .addBody([kExprNop]); |   53     .addBody([kExprNop]); | 
|   54  |   54  | 
|   55   builder.addStart(func.index + 1); |   55   builder.addStart(func.index + 1); | 
|   56  |   56  | 
|   57   assertThrows(builder.instantiate); |   57   assertThrows(builder.instantiate); | 
|   58 })(); |   58 })(); | 
|   59  |   59  | 
|   60  |   60  | 
|   61 (function testTwoStartFuncs() { |   61 (function testTwoStartFuncs() { | 
|   62   print("testTwoStartFuncs"); |   62   print("testTwoStartFuncs"); | 
|   63   var builder = new WasmModuleBuilder(); |   63   var builder = new WasmModuleBuilder(); | 
|   64  |   64  | 
|   65   var func = builder.addFunction("", [kAstStmt]) |   65   var func = builder.addFunction("", kSig_v_v) | 
|   66     .addBody([kExprNop]); |   66     .addBody([kExprNop]); | 
|   67  |   67  | 
|   68   builder.addExplicitSection([kDeclStartFunction, 0]); |   68   builder.addExplicitSection([kDeclStartFunction, 0]); | 
|   69   builder.addExplicitSection([kDeclStartFunction, 0]); |   69   builder.addExplicitSection([kDeclStartFunction, 0]); | 
|   70  |   70  | 
|   71   assertThrows(builder.instantiate); |   71   assertThrows(builder.instantiate); | 
|   72 })(); |   72 })(); | 
|   73  |   73  | 
|   74  |   74  | 
|   75 (function testRun() { |   75 (function testRun() { | 
|   76   print("testRun"); |   76   print("testRun"); | 
|   77   var builder = new WasmModuleBuilder(); |   77   var builder = new WasmModuleBuilder(); | 
|   78  |   78  | 
|   79   builder.addMemory(12, 12, true); |   79   builder.addMemory(12, 12, true); | 
|   80  |   80  | 
|   81   var func = builder.addFunction("", [kAstStmt]) |   81   var func = builder.addFunction("", kSig_v_v) | 
|   82     .addBody([kExprI8Const, 0, kExprI8Const, 77, kExprI32StoreMem, 0, 0]); |   82     .addBody([kExprI8Const, 0, kExprI8Const, 77, kExprI32StoreMem, 0, 0]); | 
|   83  |   83  | 
|   84   builder.addStart(func.index); |   84   builder.addStart(func.index); | 
|   85  |   85  | 
|   86   var module = builder.instantiate(); |   86   var module = builder.instantiate(); | 
|   87   var memory = module.exports.memory; |   87   var memory = module.exports.memory; | 
|   88   var view = new Int8Array(memory); |   88   var view = new Int8Array(memory); | 
|   89   assertEquals(77, view[0]); |   89   assertEquals(77, view[0]); | 
|   90 })(); |   90 })(); | 
|   91  |   91  | 
|   92 (function testStartFFI() { |   92 (function testStartFFI() { | 
|   93   print("testStartFFI"); |   93   print("testStartFFI"); | 
|   94   var ranned = false; |   94   var ranned = false; | 
|   95   var ffi = { foo : function() { |   95   var ffi = { foo : function() { | 
|   96     print("we ranned at stert!"); |   96     print("we ranned at stert!"); | 
|   97     ranned = true; |   97     ranned = true; | 
|   98   }}; |   98   }}; | 
|   99  |   99  | 
|  100   var builder = new WasmModuleBuilder(); |  100   var builder = new WasmModuleBuilder(); | 
|  101   var sig_index = builder.addSignature([kAstStmt]); |  101   var sig_index = builder.addSignature(kSig_v_v); | 
|  102  |  102  | 
|  103   builder.addImport("foo", sig_index); |  103   builder.addImport("foo", sig_index); | 
|  104   var func = builder.addFunction("", sig_index) |  104   var func = builder.addFunction("", sig_index) | 
|  105     .addBody([kExprCallImport, kArity0, 0]); |  105     .addBody([kExprCallImport, kArity0, 0]); | 
|  106  |  106  | 
|  107   builder.addStart(func.index); |  107   builder.addStart(func.index); | 
|  108  |  108  | 
|  109   var module = builder.instantiate(ffi); |  109   var module = builder.instantiate(ffi); | 
|  110   assertTrue(ranned); |  110   assertTrue(ranned); | 
|  111 })(); |  111 })(); | 
| OLD | NEW |