|
21 | 21 |
|
22 | 22 | (import "fuzzing-support" "sleep" (func $sleep (param i32 i32) (result i32))) |
23 | 23 |
|
24 | | - (import "fuzzing-support" "tag" (tag $imported-tag (param i32))) |
| 24 | + (import "fuzzing-support" "wasmtag" (tag $imported-wasm-tag (param i32))) |
| 25 | + (import "fuzzing-support" "jstag" (tag $imported-js-tag (param externref))) |
25 | 26 |
|
26 | 27 | (table $table 10 20 funcref) |
27 | 28 |
|
|
42 | 43 | ) |
43 | 44 |
|
44 | 45 | ;; CHECK: [fuzz-exec] calling throwing |
45 | | - ;; CHECK-NEXT: [exception thrown: __private ()] |
| 46 | + ;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
46 | 47 | (func $throwing (export "throwing") |
47 | 48 | ;; Throwing 0 throws a JS ("private") exception. |
48 | 49 | (call $throw |
|
51 | 52 | ) |
52 | 53 |
|
53 | 54 | ;; CHECK: [fuzz-exec] calling throwing-tag |
54 | | - ;; CHECK-NEXT: [exception thrown: imported-tag 42] |
| 55 | + ;; CHECK-NEXT: [exception thrown: imported-wasm-tag 42] |
55 | 56 | (func $throwing-tag (export "throwing-tag") |
56 | 57 | ;; Throwing non-0 throws using the tag we imported. |
57 | 58 | (call $throw |
|
60 | 61 | ) |
61 | 62 |
|
62 | 63 | ;; CHECK: [fuzz-exec] calling table.setting |
63 | | - ;; CHECK-NEXT: [exception thrown: __private ()] |
| 64 | + ;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
64 | 65 | (func $table.setting (export "table.setting") |
65 | 66 | (call $table.set |
66 | 67 | (i32.const 5) |
|
76 | 77 | ;; CHECK: [fuzz-exec] calling table.getting |
77 | 78 | ;; CHECK-NEXT: [LoggingExternalInterface logging 0] |
78 | 79 | ;; CHECK-NEXT: [LoggingExternalInterface logging 1] |
79 | | - ;; CHECK-NEXT: [exception thrown: __private ()] |
| 80 | + ;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
80 | 81 | (func $table.getting (export "table.getting") |
81 | 82 | ;; There is a non-null value at 5, and a null at 6. |
82 | 83 | (call $log-i32 |
|
104 | 105 | ;; CHECK: [fuzz-exec] calling export.calling |
105 | 106 | ;; CHECK-NEXT: [LoggingExternalInterface logging 42] |
106 | 107 | ;; CHECK-NEXT: [LoggingExternalInterface logging 3.14159] |
107 | | - ;; CHECK-NEXT: [exception thrown: __private ()] |
| 108 | + ;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
108 | 109 | (func $export.calling (export "export.calling") |
109 | 110 | ;; At index 0 in the exports we have $logging, so we will do those loggings. |
110 | 111 | (call $call.export |
|
140 | 141 | ;; CHECK: [fuzz-exec] calling ref.calling |
141 | 142 | ;; CHECK-NEXT: [LoggingExternalInterface logging 42] |
142 | 143 | ;; CHECK-NEXT: [LoggingExternalInterface logging 3.14159] |
143 | | - ;; CHECK-NEXT: [exception thrown: __private ()] |
| 144 | + ;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
144 | 145 | (func $ref.calling (export "ref.calling") |
145 | 146 | ;; This will emit some logging. |
146 | 147 | (call $call.ref |
|
310 | 311 | ) |
311 | 312 | ) |
312 | 313 |
|
| 314 | + ;; CHECK: [fuzz-exec] calling catch-js-tag |
| 315 | + ;; CHECK-NEXT: [fuzz-exec] note result: catch-js-tag => 100 |
| 316 | + (func $catch-js-tag (export "catch-js-tag") (result i32) |
| 317 | + ;; The table.set out of bounds will throw a JS exception, so it will be caught |
| 318 | + ;; by the catch here, and we'll return the number at the end. |
| 319 | + (drop |
| 320 | + (block $out (result externref) |
| 321 | + (try_table (catch $imported-js-tag $out) |
| 322 | + (call $table.set |
| 323 | + (i32.const 9999) |
| 324 | + (ref.func $table.setting) |
| 325 | + ) |
| 326 | + (return |
| 327 | + (i32.const -1) |
| 328 | + ) |
| 329 | + ) |
| 330 | + ) |
| 331 | + ) |
| 332 | + (i32.const 100) |
| 333 | + ) |
| 334 | + |
| 335 | + |
313 | 336 | ;; CHECK: [fuzz-exec] calling do-sleep |
314 | 337 | ;; CHECK-NEXT: [fuzz-exec] note result: do-sleep => 42 |
315 | 338 | ;; CHECK-NEXT: warning: no passes specified, not doing any work |
|
327 | 350 | ;; CHECK-NEXT: [LoggingExternalInterface logging 3.14159] |
328 | 351 |
|
329 | 352 | ;; CHECK: [fuzz-exec] calling throwing |
330 | | -;; CHECK-NEXT: [exception thrown: __private ()] |
| 353 | +;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
331 | 354 |
|
332 | 355 | ;; CHECK: [fuzz-exec] calling throwing-tag |
333 | | -;; CHECK-NEXT: [exception thrown: imported-tag 42] |
| 356 | +;; CHECK-NEXT: [exception thrown: imported-wasm-tag 42] |
334 | 357 |
|
335 | 358 | ;; CHECK: [fuzz-exec] calling table.setting |
336 | | -;; CHECK-NEXT: [exception thrown: __private ()] |
| 359 | +;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
337 | 360 |
|
338 | 361 | ;; CHECK: [fuzz-exec] calling table.getting |
339 | 362 | ;; CHECK-NEXT: [LoggingExternalInterface logging 0] |
340 | 363 | ;; CHECK-NEXT: [LoggingExternalInterface logging 1] |
341 | | -;; CHECK-NEXT: [exception thrown: __private ()] |
| 364 | +;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
342 | 365 |
|
343 | 366 | ;; CHECK: [fuzz-exec] calling export.calling |
344 | 367 | ;; CHECK-NEXT: [LoggingExternalInterface logging 42] |
345 | 368 | ;; CHECK-NEXT: [LoggingExternalInterface logging 3.14159] |
346 | | -;; CHECK-NEXT: [exception thrown: __private ()] |
| 369 | +;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
347 | 370 |
|
348 | 371 | ;; CHECK: [fuzz-exec] calling export.calling.catching |
349 | 372 | ;; CHECK-NEXT: [LoggingExternalInterface logging 42] |
|
354 | 377 | ;; CHECK: [fuzz-exec] calling ref.calling |
355 | 378 | ;; CHECK-NEXT: [LoggingExternalInterface logging 42] |
356 | 379 | ;; CHECK-NEXT: [LoggingExternalInterface logging 3.14159] |
357 | | -;; CHECK-NEXT: [exception thrown: __private ()] |
| 380 | +;; CHECK-NEXT: [exception thrown: imported-js-tag externref] |
358 | 381 |
|
359 | 382 | ;; CHECK: [fuzz-exec] calling ref.calling.catching |
360 | 383 | ;; CHECK-NEXT: [LoggingExternalInterface logging 42] |
|
385 | 408 | ;; CHECK: [fuzz-exec] calling ref.calling.trap |
386 | 409 | ;; CHECK-NEXT: [trap unreachable] |
387 | 410 |
|
| 411 | +;; CHECK: [fuzz-exec] calling catch-js-tag |
| 412 | +;; CHECK-NEXT: [fuzz-exec] note result: catch-js-tag => 100 |
| 413 | + |
388 | 414 | ;; CHECK: [fuzz-exec] calling do-sleep |
389 | 415 | ;; CHECK-NEXT: [fuzz-exec] note result: do-sleep => 42 |
| 416 | +;; CHECK-NEXT: [fuzz-exec] comparing catch-js-tag |
390 | 417 | ;; CHECK-NEXT: [fuzz-exec] comparing do-sleep |
391 | 418 | ;; CHECK-NEXT: [fuzz-exec] comparing export.calling |
392 | 419 | ;; CHECK-NEXT: [fuzz-exec] comparing export.calling.catching |
|
0 commit comments