deps: V8: revert rapidhash commits

This reverts the following V8 commits:

    Revert "[string] Fix rapidhash on big endian"
    This reverts commit 3c6749f39dcaf071f7140d501eb6c507ba7d762e.

    Revert "Fix build with older gcc and clang compilers"
    This reverts commit 63cb5b3519339bb90a50f5d2150c527d1a6ab96f.

    Revert "[string] Fix overflow case of TryParseArrayIndex"
    This reverts commit f99c2e013acce0c54611c0a67bcb6212577693d4.

    Revert "[string] Optimize and refactor index hashing"
    This reverts commit dcbc9e7460732aa3cf836cc3d0d9b53406786a1e.

    Revert "[string] Use rapidhash for string hashing"
    This reverts commit d329f49df91ff1774b4190da11cbe63cb322eded.

PR-URL: https://github.com/nodejs-private/node-private/pull/713
Refs: https://hackerone.com/reports/3131758
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
CVE-ID: CVE-2025-27209
This commit is contained in:
Michaël Zasso 2025-05-09 13:40:21 +02:00 committed by RafaelGSS
parent a8e4e0613c
commit fd717c9feb
No known key found for this signature in database
GPG key ID: 8BEAB4DFCF555EF4
63 changed files with 588 additions and 1210 deletions

1
deps/v8/.gitignore vendored
View file

@ -89,7 +89,6 @@
/third_party/jsoncpp/source
!/third_party/llvm-libc
/third_party/llvm-libc/src
!/third_party/rapidhash-v8
!/third_party/re2
/third_party/re2/src
!/third_party/siphash

2
deps/v8/BUILD.bazel vendored
View file

@ -2507,7 +2507,6 @@ filegroup(
"src/strings/string-builder-inl.h",
"src/strings/string-case.cc",
"src/strings/string-case.h",
"src/strings/string-hasher.cc",
"src/strings/string-hasher.h",
"src/strings/string-hasher-inl.h",
"src/strings/string-search.h",
@ -2584,7 +2583,6 @@ filegroup(
"src/zone/zone-segment.h",
"src/zone/zone-type-traits.h",
"src/zone/zone-utils.h",
"third_party/rapidhash-v8/rapidhash.h",
"third_party/siphash/halfsiphash.cc",
"third_party/siphash/halfsiphash.h",
"third_party/utf8-decoder/utf8-decoder.h",

2
deps/v8/BUILD.gn vendored
View file

@ -4290,7 +4290,6 @@ v8_header_set("v8_internal_headers") {
"src/tasks/operations-barrier.h",
"src/tasks/task-utils.h",
"src/temporal/temporal-parser.h",
"src/third_party/rapidhash-v8/rapidhash.h",
"src/torque/runtime-macro-shims.h",
"src/tracing/trace-event-no-perfetto.h",
"src/tracing/trace-event.h",
@ -5793,7 +5792,6 @@ v8_source_set("v8_base_without_compiler") {
"src/strings/char-predicates.cc",
"src/strings/string-builder.cc",
"src/strings/string-case.cc",
"src/strings/string-hasher.cc",
"src/strings/string-stream.cc",
"src/strings/unicode-decoder.cc",
"src/strings/unicode.cc",

3
deps/v8/src/DEPS vendored
View file

@ -129,7 +129,4 @@ specific_include_rules = {
"snapshot\.cc": [
"+src/heap/read-only-promotion.h",
],
"string-hasher-inl\.h": [
"+third_party/rapidhash-v8/rapidhash.h",
]
}

View file

@ -8,10 +8,8 @@
#include <atomic>
#include "src/base/bit-field.h"
#include "src/common/globals.h"
#include "src/objects/objects.h"
#include "src/objects/primitive-heap-object.h"
#include "src/utils/utils.h"
#include "torque-generated/bit-fields.h"
// Has to be the last include (doesn't have include guards):
@ -149,12 +147,9 @@ V8_OBJECT class Name : public PrimitiveHeapObject {
// Array index strings this short can keep their index in the hash field.
static const int kMaxCachedArrayIndexLength = 7;
static const uint32_t kMaxArrayIndex = kMaxUInt32 - 1;
// Maximum number of characters to consider when trying to convert a string
// value into an array index.
static const int kMaxArrayIndexSize = 10;
static_assert(TenToThe(kMaxArrayIndexSize) >= kMaxArrayIndex);
static_assert(TenToThe(kMaxArrayIndexSize - 1) < kMaxArrayIndex);
// Maximum number of characters in a string that can possibly be an
// "integer index" in the spec sense, i.e. a canonical representation of a
// number in the range up to MAX_SAFE_INTEGER. We parse these into a size_t,

View file

@ -6,16 +6,6 @@
#define V8_STRINGS_STRING_HASHER_INL_H_
#include "src/strings/string-hasher.h"
// Include the non-inl header before the rest of the headers.
#include "src/common/globals.h"
#include "src/utils/utils.h"
#ifdef __SSE2__
#include <emmintrin.h>
#elif defined(__ARM_NEON__)
#include <arm_neon.h>
#endif
// Comment inserted to prevent header reordering.
#include <type_traits>
@ -24,55 +14,19 @@
#include "src/objects/string-inl.h"
#include "src/strings/char-predicates-inl.h"
#include "src/utils/utils-inl.h"
#include "third_party/rapidhash-v8/rapidhash.h"
namespace v8 {
namespace internal {
namespace detail {
V8_EXPORT_PRIVATE uint64_t HashConvertingTo8Bit(const uint16_t* chars,
uint32_t length, uint64_t seed);
template <typename T>
uint32_t ConvertRawHashToUsableHash(T raw_hash) {
namespace {
// static
uint32_t ConvertRawHashToUsableHash(uint32_t raw_hash) {
// Limit to the supported bits.
const int32_t hash = static_cast<int32_t>(raw_hash & String::HashBits::kMax);
// Ensure that the hash is kZeroHash, if the computed value is 0.
return hash == 0 ? StringHasher::kZeroHash : hash;
}
V8_INLINE bool IsOnly8Bit(const uint16_t* chars, unsigned len) {
// TODO(leszeks): This could be SIMD for efficiency on large strings, if we
// need it.
for (unsigned i = 0; i < len; ++i) {
if (chars[i] > 255) {
return false;
}
}
return true;
}
V8_INLINE uint64_t GetRapidHash(const uint8_t* chars, uint32_t length,
uint64_t seed) {
return rapidhash(chars, length, seed);
}
V8_INLINE uint64_t GetRapidHash(const uint16_t* chars, uint32_t length,
uint64_t seed) {
// For 2-byte strings we need to preserve the same hash for strings in just
// the latin-1 range.
if (V8_UNLIKELY(IsOnly8Bit(chars, length))) {
return detail::HashConvertingTo8Bit(chars, length, seed);
}
return rapidhash(reinterpret_cast<const uint8_t*>(chars), 2 * length, seed);
}
template <typename uchar>
V8_INLINE uint32_t GetUsableRapidHash(const uchar* chars, uint32_t length,
uint64_t seed) {
return ConvertRawHashToUsableHash(GetRapidHash(chars, length, seed));
}
} // namespace detail
} // namespace
void RunningStringHasher::AddCharacter(uint16_t c) {
running_hash_ += c;
@ -84,7 +38,7 @@ uint32_t RunningStringHasher::Finalize() {
running_hash_ += (running_hash_ << 3);
running_hash_ ^= (running_hash_ >> 11);
running_hash_ += (running_hash_ << 15);
return detail::ConvertRawHashToUsableHash(running_hash_);
return ConvertRawHashToUsableHash(running_hash_);
}
uint32_t StringHasher::GetTrivialHash(uint32_t length) {
@ -113,112 +67,6 @@ uint32_t StringHasher::MakeArrayIndexHash(uint32_t value, uint32_t length) {
return value;
}
namespace detail {
enum IndexParseResult { kSuccess, kNonIndex, kOverflow };
// The array index type depends on the architecture, so that the multiplication
// in TryParseArrayIndex stays fast.
#if V8_HOST_ARCH_64_BIT
using ArrayIndexT = uint64_t;
#else
using ArrayIndexT = uint32_t;
#endif
template <typename uchar>
V8_INLINE IndexParseResult TryParseArrayIndex(const uchar* chars,
uint32_t length, uint32_t& i,
ArrayIndexT& index) {
DCHECK_GT(length, 0);
DCHECK_LE(length, String::kMaxIntegerIndexSize);
// The leading character can only be a zero for the string "0"; otherwise this
// isn't a valid index string.
index = chars[0] - '0';
i = 1;
if (index > 9) return kNonIndex;
if (index == 0) {
if (length > 1) return kNonIndex;
DCHECK_EQ(length, 1);
return kSuccess;
}
if (length > String::kMaxArrayIndexSize) return kOverflow;
// TODO(leszeks): Use SIMD for this loop.
for (; i < length; i++) {
uchar c = chars[i];
uint32_t val = c - '0';
if (val > 9) return kNonIndex;
index = (10 * index) + val;
}
if constexpr (sizeof(index) == sizeof(uint64_t)) {
// If we have a large type for index, we'll never overflow it, so we can
// have a simple comparison for array index overflow.
if (index > String::kMaxArrayIndex) {
return kOverflow;
}
} else {
DCHECK(sizeof(index) == sizeof(uint32_t));
// If index is a 32-bit int, we have to get a bit creative with the overflow
// check.
if (V8_UNLIKELY(length == String::kMaxArrayIndexSize)) {
// If length is String::kMaxArrayIndexSize, and we know there is no zero
// prefix, the minimum valid value is 1 followed by length - 1 zeros. If
// our value is smaller than this, then we overflowed.
//
// Additionally, String::kMaxArrayIndex is UInt32Max - 1, so we can fold
// in a check that index < UInt32Max by adding 1 to both sides, making
// index = UInt32Max overflows, and only then checking for overflow.
constexpr uint32_t kMinValidValue =
TenToThe(String::kMaxArrayIndexSize - 1);
if (index + 1 < kMinValidValue + 1) {
// We won't try an integer index if there is overflow, so just return
// non-index.
DCHECK(String::kMaxArrayIndexSize == String::kMaxIntegerIndexSize);
return kNonIndex;
}
}
}
DCHECK_LT(index, TenToThe(length));
DCHECK_GE(index, TenToThe(length - 1));
return kSuccess;
}
// The following function wouldn't do anything on 32-bit platforms, because
// kMaxArrayIndexSize == kMaxIntegerIndexSize there.
#if V8_HOST_ARCH_64_BIT
template <typename uchar>
V8_INLINE IndexParseResult TryParseIntegerIndex(const uchar* chars,
uint32_t length, uint32_t i,
ArrayIndexT index) {
DCHECK_GT(length, 0);
DCHECK_LE(length, String::kMaxIntegerIndexSize);
DCHECK_GT(i, 0);
DCHECK_GT(index, 0);
DCHECK_LT(index, kMaxSafeIntegerUint64);
for (; i < length; i++) {
// We should never be anywhere near overflowing, so we can just do
// one range check at the end.
static_assert(kMaxSafeIntegerUint64 < (kMaxUInt64 / 100));
DCHECK_LT(index, kMaxUInt64 / 100);
uchar c = chars[i];
uint32_t val = c - '0';
if (val > 9) return kNonIndex;
index = (10 * index) + val;
}
if (index > kMaxSafeIntegerUint64) return kOverflow;
return kSuccess;
}
#else
static_assert(String::kMaxArrayIndexSize == String::kMaxIntegerIndexSize);
#endif
} // namespace detail
template <typename char_t>
uint32_t StringHasher::HashSequentialString(const char_t* chars_raw,
uint32_t length, uint64_t seed) {
@ -228,54 +76,95 @@ uint32_t StringHasher::HashSequentialString(const char_t* chars_raw,
const uchar* chars = reinterpret_cast<const uchar*>(chars_raw);
DCHECK_IMPLIES(length > 0, chars != nullptr);
if (length >= 1) {
if (length <= String::kMaxIntegerIndexSize) {
// Possible array or integer index; try to compute the array index hash.
static_assert(String::kMaxArrayIndexSize <= String::kMaxIntegerIndexSize);
if (length <= String::kMaxIntegerIndexSize && IsDecimalDigit(chars[0]) &&
(length == 1 || chars[0] != '0')) {
uint32_t index = chars[0] - '0';
uint32_t i = 1;
if (length <= String::kMaxArrayIndexSize) {
// Possible array index; try to compute the array index hash.
static_assert(String::kMaxArrayIndexSize <=
String::kMaxIntegerIndexSize);
detail::ArrayIndexT index;
uint32_t i;
switch (detail::TryParseArrayIndex(chars, length, i, index)) {
case detail::kSuccess:
DCHECK_LE(index, String::kMaxArrayIndex);
return MakeArrayIndexHash(static_cast<uint32_t>(index), length);
case detail::kNonIndex:
// A non-index result from TryParseArrayIndex means we don't need to
// check for integer indices.
break;
case detail::kOverflow: {
#if V8_HOST_ARCH_64_BIT
// On 64-bit, we might have a valid integer index even if the value
// overflowed an array index.
static_assert(String::kMaxArrayIndexSize <
String::kMaxIntegerIndexSize);
switch (detail::TryParseIntegerIndex(chars, length, i, index)) {
case detail::kSuccess: {
uint32_t hash = String::CreateHashFieldValue(
detail::GetUsableRapidHash(chars, length, seed),
String::HashFieldType::kIntegerIndex);
if (Name::ContainsCachedArrayIndex(hash)) {
// The hash accidentally looks like a cached index. Fix that by
// setting a bit that looks like a longer-than-cacheable string
// length.
hash |= (String::kMaxCachedArrayIndexLength + 1)
<< String::ArrayIndexLengthBits::kShift;
}
DCHECK(!Name::ContainsCachedArrayIndex(hash));
return hash;
}
case detail::kNonIndex:
case detail::kOverflow:
break;
// We can safely add digits until `String::kMaxArrayIndexSize - 1`
// without needing an overflow check -- if the whole string is
// smaller than this, we can skip the overflow check entirely.
bool needs_overflow_check = length == String::kMaxArrayIndexSize;
uint32_t safe_length = needs_overflow_check ? length - 1 : length;
for (; i < safe_length; i++) {
char_t c = chars[i];
if (!IsDecimalDigit(c)) {
// If there is a non-decimal digit, we can skip doing anything
// else and emit a non-index hash.
goto non_index_hash;
}
#else
static_assert(String::kMaxArrayIndexSize ==
String::kMaxIntegerIndexSize);
#endif
index = (10 * index) + (c - '0');
}
DCHECK_EQ(i, safe_length);
// If we didn't need to check for an overflowing value, we're
// done.
if (!needs_overflow_check) {
DCHECK_EQ(i, length);
return MakeArrayIndexHash(index, length);
}
// Otherwise, the last character needs to be checked for both being
// digit, and the result being in bounds of the maximum array index.
DCHECK_EQ(i, length - 1);
char_t c = chars[i];
if (!IsDecimalDigit(c)) {
// If there is a non-decimal digit, we can skip doing anything
// else and emit a non-index hash.
goto non_index_hash;
}
if (TryAddArrayIndexChar(&index, c)) {
return MakeArrayIndexHash(index, length);
}
// If the range check fails, this falls through into the integer index
// check.
}
// The following block wouldn't do anything on 32-bit platforms,
// because kMaxArrayIndexSize == kMaxIntegerIndexSize there, and
// if we wanted to compile it everywhere, then {index_big} would
// have to be a {size_t}, which the Mac compiler doesn't like to
// implicitly cast to uint64_t for the {TryAddIndexChar} call.
#if V8_HOST_ARCH_64_BIT
// No "else" here: if the block above was entered and fell through,
// we have something that's not an array index but might still have
// been all digits and therefore a valid in-range integer index.
// Perform a regular hash computation, and additionally check if
// there are non-digit characters.
String::HashFieldType type = String::HashFieldType::kIntegerIndex;
uint64_t index_big = index;
RunningStringHasher hasher(static_cast<uint32_t>(seed));
for (uint32_t j = 0; j < i; j++) {
hasher.AddCharacter(chars[j]);
}
for (; i < length; i++) {
char_t c = chars[i];
hasher.AddCharacter(c);
// TODO(leszeks): Split this into a safe length iteration.
if (!IsDecimalDigit(c) || !TryAddIntegerIndexChar(&index_big, c)) {
for (i = i + 1; i < length; i++) {
hasher.AddCharacter(chars[i]);
}
type = String::HashFieldType::kHash;
break;
}
}
// If the we failed to compute an index hash, this falls through into the
// non-index hash case.
DCHECK_EQ(i, length);
uint32_t hash = String::CreateHashFieldValue(hasher.Finalize(), type);
if (Name::ContainsCachedArrayIndex(hash)) {
DCHECK_EQ(type, String::HashFieldType::kIntegerIndex);
// The hash accidentally looks like a cached index. Fix that by
// setting a bit that looks like a longer-than-cacheable string
// length.
hash |= (String::kMaxCachedArrayIndexLength + 1)
<< String::ArrayIndexLengthBits::kShift;
}
DCHECK(!Name::ContainsCachedArrayIndex(hash));
return hash;
#endif
} else if (length > String::kMaxHashCalcLength) {
// We should never go down this path if we might have an index value.
static_assert(String::kMaxHashCalcLength > String::kMaxIntegerIndexSize);
@ -284,10 +173,15 @@ uint32_t StringHasher::HashSequentialString(const char_t* chars_raw,
}
}
non_index_hash:
// Non-index hash.
return String::CreateHashFieldValue(
detail::GetUsableRapidHash(chars, length, seed),
String::HashFieldType::kHash);
RunningStringHasher hasher(static_cast<uint32_t>(seed));
const uchar* end = &chars[length];
while (chars != end) {
hasher.AddCharacter(*chars++);
}
return String::CreateHashFieldValue(hasher.Finalize(),
String::HashFieldType::kHash);
}
std::size_t SeededStringHasher::operator()(const char* name) const {

View file

@ -1,78 +0,0 @@
// Copyright 2024 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.
#include "src/strings/string-hasher.h"
#include "src/strings/string-hasher-inl.h"
namespace v8::internal {
struct ConvertTo8BitHashReader {
static constexpr unsigned kCompressionFactor = 2;
static constexpr unsigned kExpansionFactor = 1;
V8_INLINE static uint64_t Read64(const uint8_t* ptr) {
const uint16_t* p = reinterpret_cast<const uint16_t*>(ptr);
DCHECK_LE(p[0], 0xff);
DCHECK_LE(p[1], 0xff);
DCHECK_LE(p[2], 0xff);
DCHECK_LE(p[3], 0xff);
DCHECK_LE(p[4], 0xff);
DCHECK_LE(p[5], 0xff);
DCHECK_LE(p[6], 0xff);
DCHECK_LE(p[7], 0xff);
#ifdef __SSE2__
__m128i x = _mm_loadu_si128(reinterpret_cast<const __m128i*>(p));
return _mm_cvtsi128_si64(_mm_packus_epi16(x, x));
#elif defined(__ARM_NEON__)
int16x8_t x;
memcpy(&x, p, sizeof(x));
return vget_lane_u64(vreinterpret_u64_u8(vmovn_u16(x)), 0);
#else
return (uint64_t{p[0]}) | (uint64_t{p[1]} << 8) | (uint64_t{p[2]} << 16) |
(uint64_t{p[3]} << 24) | (uint64_t{p[4]} << 32) |
(uint64_t{p[5]} << 40) | (uint64_t{p[6]} << 48) |
(uint64_t{p[7]} << 56);
#endif
}
V8_INLINE static uint64_t Read32(const uint8_t* ptr) {
const uint16_t* p = reinterpret_cast<const uint16_t*>(ptr);
DCHECK_LE(p[0], 0xff);
DCHECK_LE(p[1], 0xff);
DCHECK_LE(p[2], 0xff);
DCHECK_LE(p[3], 0xff);
#ifdef __SSE2__
__m128i x = _mm_loadu_si64(reinterpret_cast<const __m128i*>(p));
return _mm_cvtsi128_si64(_mm_packus_epi16(x, x));
#elif defined(__ARM_NEON__)
int8x8_t x;
memcpy(&x, p, sizeof(x));
int16x8_t x_wide = vcombine_u64(x, x);
return vget_lane_u32(vreinterpret_u32_u8(vmovn_u16(x_wide)), 0);
#else
return (uint64_t{p[0]}) | (uint64_t{p[1]} << 8) | (uint64_t{p[2]} << 16) |
(uint64_t{p[3]} << 24);
#endif
}
V8_INLINE static uint64_t ReadSmall(const uint8_t* ptr, size_t k) {
const uint16_t* p = reinterpret_cast<const uint16_t*>(ptr);
DCHECK_LE(p[0], 0xff);
DCHECK_LE(p[k >> 1], 0xff);
DCHECK_LE(p[k - 1], 0xff);
return (uint64_t{p[0]} << 56) | (uint64_t{p[k >> 1]} << 32) | p[k - 1];
}
};
namespace detail {
uint64_t HashConvertingTo8Bit(const uint16_t* chars, uint32_t length,
uint64_t seed) {
return rapidhash<ConvertTo8BitHashReader>(
reinterpret_cast<const uint8_t*>(chars), length, seed);
}
} // namespace detail
} // namespace v8::internal

View file

@ -10,7 +10,6 @@
#include "include/v8-platform.h"
#include "src/base/platform/time.h"
#include "src/base/strings.h"
#include "src/init/v8.h"
#include "src/strings/char-predicates-inl.h"

View file

@ -541,15 +541,13 @@ inline int CompareChars(const lchar* lhs, const rchar* rhs, size_t chars) {
}
// Calculate 10^exponent.
inline constexpr uint64_t TenToThe(uint32_t exponent) {
DCHECK_LE(exponent, 19);
DCHECK_GE(exponent, 0);
uint64_t answer = 1;
for (uint32_t i = 0; i < exponent; i++) answer *= 10;
inline int TenToThe(int exponent) {
DCHECK_LE(exponent, 9);
DCHECK_GE(exponent, 1);
int answer = 10;
for (int i = 1; i < exponent; i++) answer *= 10;
return answer;
}
static_assert(TenToThe(19) < kMaxUInt64);
static_assert(TenToThe(19) > kMaxUInt64 / 10);
// Bit field extraction.
inline uint32_t unsigned_bitextract_32(int msb, int lsb, uint32_t x) {

View file

@ -6,7 +6,7 @@ Building wasm module with sentinel 1.
Running fib with increasing input until it shows up in the profile.
Found expected functions in profile.
Wasm script id is set.
Wasm position: wasm://wasm/ed5627ce@0:47
Wasm position: wasm://wasm/6b211e7e@0:47
Running test: testEnableProfilerLate
Compiling wasm.
@ -14,7 +14,7 @@ Building wasm module with sentinel 2.
Running fib with increasing input until it shows up in the profile.
Found expected functions in profile.
Wasm script id is set.
Wasm position: wasm://wasm/def0f3f2@0:47
Wasm position: wasm://wasm/d6029ed6@0:47
Running test: testEnableProfilerAfterDebugger
Compiling wasm.
@ -22,7 +22,7 @@ Building wasm module with sentinel 3.
Running fib with increasing input until it shows up in the profile.
Found expected functions in profile.
Wasm script id is set.
Wasm position: wasm://wasm/e950bb4a@0:47
Wasm position: wasm://wasm/6df1c11a@0:47
Running test: testEnableProfilerBeforeDebugger
Compiling wasm.
@ -30,7 +30,7 @@ Building wasm module with sentinel 4.
Running fib with increasing input until it shows up in the profile.
Found expected functions in profile.
Wasm script id is set.
Wasm position: wasm://wasm/d8d4f97a@0:47
Wasm position: wasm://wasm/07da49be@0:47
Running test: testRunningCodeInDifferentIsolate
Building wasm module with sentinel 5.
@ -43,5 +43,5 @@ Running in the debugged isolate.
Running fib with increasing input until it shows up in the profile.
Found expected functions in profile.
Wasm script id is set.
Wasm position: wasm://wasm/8ffda0ce@0:47
Wasm position: wasm://wasm/ba5e5b4e@0:47
Disabling profiler.

View file

@ -5,7 +5,7 @@ Instantiating.
Waiting for wasm script (ignoring first non-wasm script).
Setting breakpoint.
Calling func.
Script wasm://wasm/aa8b4c12 byte offset 33: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/8c388106 byte offset 33: Wasm opcode 0x01 (kExprNop)
func returned.
Restarting debugger.
Calling func.

View file

@ -3,7 +3,7 @@ Test conditional breakpoints in wasm.
Running test: test
Instantiating.
Waiting for wasm script.
Got wasm script: wasm://wasm/c5d9f10e
Got wasm script: wasm://wasm/f00dbc56
Setting breakpoint at offset 34, condition "false"
{
id : <messageId>
@ -41,26 +41,26 @@ Setting breakpoint at offset 46, condition "$var0.value==3"
}
}
Calling fib(5)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 5 (i32)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 4 (i32)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 3 (i32)
Script wasm://wasm/c5d9f10e byte offset 46: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/f00dbc56 byte offset 46: Wasm opcode 0x10 (kExprCallFunction)
$var0: 3 (i32)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 2 (i32)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 1 (i32)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 2 (i32)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 3 (i32)
Script wasm://wasm/c5d9f10e byte offset 46: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/f00dbc56 byte offset 46: Wasm opcode 0x10 (kExprCallFunction)
$var0: 3 (i32)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 2 (i32)
Script wasm://wasm/c5d9f10e byte offset 41: Wasm opcode 0x0d (kExprBrIf)
Script wasm://wasm/f00dbc56 byte offset 41: Wasm opcode 0x0d (kExprBrIf)
$var0: 1 (i32)
fib returned!

View file

@ -3,8 +3,8 @@ Tests debug command for wasm
Running test: test
Waiting for wasm scripts to be parsed.
Ignoring script with url v8://test/instantiate
Got wasm script: wasm://wasm/fd1bd682
Got wasm script: wasm://wasm/7d022e0e
paused No 1
Script wasm://wasm/fd1bd682 byte offset 35: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/7d022e0e byte offset 35: Wasm opcode 0x20 (kExprLocalGet)
Debugger.resume
exports.main returned!

View file

@ -13,7 +13,7 @@ Setting breakpoint
scriptId : <scriptId>
}
Paused:
Script wasm://wasm/9b78fa1a byte offset 316: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/4ed17ea6 byte offset 316: Wasm opcode 0x01 (kExprNop)
Scope:
at $main (0:316):
- scope (wasm-expression-stack):

View file

@ -3,10 +3,10 @@ Tests GC object inspection.
Running test: test
Instantiating.
Waiting for wasm script (ignoring first non-wasm script).
Setting breakpoint at offset 103 on script wasm://wasm/27d1b772
Setting breakpoint at offset 103 on script wasm://wasm/b3f93902
Calling main()
Paused:
Script wasm://wasm/27d1b772 byte offset 103: Wasm opcode 0x1a (kExprDrop)
Script wasm://wasm/b3f93902 byte offset 103: Wasm opcode 0x1a (kExprDrop)
Scope:
at $main (0:103):
- scope (wasm-expression-stack):

View file

@ -1,12 +1,12 @@
Tests GC within DebugBreak
Running test: test
Script wasm://wasm/d14f671e byte offset 51: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/38e28046 byte offset 51: Wasm opcode 0x20 (kExprLocalGet)
GC triggered
Debugger.resume
log: Hello World (v8://test/instantiate:11:36)
at bar (v8://test/instantiate:11:36)
at $wasm_A (wasm://wasm/d14f671e:1:54)
at $wasm_A (wasm://wasm/38e28046:1:54)
at test (test.js:4:20)
at (anonymous function) (:1:1)
exports.main returned!

View file

@ -22,7 +22,7 @@ Setting breakpoint
scriptId : <scriptId>
}
Paused:
Script wasm://wasm/493c7026 byte offset 72: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/f0d3cad2 byte offset 72: Wasm opcode 0x01 (kExprNop)
Scope:
at $main (0:72):
- scope (wasm-expression-stack):
@ -39,7 +39,7 @@ at (anonymous) (0:18):
-- skipped globals
Paused:
Script wasm://wasm/b9d0fb8a byte offset 108: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/699aa072 byte offset 108: Wasm opcode 0x01 (kExprNop)
Scope:
at $main (0:108):
- scope (wasm-expression-stack):

View file

@ -3,7 +3,7 @@ Tests breakable locations in wasm
Running test: test
Running testFunction...
Script nr 0 parsed. URL: v8://test/instantiate
Script nr 1 parsed. URL: wasm://wasm/f3bba79a
Script nr 1 parsed. URL: wasm://wasm/354ada0e
This is a wasm script (nr 0).
Querying breakable locations for all wasm scripts now...
Requesting all breakable locations in wasm script 0
@ -32,46 +32,46 @@ Requesting breakable locations in offsets [50,60)
[3] 0:57 || byte=11
[4] 0:58 || byte=11
Setting a breakpoint on each breakable location...
Setting at wasm://wasm/f3bba79a:0:40
Setting at wasm://wasm/354ada0e:0:40
Success!
Setting at wasm://wasm/f3bba79a:0:41
Setting at wasm://wasm/354ada0e:0:41
Success!
Setting at wasm://wasm/f3bba79a:0:43
Setting at wasm://wasm/354ada0e:0:43
Success!
Setting at wasm://wasm/f3bba79a:0:45
Setting at wasm://wasm/354ada0e:0:45
Success!
Setting at wasm://wasm/f3bba79a:0:48
Setting at wasm://wasm/354ada0e:0:48
Success!
Setting at wasm://wasm/f3bba79a:0:50
Setting at wasm://wasm/354ada0e:0:50
Success!
Setting at wasm://wasm/f3bba79a:0:54
Setting at wasm://wasm/354ada0e:0:54
Success!
Setting at wasm://wasm/f3bba79a:0:56
Setting at wasm://wasm/354ada0e:0:56
Success!
Setting at wasm://wasm/f3bba79a:0:57
Setting at wasm://wasm/354ada0e:0:57
Success!
Setting at wasm://wasm/f3bba79a:0:58
Setting at wasm://wasm/354ada0e:0:58
Success!
Running wasm code...
Missing breakpoints: 10
Script nr 2 parsed. URL: v8://test/runWasm
Stopped at wasm://wasm/f3bba79a:0:48
Stopped at wasm://wasm/354ada0e:0:48
Missing breakpoints: 9
Stopped at wasm://wasm/f3bba79a:0:50
Stopped at wasm://wasm/354ada0e:0:50
Missing breakpoints: 8
Stopped at wasm://wasm/f3bba79a:0:54
Stopped at wasm://wasm/354ada0e:0:54
Missing breakpoints: 7
Stopped at wasm://wasm/f3bba79a:0:40
Stopped at wasm://wasm/354ada0e:0:40
Missing breakpoints: 6
Stopped at wasm://wasm/f3bba79a:0:41
Stopped at wasm://wasm/354ada0e:0:41
Missing breakpoints: 5
Stopped at wasm://wasm/f3bba79a:0:43
Stopped at wasm://wasm/354ada0e:0:43
Missing breakpoints: 4
Stopped at wasm://wasm/f3bba79a:0:45
Stopped at wasm://wasm/354ada0e:0:45
Missing breakpoints: 3
Stopped at wasm://wasm/f3bba79a:0:56
Stopped at wasm://wasm/354ada0e:0:56
Missing breakpoints: 2
Stopped at wasm://wasm/f3bba79a:0:57
Stopped at wasm://wasm/354ada0e:0:57
Missing breakpoints: 1
Stopped at wasm://wasm/f3bba79a:0:58
Stopped at wasm://wasm/354ada0e:0:58
Missing breakpoints: 0

View file

@ -4,16 +4,16 @@ Calling instantiate function for module A.
Waiting for wasm script to be parsed.
Got wasm script!
Setting breakpoint in line 1:
Script wasm://wasm/aa8b4c12 byte offset 33: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/8c388106 byte offset 33: Wasm opcode 0x01 (kExprNop)
Calling instantiate function for module B.
Calling main function on module B.
Paused at 0:33.
Script wasm://wasm/aa8b4c12 byte offset 33: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/8c388106 byte offset 33: Wasm opcode 0x01 (kExprNop)
Getting current stack trace via "new Error().stack".
Error
at v8://test/getStack:1:1
at func (wasm://wasm/aa8b4c12:wasm-function[0]:0x21)
at main (wasm://wasm/a6b2a496:wasm-function[1]:0x2f)
at func (wasm://wasm/8c388106:wasm-function[0]:0x21)
at main (wasm://wasm/24ba77a6:wasm-function[1]:0x2f)
at v8://test/runWasm:1:22
exports.main returned.
Finished.

View file

@ -14,8 +14,8 @@ Hit breakpoints: []
Instantiating module.
Paused at v8://test/instantiate with reason "instrumentation".
Hit breakpoints: []
Paused at wasm://wasm/341d515e with reason "instrumentation".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "instrumentation".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Instantiating a second time (should trigger no breakpoint).
Paused at v8://test/instantiate2 with reason "instrumentation".
@ -33,14 +33,14 @@ Setting instrumentation breakpoint
Instantiating module.
Paused at v8://test/instantiate with reason "instrumentation".
Hit breakpoints: []
Paused at wasm://wasm/341d515e with reason "instrumentation".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "instrumentation".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Instantiating a second time (should trigger another breakpoint).
Paused at v8://test/instantiate with reason "instrumentation".
Hit breakpoints: []
Paused at wasm://wasm/341d515e with reason "instrumentation".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "instrumentation".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Done.
@ -58,8 +58,8 @@ Hit breakpoints: []
Calling exported function 'func' (should trigger a breakpoint).
Paused at v8://test/call_func with reason "instrumentation".
Hit breakpoints: []
Paused at wasm://wasm/aa8b4c12 with reason "instrumentation".
Script wasm://wasm/aa8b4c12 byte offset 33: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/8c388106 with reason "instrumentation".
Script wasm://wasm/8c388106 byte offset 33: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Calling exported function 'func' a second time (should trigger no breakpoint).
Paused at v8://test/call_func with reason "instrumentation".
@ -78,8 +78,8 @@ Instantiating wasm module without source map.
Calling exported function 'func' (should trigger no breakpoint).
Instantiating wasm module with source map.
Calling exported function 'func' (should trigger a breakpoint).
Paused at wasm://wasm/b2871d1e with reason "instrumentation".
Script wasm://wasm/b2871d1e byte offset 33: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/c8e3a856 with reason "instrumentation".
Script wasm://wasm/c8e3a856 byte offset 33: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Done.
@ -125,8 +125,8 @@ Hit breakpoints: []
Instantiating module should trigger a break.
Paused at v8://test/instantiate with reason "instrumentation".
Hit breakpoints: []
Paused at wasm://wasm/341d515e with reason "instrumentation".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "instrumentation".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Remove instrumentation breakpoint..
Compiling another wasm module.

View file

@ -6,8 +6,8 @@ console: Error location: Error
at doPause (test.js:45:34)
at testSimple (test.js:71:3)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x4e)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x4e)
at wrapperFunc (test.js:36:15)
at test_framework.js:1:1
@ -15,8 +15,8 @@ Debugger paused on debugger statement
doPause (test.js:45:2)
testSimple (test.js:70:2)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
(anonymous) (test_framework.js:0:0)
@ -25,31 +25,31 @@ console: Error location: Error
at doPause (test.js:45:34)
at testSimple (test.js:71:3)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x52)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x52)
at async wrapperFunc (test.js:38:12)
Debugger paused on debugger statement
doPause (test.js:45:2)
testSimple (test.js:70:2)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
console: Error location: Error
at doPause (test.js:45:34)
at testSimple (test.js:71:3)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x56)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x56)
at async wrapperFunc (test.js:38:12)
Debugger paused on debugger statement
doPause (test.js:45:2)
testSimple (test.js:70:2)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:86)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:86)
Returned result {"result":{"type":"number","value":3,"description":"3"}}
@ -65,8 +65,8 @@ doPause (test.js:45:2)
testSetTimeout (test.js:76:2)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
(anonymous) (test_framework.js:0:0)
@ -80,14 +80,14 @@ doPause (test.js:45:2)
testSetTimeout (test.js:76:2)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
-- setTimeout --
result (test.js:75:40)
testSetTimeout (test.js:75:23)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
(anonymous) (test_framework.js:0:0)
@ -101,20 +101,20 @@ doPause (test.js:45:2)
testSetTimeout (test.js:76:2)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:86)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:86)
-- setTimeout --
result (test.js:75:40)
testSetTimeout (test.js:75:23)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
-- setTimeout --
result (test.js:75:40)
testSetTimeout (test.js:75:23)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
(anonymous) (test_framework.js:0:0)
@ -125,13 +125,13 @@ console: Error location: Error
at doPause (test.js:45:34)
at innerPause (test.js:84:5)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x4e)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x4e)
at wrapperFunc (test.js:36:15)
at testDoubleNested (test.js:92:11)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x4e)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x4e)
at wrapperFunc (test.js:36:15)
at test_framework.js:1:1
@ -139,13 +139,13 @@ Debugger paused on debugger statement
doPause (test.js:45:2)
innerPause (test.js:83:4)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
(anonymous) (test_framework.js:0:0)
@ -161,13 +161,13 @@ doPause (test.js:45:2)
innerPause (test.js:85:4)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
(anonymous) (test_framework.js:0:0)
@ -175,13 +175,13 @@ Debugger paused on caught exception
innerPause (test.js:87:4)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
(anonymous) (test_framework.js:0:0)
@ -189,26 +189,26 @@ console: Error location: Error
at doPause (test.js:45:34)
at innerPause (test.js:84:5)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x4e)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x4e)
at wrapperFunc (test.js:36:15)
at testDoubleNested (test.js:92:11)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x52)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x52)
at async wrapperFunc (test.js:38:12)
Debugger paused on debugger statement
doPause (test.js:45:2)
innerPause (test.js:83:4)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
console: Suspending wrapperFunc
console: Error location: Error
@ -221,50 +221,50 @@ doPause (test.js:45:2)
innerPause (test.js:85:4)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
Debugger paused on caught exception
innerPause (test.js:87:4)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
console: Error location: Error
at doPause (test.js:45:34)
at innerPause (test.js:84:5)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x4e)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x4e)
at wrapperFunc (test.js:36:15)
at testDoubleNested (test.js:92:11)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x56)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x56)
at async wrapperFunc (test.js:38:12)
Debugger paused on debugger statement
doPause (test.js:45:2)
innerPause (test.js:83:4)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:86)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:86)
console: Suspending wrapperFunc
console: Error location: Error
@ -277,25 +277,25 @@ doPause (test.js:45:2)
innerPause (test.js:85:4)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:86)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:86)
Debugger paused on caught exception
innerPause (test.js:87:4)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDoubleNested (test.js:91:10)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:86)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:86)
Returned result {"result":{"type":"number","value":3,"description":"3"}}
@ -306,8 +306,8 @@ console: Error location: Error
at doPause (test.js:45:34)
at testSimple (test.js:71:3)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x4e)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x4e)
at wrapperFunc (test.js:36:15)
at thread1 (test.js:56:18)
at testStackSwitching (test.js:66:37)
@ -317,8 +317,8 @@ Debugger paused on debugger statement
doPause (test.js:45:2)
testSimple (test.js:70:2)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
thread1 (test.js:55:17)
testStackSwitching (test.js:65:36)
@ -329,8 +329,8 @@ console: Error location: Error
at doPause (test.js:45:34)
at alsoSimple (test.js:52:5)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x4e)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x4e)
at wrapperFunc (test.js:36:15)
at thread2 (test.js:59:18)
at testStackSwitching (test.js:66:48)
@ -340,8 +340,8 @@ Debugger paused on debugger statement
doPause (test.js:45:2)
alsoSimple (test.js:51:4)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
thread2 (test.js:58:17)
testStackSwitching (test.js:65:47)
@ -367,8 +367,8 @@ console: Error location: Error
at doPause (test.js:45:34)
at testSimple (test.js:71:3)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x52)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x52)
at async wrapperFunc (test.js:38:12)
at async thread1 (test.js:56:12)
at async Promise.all (index 0)
@ -378,15 +378,15 @@ Debugger paused on debugger statement
doPause (test.js:45:2)
testSimple (test.js:70:2)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
console: Error location: Error
at doPause (test.js:45:34)
at alsoSimple (test.js:52:5)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x52)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x52)
at async wrapperFunc (test.js:38:12)
at async thread2 (test.js:59:12)
at async Promise.all (index 1)
@ -396,8 +396,8 @@ Debugger paused on debugger statement
doPause (test.js:45:2)
alsoSimple (test.js:51:4)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
console: Error location: Error
at doPause (test.js:45:34)
@ -433,8 +433,8 @@ console: Error location: Error
at doPause (test.js:45:34)
at testSimple (test.js:71:3)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x56)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x56)
at async wrapperFunc (test.js:38:12)
at async thread1 (test.js:56:12)
at async Promise.all (index 0)
@ -444,15 +444,15 @@ Debugger paused on debugger statement
doPause (test.js:45:2)
testSimple (test.js:70:2)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:86)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:86)
console: Error location: Error
at doPause (test.js:45:34)
at alsoSimple (test.js:52:5)
at js_func (test.js:25:18)
at wrappedWasm (wasm://wasm/2a184bf2:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/2a184bf2:wasm-function[2]:0x56)
at wrappedWasm (wasm://wasm/fac94cc6:wasm-function[1]:0x47)
at threeTimes (wasm://wasm/fac94cc6:wasm-function[2]:0x56)
at async wrapperFunc (test.js:38:12)
at async thread2 (test.js:59:12)
at async Promise.all (index 1)
@ -462,8 +462,8 @@ Debugger paused on debugger statement
doPause (test.js:45:2)
alsoSimple (test.js:51:4)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:86)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:86)
Returned result {"result":{"type":"string","value":"3,6,3"}}
@ -473,8 +473,8 @@ Testing catch prediction through JSPI throwing from testSyncThrow to testCatch
Debugger paused on caught exception
testSyncThrow (test.js:97:2)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testCatch (test.js:116:10)
(anonymous) (test_framework.js:0:0)
@ -489,8 +489,8 @@ Debugger paused on caught exception
testAsyncThrow (test.js:102:2)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testCatch (test.js:116:10)
(anonymous) (test_framework.js:0:0)
@ -503,8 +503,8 @@ console: Suspending wrapperFunc
Debugger paused on caught exception
testSyncThrowAfterResume (test.js:110:4)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
console: caught: fail
Returned result {"result":{"type":"undefined"}}
@ -513,8 +513,8 @@ Testing catch prediction through JSPI throwing from testSyncThrow to testDontCat
Debugger paused on uncaught exception
testSyncThrow (test.js:97:2)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDontCatch (test.js:125:2)
(anonymous) (test_framework.js:0:0)
@ -529,8 +529,8 @@ Debugger paused on uncaught exception
testAsyncThrow (test.js:102:2)
-- await --
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:78)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:78)
wrapperFunc (test.js:35:14)
testDontCatch (test.js:125:2)
(anonymous) (test_framework.js:0:0)
@ -543,8 +543,8 @@ console: Suspending wrapperFunc
Debugger paused on uncaught exception
testSyncThrowAfterResume (test.js:110:4)
js_func (test.js:24:17)
$wrappedWasm (wasm://wasm/2a184bf2:0:71)
$threeTimes (wasm://wasm/2a184bf2:0:82)
$wrappedWasm (wasm://wasm/fac94cc6:0:71)
$threeTimes (wasm://wasm/fac94cc6:0:82)
Returned result {"result":{"type":"undefined"}}
Exception was not caught

View file

@ -4,7 +4,7 @@ Running test: Test
Calling instantiate function.
Waiting for wasm scripts to be parsed.
Ignoring script with url v8://test/instantiate
Got wasm script: wasm://wasm/fd1bd682
Got wasm script: wasm://wasm/7d022e0e
Setting breakpoint on line 3 of wasm function
{
columnNumber : 39
@ -12,7 +12,7 @@ Setting breakpoint on line 3 of wasm function
scriptId : <scriptId>
}
paused No 1
Script wasm://wasm/fd1bd682 byte offset 39: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/7d022e0e byte offset 39: Wasm opcode 0x6b (kExprI32Sub)
Remove breakpoint
Debugger.resume
exports.main returned!

View file

@ -11,7 +11,7 @@ Setting breakpoint on line 2 (first instruction) of third function
scriptId : <scriptId>
}
Paused:
Script wasm://wasm/8daa7452 byte offset 169: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/e33badc2 byte offset 169: Wasm opcode 0x20 (kExprLocalGet)
Scope:
at $C (interpreted) (0:169):
- scope (wasm-expression-stack):
@ -64,7 +64,7 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
Script wasm://wasm/8daa7452 byte offset 171: Wasm opcode 0x24 (kExprGlobalSet)
Script wasm://wasm/e33badc2 byte offset 171: Wasm opcode 0x24 (kExprGlobalSet)
Scope:
at $C (interpreted) (0:171):
- scope (wasm-expression-stack):
@ -117,7 +117,7 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
Script wasm://wasm/8daa7452 byte offset 173: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/e33badc2 byte offset 173: Wasm opcode 0x41 (kExprI32Const)
Scope:
at $C (interpreted) (0:173):
- scope (wasm-expression-stack):
@ -170,7 +170,7 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
Script wasm://wasm/8daa7452 byte offset 175: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/e33badc2 byte offset 175: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at $C (interpreted) (0:175):
- scope (wasm-expression-stack):
@ -223,7 +223,7 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
Script wasm://wasm/8daa7452 byte offset 177: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/e33badc2 byte offset 177: Wasm opcode 0x0b (kExprEnd)
Scope:
at $C (interpreted) (0:177):
- scope (wasm-expression-stack):
@ -276,7 +276,7 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
Script wasm://wasm/8daa7452 byte offset 160: Wasm opcode 0x1a (kExprDrop)
Script wasm://wasm/e33badc2 byte offset 160: Wasm opcode 0x1a (kExprDrop)
Scope:
at $B (liftoff) (0:160):
- scope (wasm-expression-stack):
@ -314,7 +314,7 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
Script wasm://wasm/8daa7452 byte offset 161: Wasm opcode 0x1a (kExprDrop)
Script wasm://wasm/e33badc2 byte offset 161: Wasm opcode 0x1a (kExprDrop)
Scope:
at $B (liftoff) (0:161):
- scope (wasm-expression-stack):
@ -352,7 +352,7 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
Script wasm://wasm/8daa7452 byte offset 162: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/e33badc2 byte offset 162: Wasm opcode 0x0b (kExprEnd)
Scope:
at $B (liftoff) (0:162):
- scope (wasm-expression-stack):
@ -390,7 +390,7 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
Script wasm://wasm/8daa7452 byte offset 130: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/e33badc2 byte offset 130: Wasm opcode 0x0b (kExprEnd)
Scope:
at $A (liftoff) (0:130):
- scope (wasm-expression-stack):

View file

@ -9,7 +9,7 @@ done
codeOffset : 20
debugSymbols : [
]
embedderName : wasm://wasm/93c1e41e
embedderName : wasm://wasm/a7090996
endColumn : 68
endLine : 0
executionContextId : <executionContextId>
@ -34,7 +34,7 @@ done
}
startColumn : 0
startLine : 0
url : wasm://wasm/93c1e41e
url : wasm://wasm/a7090996
}
Done.
@ -47,7 +47,7 @@ done
codeOffset : 20
debugSymbols : [
]
embedderName : wasm://wasm/252a2e9e
embedderName : wasm://wasm/76d6ec9e
endColumn : 40
endLine : 0
executionContextId : <executionContextId>
@ -72,6 +72,6 @@ done
}
startColumn : 0
startLine : 0
url : wasm://wasm/252a2e9e
url : wasm://wasm/76d6ec9e
}
Done.

View file

@ -1,6 +1,6 @@
Tests disassembling wasm scripts
Session #1: Script parsed. URL: wasm://wasm/moduleName-32fa2962.
Session #1: Source for wasm://wasm/moduleName-32fa2962:
Session #1: Script parsed. URL: wasm://wasm/moduleName-70e7540a.
Session #1: Source for wasm://wasm/moduleName-70e7540a:
bytecode:
0x00 0x61 0x73 0x6d 0x01 0x00 0x00 0x00 ;; offset 0..7
0x01 0x09 0x02 0x60 0x01 0x6f 0x01 0x7f ;; offset 8..15

View file

@ -1,122 +1,122 @@
Tests how wasm scripts are reported
Check that each inspector gets a wasm script at module creation time.
Session #1: Script #0 parsed. URL: wasm://wasm/95d28bc6. Script ID: 0, Source map URL: , debug symbols: []. module begin: 0, module end: 77, code offset: 34
Session #2: Script #0 parsed. URL: wasm://wasm/95d28bc6. Script ID: 0, Source map URL: , debug symbols: []. module begin: 0, module end: 77, code offset: 34
Session #1: Script #1 parsed. URL: wasm://wasm/95d28bc6. Script ID: 0, Source map URL: , debug symbols: []. module begin: 0, module end: 77, code offset: 34
Session #2: Script #1 parsed. URL: wasm://wasm/95d28bc6. Script ID: 0, Source map URL: , debug symbols: []. module begin: 0, module end: 77, code offset: 34
Session #1: Script #2 parsed. URL: wasm://wasm/7adb1e36. Script ID: 1, Source map URL: , debug symbols: [ExternalDWARF:abc]. module begin: 0, module end: 103, code offset: 34
Session #2: Script #2 parsed. URL: wasm://wasm/7adb1e36. Script ID: 1, Source map URL: , debug symbols: [ExternalDWARF:abc]. module begin: 0, module end: 103, code offset: 34
Session #1: Script #3 parsed. URL: wasm://wasm/908b2a0a. Script ID: 2, Source map URL: , debug symbols: [EmbeddedDWARF:undefined]. module begin: 0, module end: 96, code offset: 34
Session #2: Script #3 parsed. URL: wasm://wasm/908b2a0a. Script ID: 2, Source map URL: , debug symbols: [EmbeddedDWARF:undefined]. module begin: 0, module end: 96, code offset: 34
Session #1: Script #4 parsed. URL: wasm://wasm/a6778d32. Script ID: 3, Source map URL: abc, debug symbols: [SourceMap:abc]. module begin: 0, module end: 100, code offset: 34
Session #2: Script #4 parsed. URL: wasm://wasm/a6778d32. Script ID: 3, Source map URL: abc, debug symbols: [SourceMap:abc]. module begin: 0, module end: 100, code offset: 34
Session #1: Script #5 parsed. URL: wasm://wasm/932c8bee. Script ID: 4, Source map URL: abc, debug symbols: [SourceMap:abc,ExternalDWARF:abc]. module begin: 0, module end: 126, code offset: 34
Session #2: Script #5 parsed. URL: wasm://wasm/932c8bee. Script ID: 4, Source map URL: abc, debug symbols: [SourceMap:abc,ExternalDWARF:abc]. module begin: 0, module end: 126, code offset: 34
Session #1: Script #6 parsed. URL: wasm://wasm/ff1c21ea. Script ID: 5, Source map URL: abc, debug symbols: [SourceMap:abc,ExternalDWARF:abc]. module begin: 0, module end: 126, code offset: 34
Session #2: Script #6 parsed. URL: wasm://wasm/ff1c21ea. Script ID: 5, Source map URL: abc, debug symbols: [SourceMap:abc,ExternalDWARF:abc]. module begin: 0, module end: 126, code offset: 34
Session #1: Script #7 parsed. URL: wasm://wasm/61c68ca6. Script ID: 6, Source map URL: , debug symbols: [EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 122, code offset: 34
Session #2: Script #7 parsed. URL: wasm://wasm/61c68ca6. Script ID: 6, Source map URL: , debug symbols: [EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 122, code offset: 34
Session #1: Script #8 parsed. URL: wasm://wasm/05327fba. Script ID: 7, Source map URL: , debug symbols: [EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 122, code offset: 34
Session #2: Script #8 parsed. URL: wasm://wasm/05327fba. Script ID: 7, Source map URL: , debug symbols: [EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 122, code offset: 34
Session #1: Script #9 parsed. URL: wasm://wasm/498d127a. Script ID: 8, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined]. module begin: 0, module end: 119, code offset: 34
Session #2: Script #9 parsed. URL: wasm://wasm/498d127a. Script ID: 8, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined]. module begin: 0, module end: 119, code offset: 34
Session #1: Script #10 parsed. URL: wasm://wasm/aaebee8a. Script ID: 9, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined]. module begin: 0, module end: 119, code offset: 34
Session #2: Script #10 parsed. URL: wasm://wasm/aaebee8a. Script ID: 9, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined]. module begin: 0, module end: 119, code offset: 34
Session #1: Script #11 parsed. URL: wasm://wasm/c2605b36. Script ID: 10, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 145, code offset: 34
Session #2: Script #11 parsed. URL: wasm://wasm/c2605b36. Script ID: 10, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 145, code offset: 34
Session #1: Source for wasm://wasm/95d28bc6:
Session #1: Script #0 parsed. URL: wasm://wasm/7b04570e. Script ID: 0, Source map URL: , debug symbols: []. module begin: 0, module end: 77, code offset: 34
Session #2: Script #0 parsed. URL: wasm://wasm/7b04570e. Script ID: 0, Source map URL: , debug symbols: []. module begin: 0, module end: 77, code offset: 34
Session #1: Script #1 parsed. URL: wasm://wasm/7b04570e. Script ID: 0, Source map URL: , debug symbols: []. module begin: 0, module end: 77, code offset: 34
Session #2: Script #1 parsed. URL: wasm://wasm/7b04570e. Script ID: 0, Source map URL: , debug symbols: []. module begin: 0, module end: 77, code offset: 34
Session #1: Script #2 parsed. URL: wasm://wasm/21e2f406. Script ID: 1, Source map URL: , debug symbols: [ExternalDWARF:abc]. module begin: 0, module end: 103, code offset: 34
Session #2: Script #2 parsed. URL: wasm://wasm/21e2f406. Script ID: 1, Source map URL: , debug symbols: [ExternalDWARF:abc]. module begin: 0, module end: 103, code offset: 34
Session #1: Script #3 parsed. URL: wasm://wasm/ba7c35be. Script ID: 2, Source map URL: , debug symbols: [EmbeddedDWARF:undefined]. module begin: 0, module end: 96, code offset: 34
Session #2: Script #3 parsed. URL: wasm://wasm/ba7c35be. Script ID: 2, Source map URL: , debug symbols: [EmbeddedDWARF:undefined]. module begin: 0, module end: 96, code offset: 34
Session #1: Script #4 parsed. URL: wasm://wasm/1baa71fe. Script ID: 3, Source map URL: abc, debug symbols: [SourceMap:abc]. module begin: 0, module end: 100, code offset: 34
Session #2: Script #4 parsed. URL: wasm://wasm/1baa71fe. Script ID: 3, Source map URL: abc, debug symbols: [SourceMap:abc]. module begin: 0, module end: 100, code offset: 34
Session #1: Script #5 parsed. URL: wasm://wasm/c047292e. Script ID: 4, Source map URL: abc, debug symbols: [SourceMap:abc,ExternalDWARF:abc]. module begin: 0, module end: 126, code offset: 34
Session #2: Script #5 parsed. URL: wasm://wasm/c047292e. Script ID: 4, Source map URL: abc, debug symbols: [SourceMap:abc,ExternalDWARF:abc]. module begin: 0, module end: 126, code offset: 34
Session #1: Script #6 parsed. URL: wasm://wasm/e56b2672. Script ID: 5, Source map URL: abc, debug symbols: [SourceMap:abc,ExternalDWARF:abc]. module begin: 0, module end: 126, code offset: 34
Session #2: Script #6 parsed. URL: wasm://wasm/e56b2672. Script ID: 5, Source map URL: abc, debug symbols: [SourceMap:abc,ExternalDWARF:abc]. module begin: 0, module end: 126, code offset: 34
Session #1: Script #7 parsed. URL: wasm://wasm/c9614a4e. Script ID: 6, Source map URL: , debug symbols: [EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 122, code offset: 34
Session #2: Script #7 parsed. URL: wasm://wasm/c9614a4e. Script ID: 6, Source map URL: , debug symbols: [EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 122, code offset: 34
Session #1: Script #8 parsed. URL: wasm://wasm/639d13c6. Script ID: 7, Source map URL: , debug symbols: [EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 122, code offset: 34
Session #2: Script #8 parsed. URL: wasm://wasm/639d13c6. Script ID: 7, Source map URL: , debug symbols: [EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 122, code offset: 34
Session #1: Script #9 parsed. URL: wasm://wasm/95e97206. Script ID: 8, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined]. module begin: 0, module end: 119, code offset: 34
Session #2: Script #9 parsed. URL: wasm://wasm/95e97206. Script ID: 8, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined]. module begin: 0, module end: 119, code offset: 34
Session #1: Script #10 parsed. URL: wasm://wasm/7ab47392. Script ID: 9, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined]. module begin: 0, module end: 119, code offset: 34
Session #2: Script #10 parsed. URL: wasm://wasm/7ab47392. Script ID: 9, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined]. module begin: 0, module end: 119, code offset: 34
Session #1: Script #11 parsed. URL: wasm://wasm/6d81a006. Script ID: 10, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 145, code offset: 34
Session #2: Script #11 parsed. URL: wasm://wasm/6d81a006. Script ID: 10, Source map URL: abc, debug symbols: [SourceMap:abc,EmbeddedDWARF:undefined,ExternalDWARF:abc]. module begin: 0, module end: 145, code offset: 34
Session #1: Source for wasm://wasm/7b04570e:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/95d28bc6:
Session #2: Source for wasm://wasm/7b04570e:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/95d28bc6:
Session #1: Source for wasm://wasm/7b04570e:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/95d28bc6:
Session #2: Source for wasm://wasm/7b04570e:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/7adb1e36:
Session #1: Source for wasm://wasm/21e2f406:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/7adb1e36:
Session #2: Source for wasm://wasm/21e2f406:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/908b2a0a:
Session #1: Source for wasm://wasm/ba7c35be:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/908b2a0a:
Session #2: Source for wasm://wasm/ba7c35be:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/a6778d32:
Session #1: Source for wasm://wasm/1baa71fe:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/a6778d32:
Session #2: Source for wasm://wasm/1baa71fe:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/932c8bee:
Session #1: Source for wasm://wasm/c047292e:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/932c8bee:
Session #2: Source for wasm://wasm/c047292e:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/ff1c21ea:
Session #1: Source for wasm://wasm/e56b2672:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/ff1c21ea:
Session #2: Source for wasm://wasm/e56b2672:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/61c68ca6:
Session #1: Source for wasm://wasm/c9614a4e:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/61c68ca6:
Session #2: Source for wasm://wasm/c9614a4e:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/05327fba:
Session #1: Source for wasm://wasm/639d13c6:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/05327fba:
Session #2: Source for wasm://wasm/639d13c6:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/498d127a:
Session #1: Source for wasm://wasm/95e97206:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/498d127a:
Session #2: Source for wasm://wasm/95e97206:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/aaebee8a:
Session #1: Source for wasm://wasm/7ab47392:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/aaebee8a:
Session #2: Source for wasm://wasm/7ab47392:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #1: Source for wasm://wasm/c2605b36:
Session #1: Source for wasm://wasm/6d81a006:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]
Session #2: Source for wasm://wasm/c2605b36:
Session #2: Source for wasm://wasm/6d81a006:
Raw: 00 61 73 6d 01 00 00 00 01 07 02 60 00 00 60 00 00 03 03 02 00 01 07 08 01 04 6d 61 69 6e 00 01 0a 0e 02 03 00 01 0b 08 00 02 40 41 02 1a 0b 0b 00 15 10 73 6f 75 72 63 65 4d 61 70 70 69 6e 67 55 52 4c 03 61 62 63 00 11 0b 2e 64 65 62 75 67 5f 69 6e 66 6f 01 02 03 04 05 00 18 13 65 78 74 65 72 6e 61 6c 5f 64 65 62 75 67 5f 69 6e 66 6f 03 61 62 63 00 1b 04 6e 61 6d 65 01 14 02 00 0b 6e 6f 70 46 75 6e 63 74 69 6f 6e 01 04 6d 61 69 6e
Imports: []
Exports: [main: function]

View file

@ -1,7 +1,7 @@
Tests how wasm scripts are reported with name
Check that the inspector gets four wasm scripts at module creation time.
Session #1: Script #0 parsed. URL: wasm://wasm/e28c8a92.
Session #1: Script #1 parsed. URL: wasm://wasm/moduleName-70d13c92.
Session #1: Source for wasm://wasm/e28c8a92:
Session #1: Script #0 parsed. URL: wasm://wasm/a4d4331e.
Session #1: Script #1 parsed. URL: wasm://wasm/moduleName-d7525102.
Session #1: Source for wasm://wasm/a4d4331e:
Session #1: Source for wasm://wasm/moduleName-70d13c92:
Session #1: Source for wasm://wasm/moduleName-d7525102:

View file

@ -3,10 +3,10 @@ Tests stepping through wasm scripts.
Running test: test
Instantiating.
Waiting for wasm script (ignoring first non-wasm script).
Setting breakpoint at offset 38 on script wasm://wasm/24c0ccda
Setting breakpoint at offset 38 on script wasm://wasm/0c10a5fe
Calling main(4)
Paused:
Script wasm://wasm/24c0ccda byte offset 38: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/0c10a5fe byte offset 38: Wasm opcode 0x01 (kExprNop)
Scope:
at $wasm_A (0:38):
- scope (wasm-expression-stack):
@ -37,7 +37,7 @@ Setting breakpoint at offset 49 on script v8://test/runWasm
Setting breakpoint at offset 45 on script v8://test/runWasm
Setting breakpoint at offset 47 on script v8://test/runWasm
Paused:
Script wasm://wasm/24c0ccda byte offset 39: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/0c10a5fe byte offset 39: Wasm opcode 0x01 (kExprNop)
Scope:
at $wasm_A (0:39):
- scope (wasm-expression-stack):
@ -59,7 +59,7 @@ at $wasm_B (0:56):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/0c10a5fe byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Scope:
at $wasm_B (0:45):
- scope (wasm-expression-stack):
@ -73,7 +73,7 @@ at $wasm_B (0:45):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 47: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
at $wasm_B (0:47):
- scope (wasm-expression-stack):
@ -87,7 +87,7 @@ at $wasm_B (0:47):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/0c10a5fe byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Scope:
at $wasm_B (0:49):
- scope (wasm-expression-stack):
@ -101,7 +101,7 @@ at $wasm_B (0:49):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
at $wasm_B (0:51):
- scope (wasm-expression-stack):
@ -115,7 +115,7 @@ at $wasm_B (0:51):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
at $wasm_B (0:53):
- scope (wasm-expression-stack):
@ -129,7 +129,7 @@ at $wasm_B (0:53):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at $wasm_B (0:54):
- scope (wasm-expression-stack):
@ -143,7 +143,7 @@ at $wasm_B (0:54):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 38: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/0c10a5fe byte offset 38: Wasm opcode 0x01 (kExprNop)
Scope:
at $wasm_A (0:38):
- scope (wasm-expression-stack):
@ -165,7 +165,7 @@ at $wasm_B (0:56):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 39: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/0c10a5fe byte offset 39: Wasm opcode 0x01 (kExprNop)
Scope:
at $wasm_A (0:39):
- scope (wasm-expression-stack):
@ -187,7 +187,7 @@ at $wasm_B (0:56):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/0c10a5fe byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Scope:
at $wasm_B (0:45):
- scope (wasm-expression-stack):
@ -201,7 +201,7 @@ at $wasm_B (0:45):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 47: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
at $wasm_B (0:47):
- scope (wasm-expression-stack):
@ -215,7 +215,7 @@ at $wasm_B (0:47):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/0c10a5fe byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Scope:
at $wasm_B (0:49):
- scope (wasm-expression-stack):
@ -229,7 +229,7 @@ at $wasm_B (0:49):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
at $wasm_B (0:51):
- scope (wasm-expression-stack):
@ -243,7 +243,7 @@ at $wasm_B (0:51):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
at $wasm_B (0:53):
- scope (wasm-expression-stack):
@ -257,7 +257,7 @@ at $wasm_B (0:53):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at $wasm_B (0:54):
- scope (wasm-expression-stack):
@ -271,7 +271,7 @@ at $wasm_B (0:54):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 38: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/0c10a5fe byte offset 38: Wasm opcode 0x01 (kExprNop)
Scope:
at $wasm_A (0:38):
- scope (wasm-expression-stack):
@ -293,7 +293,7 @@ at $wasm_B (0:56):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 39: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/0c10a5fe byte offset 39: Wasm opcode 0x01 (kExprNop)
Scope:
at $wasm_A (0:39):
- scope (wasm-expression-stack):
@ -315,7 +315,7 @@ at $wasm_B (0:56):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/0c10a5fe byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Scope:
at $wasm_B (0:45):
- scope (wasm-expression-stack):
@ -329,7 +329,7 @@ at $wasm_B (0:45):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 47: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
at $wasm_B (0:47):
- scope (wasm-expression-stack):
@ -343,7 +343,7 @@ at $wasm_B (0:47):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/0c10a5fe byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Scope:
at $wasm_B (0:49):
- scope (wasm-expression-stack):
@ -357,7 +357,7 @@ at $wasm_B (0:49):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
at $wasm_B (0:51):
- scope (wasm-expression-stack):
@ -371,7 +371,7 @@ at $wasm_B (0:51):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
at $wasm_B (0:53):
- scope (wasm-expression-stack):
@ -385,7 +385,7 @@ at $wasm_B (0:53):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at $wasm_B (0:54):
- scope (wasm-expression-stack):
@ -399,7 +399,7 @@ at $wasm_B (0:54):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 38: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/0c10a5fe byte offset 38: Wasm opcode 0x01 (kExprNop)
Scope:
at $wasm_A (0:38):
- scope (wasm-expression-stack):
@ -421,7 +421,7 @@ at $wasm_B (0:56):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 39: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/0c10a5fe byte offset 39: Wasm opcode 0x01 (kExprNop)
Scope:
at $wasm_A (0:39):
- scope (wasm-expression-stack):
@ -443,7 +443,7 @@ at $wasm_B (0:56):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/0c10a5fe byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Scope:
at $wasm_B (0:45):
- scope (wasm-expression-stack):
@ -457,7 +457,7 @@ at $wasm_B (0:45):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 47: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
at $wasm_B (0:47):
- scope (wasm-expression-stack):
@ -471,7 +471,7 @@ at $wasm_B (0:47):
at (anonymous) (0:17):
-- skipped
Paused:
Script wasm://wasm/24c0ccda byte offset 61: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/0c10a5fe byte offset 61: Wasm opcode 0x0b (kExprEnd)
Scope:
at $wasm_B (0:61):
- scope (wasm-expression-stack):

View file

@ -9,11 +9,11 @@ Instantiating module.
Paused at v8://test/instantiate with reason "instrumentation".
Hit breakpoints: []
Setting breakpoint at instrumentation break location
Paused at wasm://wasm/341d515e with reason "instrumentation".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "instrumentation".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Paused at wasm://wasm/341d515e with reason "other".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "other".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: ["4:0:26:4"]
Done.
@ -26,11 +26,11 @@ Instantiating module.
Paused at v8://test/instantiate with reason "instrumentation".
Hit breakpoints: []
Setting breakpoint at instrumentation break location
Paused at wasm://wasm/341d515e with reason "instrumentation".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "instrumentation".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Paused at wasm://wasm/341d515e with reason "other".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "other".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: ["4:0:26:4"]
Done.
@ -43,7 +43,7 @@ Instantiating module.
Paused at v8://test/instantiate with reason "instrumentation".
Hit breakpoints: []
Setting breakpoint at instrumentation break location
Paused at wasm://wasm/341d515e with reason "instrumentation".
Script wasm://wasm/341d515e byte offset 26: Wasm opcode 0x01 (kExprNop)
Paused at wasm://wasm/20da547a with reason "instrumentation".
Script wasm://wasm/20da547a byte offset 26: Wasm opcode 0x01 (kExprNop)
Hit breakpoints: []
Done.

View file

@ -3,7 +3,7 @@ Tests pausing a running script and stepping
Running test: testPauseAndStep
Instantiate
Wait for script
Got wasm script: wasm://wasm/09f1bd7e
Got wasm script: wasm://wasm/c84b7cde
Run
Expecting to pause at 61
Paused at offset 61; wasm-expression-stack: []; local: [12 (i32)]

View file

@ -12,8 +12,8 @@ Result of evaluate (string):
Error: this is your stack trace:
-- skipped --
at call_debugger (<anonymous>:3:5)
at call_func (wasm://wasm/42056f7a:wasm-function[1]:0x37)
at main (wasm://wasm/42056f7a:wasm-function[2]:0x3e)
at call_func (wasm://wasm/37655946:wasm-function[1]:0x37)
at main (wasm://wasm/37655946:wasm-function[2]:0x3e)
at testFunction (<anonymous>:15:20)
at <anonymous>:1:1
Finished!

View file

@ -2,7 +2,7 @@ Tests repeated stepping through a large function (should not OOM)
Running test: test
Setting up global instance variable.
Got wasm script: wasm://wasm/e78ec4f6
Got wasm script: wasm://wasm/8f70f0e2
Setting breakpoint
Paused 50 and running...
Paused 100 and running...

View file

@ -5,7 +5,7 @@ Instantiating.
Calling div function.
Paused at:
--- 0 ---
Script wasm://wasm/64a0bc16 byte offset 46: Wasm opcode 0x6d (kExprI32DivS)
Script wasm://wasm/a9a86c5e byte offset 46: Wasm opcode 0x6d (kExprI32DivS)
scope at $div (0:46):
$a: 1 (i32)
$b: 0 (i32)
@ -35,7 +35,7 @@ Paused at:
-> resume
Paused at:
--- 0 ---
Script wasm://wasm/64a0bc16 byte offset 46: Wasm opcode 0x6d (kExprI32DivS)
Script wasm://wasm/a9a86c5e byte offset 46: Wasm opcode 0x6d (kExprI32DivS)
scope at $div (0:46):
$a: -2147483648 (i32)
$b: -1 (i32)

View file

@ -2,13 +2,13 @@ Step into a function that starts with a non-breakable opcode (i.e. block), then
Running test: test
Setting up global instance variable.
Got wasm script: wasm://wasm/a21a01be
Got wasm script: wasm://wasm/4658c40e
Setting breakpoint on offset 44
Running main function.
Script wasm://wasm/a21a01be byte offset 44: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/4658c40e byte offset 44: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Script wasm://wasm/a21a01be byte offset 40: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/4658c40e byte offset 40: Wasm opcode 0x0b (kExprEnd)
Debugger.stepInto called
Script wasm://wasm/a21a01be byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/4658c40e byte offset 41: Wasm opcode 0x0b (kExprEnd)
Debugger.resume called
exports.main returned.

View file

@ -2,121 +2,121 @@ Tests stepping through wasm scripts by byte offsets
Running test: test
Setting up global instance variable.
Got wasm script: wasm://wasm/521360e6
Got wasm script: wasm://wasm/dfd65932
Got wasm script: wasm://wasm/7322d8a2
Blackbox wasm script: wasm://wasm/dfd65932
Setting breakpoint on offset 103 (should be propagated to 104, the offset of the call), url wasm://wasm/7322d8a2
Got wasm script: wasm://wasm/4efe91f2
Got wasm script: wasm://wasm/f60b267e
Got wasm script: wasm://wasm/e72d7ac6
Blackbox wasm script: wasm://wasm/f60b267e
Setting breakpoint on offset 103 (should be propagated to 104, the offset of the call), url wasm://wasm/e72d7ac6
{
columnNumber : 104
lineNumber : 0
scriptId : <scriptId>
}
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 104: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 104: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/7322d8a2 byte offset 83: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/e72d7ac6 byte offset 83: Wasm opcode 0x01 (kExprNop)
Debugger.stepOver called
Function: $wasm_A
Script wasm://wasm/7322d8a2 byte offset 84: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/e72d7ac6 byte offset 84: Wasm opcode 0x01 (kExprNop)
Debugger.stepOut called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 106: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 106: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepOut called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 104: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 104: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepOver called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 106: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 106: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $not_ignored
Script wasm://wasm/521360e6 byte offset 40: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/4efe91f2 byte offset 40: Wasm opcode 0x01 (kExprNop)
Debugger.stepOver called
Function: $not_ignored
Script wasm://wasm/521360e6 byte offset 41: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/4efe91f2 byte offset 41: Wasm opcode 0x01 (kExprNop)
Debugger.stepOut called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 108: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/e72d7ac6 byte offset 108: Wasm opcode 0x0c (kExprBr)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 90: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/e72d7ac6 byte offset 90: Wasm opcode 0x20 (kExprLocalGet)
Debugger.resume called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 104: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 104: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/7322d8a2 byte offset 83: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/e72d7ac6 byte offset 83: Wasm opcode 0x01 (kExprNop)
Debugger.stepOut called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 106: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 106: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepOver called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 108: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/e72d7ac6 byte offset 108: Wasm opcode 0x0c (kExprBr)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 90: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/e72d7ac6 byte offset 90: Wasm opcode 0x20 (kExprLocalGet)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 92: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/e72d7ac6 byte offset 92: Wasm opcode 0x04 (kExprIf)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 94: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/e72d7ac6 byte offset 94: Wasm opcode 0x20 (kExprLocalGet)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 96: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/e72d7ac6 byte offset 96: Wasm opcode 0x41 (kExprI32Const)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 98: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/e72d7ac6 byte offset 98: Wasm opcode 0x6b (kExprI32Sub)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 99: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/e72d7ac6 byte offset 99: Wasm opcode 0x21 (kExprLocalSet)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 101: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/e72d7ac6 byte offset 101: Wasm opcode 0x41 (kExprI32Const)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 104: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 104: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/7322d8a2 byte offset 83: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/e72d7ac6 byte offset 83: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/7322d8a2 byte offset 84: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/e72d7ac6 byte offset 84: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/7322d8a2 byte offset 85: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/e72d7ac6 byte offset 85: Wasm opcode 0x0b (kExprEnd)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 106: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 106: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $not_ignored
Script wasm://wasm/521360e6 byte offset 40: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/4efe91f2 byte offset 40: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto called
Function: $not_ignored
Script wasm://wasm/521360e6 byte offset 41: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/4efe91f2 byte offset 41: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto called
Function: $not_ignored
Script wasm://wasm/521360e6 byte offset 42: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/4efe91f2 byte offset 42: Wasm opcode 0x0b (kExprEnd)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 108: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/e72d7ac6 byte offset 108: Wasm opcode 0x0c (kExprBr)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/7322d8a2 byte offset 90: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/e72d7ac6 byte offset 90: Wasm opcode 0x20 (kExprLocalGet)
Debugger.resume called
exports.main returned!
Test stepping over a recursive call
Setting breakpoint on the recursive call instruction @+126, url wasm://wasm/7322d8a2
Setting breakpoint on the recursive call instruction @+126, url wasm://wasm/e72d7ac6
{
columnNumber : 126
lineNumber : 0
scriptId : <scriptId>
}
Function: $fact
Script wasm://wasm/7322d8a2 byte offset 126: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/e72d7ac6 byte offset 126: Wasm opcode 0x10 (kExprCallFunction)
Removing breakpoint
Debugger.stepOver called
Function: $fact
Script wasm://wasm/7322d8a2 byte offset 128: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/e72d7ac6 byte offset 128: Wasm opcode 0x20 (kExprLocalGet)
Debugger.resume called

View file

@ -4,7 +4,7 @@ Running test: test
Calling instantiate function.
Waiting for wasm scripts to be parsed.
Ignoring script with url v8://test/instantiate
Got wasm script: wasm://wasm/fd1bd682
Got wasm script: wasm://wasm/7d022e0e
Setting breakpoint on i32.const
{
columnNumber : 37
@ -24,9 +24,9 @@ paused
Debugger.stepInto
paused
Script wasm://wasm/fd1bd682 byte offset 35: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/7d022e0e byte offset 35: Wasm opcode 0x20 (kExprLocalGet)
Debugger.resume
paused
Script wasm://wasm/fd1bd682 byte offset 37: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/7d022e0e byte offset 37: Wasm opcode 0x41 (kExprI32Const)
Debugger.resume
exports.main returned!

View file

@ -10,7 +10,7 @@ function pauseAlternating() {
pause = !pause;
Paused at:
Script wasm://wasm/004fa7ea byte offset 53: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/15df010e byte offset 53: Wasm opcode 0x0b (kExprEnd)
Paused at:
instance.exports.main()#
@ -32,7 +32,7 @@ function pauseAlternating() {
pause = !pause;
Paused at:
Script wasm://wasm/004fa7ea byte offset 53: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/15df010e byte offset 53: Wasm opcode 0x0b (kExprEnd)
Paused at:
instance.exports.main()#

View file

@ -4,7 +4,7 @@ Running test: test
Calling instantiate function.
Waiting for wasm scripts to be parsed.
Ignoring script with url v8://test/instantiate
Got wasm script: wasm://wasm/8f673656
Got wasm script: wasm://wasm/242f4a16
Setting breakpoint at start of wasm function
{
columnNumber : 33
@ -19,7 +19,7 @@ function test() {
Debugger.resume
paused
Script wasm://wasm/8f673656 byte offset 33: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/242f4a16 byte offset 33: Wasm opcode 0x01 (kExprNop)
Debugger.stepOut
paused
instance.exports.main();
@ -38,10 +38,10 @@ function test() {
Debugger.resume
paused
Script wasm://wasm/8f673656 byte offset 33: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/242f4a16 byte offset 33: Wasm opcode 0x01 (kExprNop)
Debugger.stepOver
paused
Script wasm://wasm/8f673656 byte offset 34: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/242f4a16 byte offset 34: Wasm opcode 0x0b (kExprEnd)
Debugger.resume
exports.main returned!
Finished run 2!
@ -54,10 +54,10 @@ function test() {
Debugger.resume
paused
Script wasm://wasm/8f673656 byte offset 33: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/242f4a16 byte offset 33: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto
paused
Script wasm://wasm/8f673656 byte offset 34: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/242f4a16 byte offset 34: Wasm opcode 0x0b (kExprEnd)
Debugger.resume
exports.main returned!
Finished run 3!

View file

@ -2,105 +2,105 @@ Tests stepping through wasm script with blackboxed range by byte offsets
Running test: test
Setting up global instance variable.
Got wasm script: wasm://wasm/929ca0d2
Blackbox wasm script wasm://wasm/929ca0d2 in range from 50 to 56
Setting breakpoint on offset 78 (should be propagated to 79, the offset of the call), url wasm://wasm/929ca0d2
Got wasm script: wasm://wasm/665d63a2
Blackbox wasm script wasm://wasm/665d63a2 in range from 50 to 56
Setting breakpoint on offset 78 (should be propagated to 79, the offset of the call), url wasm://wasm/665d63a2
{
columnNumber : 79
lineNumber : 0
scriptId : <scriptId>
}
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 79: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/665d63a2 byte offset 79: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/929ca0d2 byte offset 58: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 58: Wasm opcode 0x01 (kExprNop)
Debugger.stepOver called
Function: $wasm_A
Script wasm://wasm/929ca0d2 byte offset 59: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 59: Wasm opcode 0x01 (kExprNop)
Debugger.stepOut called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 81: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/665d63a2 byte offset 81: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepOut called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 79: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/665d63a2 byte offset 79: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepOver called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 81: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/665d63a2 byte offset 81: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $not_ignored
Script wasm://wasm/929ca0d2 byte offset 47: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 47: Wasm opcode 0x01 (kExprNop)
Debugger.stepOver called
Function: $not_ignored
Script wasm://wasm/929ca0d2 byte offset 48: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 48: Wasm opcode 0x01 (kExprNop)
Debugger.stepOut called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 83: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/665d63a2 byte offset 83: Wasm opcode 0x0c (kExprBr)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 65: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/665d63a2 byte offset 65: Wasm opcode 0x20 (kExprLocalGet)
Debugger.resume called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 79: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/665d63a2 byte offset 79: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/929ca0d2 byte offset 58: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 58: Wasm opcode 0x01 (kExprNop)
Debugger.stepOut called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 81: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/665d63a2 byte offset 81: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepOver called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 83: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/665d63a2 byte offset 83: Wasm opcode 0x0c (kExprBr)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 65: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/665d63a2 byte offset 65: Wasm opcode 0x20 (kExprLocalGet)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 67: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/665d63a2 byte offset 67: Wasm opcode 0x04 (kExprIf)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 69: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/665d63a2 byte offset 69: Wasm opcode 0x20 (kExprLocalGet)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 71: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/665d63a2 byte offset 71: Wasm opcode 0x41 (kExprI32Const)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 73: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/665d63a2 byte offset 73: Wasm opcode 0x6b (kExprI32Sub)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 74: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/665d63a2 byte offset 74: Wasm opcode 0x21 (kExprLocalSet)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 76: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/665d63a2 byte offset 76: Wasm opcode 0x41 (kExprI32Const)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 79: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/665d63a2 byte offset 79: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/929ca0d2 byte offset 58: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 58: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/929ca0d2 byte offset 59: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 59: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto called
Function: $wasm_A
Script wasm://wasm/929ca0d2 byte offset 60: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/665d63a2 byte offset 60: Wasm opcode 0x0b (kExprEnd)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 81: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/665d63a2 byte offset 81: Wasm opcode 0x10 (kExprCallFunction)
Debugger.stepInto called
Function: $not_ignored
Script wasm://wasm/929ca0d2 byte offset 47: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 47: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto called
Function: $not_ignored
Script wasm://wasm/929ca0d2 byte offset 48: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/665d63a2 byte offset 48: Wasm opcode 0x01 (kExprNop)
Debugger.stepInto called
Function: $not_ignored
Script wasm://wasm/929ca0d2 byte offset 49: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/665d63a2 byte offset 49: Wasm opcode 0x0b (kExprEnd)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 83: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/665d63a2 byte offset 83: Wasm opcode 0x0c (kExprBr)
Debugger.stepInto called
Function: $wasm_B
Script wasm://wasm/929ca0d2 byte offset 65: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/665d63a2 byte offset 65: Wasm opcode 0x20 (kExprLocalGet)
Debugger.resume called
exports.main returned!

View file

@ -2,90 +2,90 @@ Tests stepping through wasm scripts by byte offsets
Running test: test
Setting up global instance variable
Got wasm script: wasm://wasm/8ccc9796
Got wasm script: wasm://wasm/befe41aa
{
columnNumber : 46
lineNumber : 0
scriptId : <scriptId>
}
Test with valid skip lists
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: Stepping over without skip list
Testing stepOver with skipList: []
Script wasm://wasm/8ccc9796 byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/8ccc9796 byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/8ccc9796 byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/8ccc9796 byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/8ccc9796 byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 60: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/8ccc9796 byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/befe41aa byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/befe41aa byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/befe41aa byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 60: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/befe41aa byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: Stepping over with skip list
Testing stepOver with skipList: [{"scriptId":"4","start":{"lineNumber":0,"columnNumber":48},"end":{"lineNumber":0,"columnNumber":50}},{"scriptId":"4","start":{"lineNumber":0,"columnNumber":60},"end":{"lineNumber":0,"columnNumber":62}}]
Script wasm://wasm/8ccc9796 byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/8ccc9796 byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/8ccc9796 byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/8ccc9796 byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/befe41aa byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/befe41aa byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: Stepping over start location is inclusive
Testing stepOver with skipList: [{"scriptId":"4","start":{"lineNumber":0,"columnNumber":48},"end":{"lineNumber":0,"columnNumber":61}}]
Script wasm://wasm/8ccc9796 byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: Stepping over end location is exclusive
Testing stepOver with skipList: [{"scriptId":"4","start":{"lineNumber":0,"columnNumber":49},"end":{"lineNumber":0,"columnNumber":62}}]
Script wasm://wasm/8ccc9796 byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/8ccc9796 byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/befe41aa byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: Stepping into without skip list
Testing stepInto with skipList: []
Script wasm://wasm/8ccc9796 byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/8ccc9796 byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/8ccc9796 byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/8ccc9796 byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/8ccc9796 byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 60: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/8ccc9796 byte offset 39: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/8ccc9796 byte offset 40: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/8ccc9796 byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/8ccc9796 byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/befe41aa byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/befe41aa byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/befe41aa byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 60: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/befe41aa byte offset 39: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/befe41aa byte offset 40: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/befe41aa byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/befe41aa byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: Stepping into with skip list, while call itself is skipped
Testing stepInto with skipList: [{"scriptId":"4","start":{"lineNumber":0,"columnNumber":39},"end":{"lineNumber":0,"columnNumber":41}},{"scriptId":"4","start":{"lineNumber":0,"columnNumber":50},"end":{"lineNumber":0,"columnNumber":62}}]
Script wasm://wasm/8ccc9796 byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/8ccc9796 byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/8ccc9796 byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/befe41aa byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/befe41aa byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: Stepping into start location is inclusive
Testing stepInto with skipList: [{"scriptId":"4","start":{"lineNumber":0,"columnNumber":39},"end":{"lineNumber":0,"columnNumber":40}}]
Script wasm://wasm/8ccc9796 byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/8ccc9796 byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/8ccc9796 byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/8ccc9796 byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/8ccc9796 byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 60: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/8ccc9796 byte offset 40: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/8ccc9796 byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/8ccc9796 byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/befe41aa byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/befe41aa byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/befe41aa byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 60: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/befe41aa byte offset 40: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/befe41aa byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/befe41aa byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: Stepping into end location is exclusive
Testing stepInto with skipList: [{"scriptId":"4","start":{"lineNumber":0,"columnNumber":38},"end":{"lineNumber":0,"columnNumber":41}}]
Script wasm://wasm/8ccc9796 byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/8ccc9796 byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/8ccc9796 byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/8ccc9796 byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/8ccc9796 byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/8ccc9796 byte offset 60: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/8ccc9796 byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/8ccc9796 byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 48: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/befe41aa byte offset 50: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 52: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 54: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/befe41aa byte offset 55: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/befe41aa byte offset 57: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/befe41aa byte offset 60: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/befe41aa byte offset 41: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/befe41aa byte offset 62: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test with invalid skip lists
Script wasm://wasm/8ccc9796 byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/befe41aa byte offset 46: Wasm opcode 0x20 (kExprLocalGet)
Test: start position has invalid column number
Testing stepOver with skipList: [{"scriptId":"4","start":{"lineNumber":0,"columnNumber":-1},"end":{"lineNumber":0,"columnNumber":62}}]
Position missing 'column' or 'column' < 0.

View file

@ -1,17 +1,17 @@
Tests stepping through wasm scripts with source maps
Running test: test
Got wasm script: wasm://wasm/d4d551ee
Got wasm script: wasm://wasm/9b4bf87e
Script sourceMapURL: abc
Requesting source for wasm://wasm/d4d551ee...
Requesting source for wasm://wasm/9b4bf87e...
Source retrieved without error: true
Setting breakpoint on offset 54 (on the setlocal before the call), url wasm://wasm/d4d551ee
Setting breakpoint on offset 54 (on the setlocal before the call), url wasm://wasm/9b4bf87e
{
columnNumber : 54
lineNumber : 0
scriptId : <scriptId>
}
Script wasm://wasm/d4d551ee byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/9b4bf87e byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
at $wasm_B (0:54):
- scope (wasm-expression-stack):
0: 3 (i32)
@ -23,7 +23,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/9b4bf87e byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
@ -34,7 +34,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 38: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/9b4bf87e byte offset 38: Wasm opcode 0x01 (kExprNop)
at $wasm_A (0:38):
- scope (wasm-expression-stack):
- scope (local):
@ -50,7 +50,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepOver called
Script wasm://wasm/d4d551ee byte offset 39: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/9b4bf87e byte offset 39: Wasm opcode 0x01 (kExprNop)
at $wasm_A (0:39):
- scope (wasm-expression-stack):
- scope (local):
@ -66,7 +66,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepOut called
Script wasm://wasm/d4d551ee byte offset 58: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/9b4bf87e byte offset 58: Wasm opcode 0x0c (kExprBr)
at $wasm_B (0:58):
- scope (wasm-expression-stack):
- scope (local):
@ -77,7 +77,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepOut called
Script wasm://wasm/d4d551ee byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/9b4bf87e byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
at $wasm_B (0:54):
- scope (wasm-expression-stack):
0: 2 (i32)
@ -89,7 +89,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepOver called
Script wasm://wasm/d4d551ee byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/9b4bf87e byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
@ -100,7 +100,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepOver called
Script wasm://wasm/d4d551ee byte offset 58: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/9b4bf87e byte offset 58: Wasm opcode 0x0c (kExprBr)
at $wasm_B (0:58):
- scope (wasm-expression-stack):
- scope (local):
@ -111,7 +111,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.resume called
Script wasm://wasm/d4d551ee byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/9b4bf87e byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
at $wasm_B (0:54):
- scope (wasm-expression-stack):
0: 1 (i32)
@ -123,7 +123,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/9b4bf87e byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
@ -134,7 +134,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 38: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/9b4bf87e byte offset 38: Wasm opcode 0x01 (kExprNop)
at $wasm_A (0:38):
- scope (wasm-expression-stack):
- scope (local):
@ -150,7 +150,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepOut called
Script wasm://wasm/d4d551ee byte offset 58: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/9b4bf87e byte offset 58: Wasm opcode 0x0c (kExprBr)
at $wasm_B (0:58):
- scope (wasm-expression-stack):
- scope (local):
@ -161,7 +161,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/9b4bf87e byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
at $wasm_B (0:45):
- scope (wasm-expression-stack):
- scope (local):
@ -172,7 +172,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 47: Wasm opcode 0x04 (kExprIf)
Script wasm://wasm/9b4bf87e byte offset 47: Wasm opcode 0x04 (kExprIf)
at $wasm_B (0:47):
- scope (wasm-expression-stack):
0: 1 (i32)
@ -184,7 +184,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Script wasm://wasm/9b4bf87e byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
at $wasm_B (0:49):
- scope (wasm-expression-stack):
- scope (local):
@ -195,7 +195,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Script wasm://wasm/9b4bf87e byte offset 51: Wasm opcode 0x41 (kExprI32Const)
at $wasm_B (0:51):
- scope (wasm-expression-stack):
0: 1 (i32)
@ -207,7 +207,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Script wasm://wasm/9b4bf87e byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
at $wasm_B (0:53):
- scope (wasm-expression-stack):
0: 1 (i32)
@ -220,7 +220,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Script wasm://wasm/9b4bf87e byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
at $wasm_B (0:54):
- scope (wasm-expression-stack):
0: 0 (i32)
@ -232,7 +232,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
Script wasm://wasm/9b4bf87e byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
@ -243,7 +243,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 38: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/9b4bf87e byte offset 38: Wasm opcode 0x01 (kExprNop)
at $wasm_A (0:38):
- scope (wasm-expression-stack):
- scope (local):
@ -259,7 +259,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 39: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/9b4bf87e byte offset 39: Wasm opcode 0x01 (kExprNop)
at $wasm_A (0:39):
- scope (wasm-expression-stack):
- scope (local):
@ -275,7 +275,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 40: Wasm opcode 0x0b (kExprEnd)
Script wasm://wasm/9b4bf87e byte offset 40: Wasm opcode 0x0b (kExprEnd)
at $wasm_A (0:40):
- scope (wasm-expression-stack):
- scope (local):
@ -291,7 +291,7 @@ at (anonymous) (0:17):
- scope (global):
-- skipped
Debugger.stepInto called
Script wasm://wasm/d4d551ee byte offset 58: Wasm opcode 0x0c (kExprBr)
Script wasm://wasm/9b4bf87e byte offset 58: Wasm opcode 0x0c (kExprBr)
at $wasm_B (0:58):
- scope (wasm-expression-stack):
- scope (local):

View file

@ -21,4 +21,4 @@ Calling wasm export.
value : Before Wasm execution
}
Paused:
Script wasm://wasm/aa8b4c12 byte offset 33: Wasm opcode 0x01 (kExprNop)
Script wasm://wasm/8c388106 byte offset 33: Wasm opcode 0x01 (kExprNop)

View file

@ -3,5 +3,5 @@
^
Error
at throw_wasm_exn (*%(basename)s:15:19)
at throw (wasm://wasm/902a1856:wasm-function[1]:0x32)
at throw (wasm://wasm/f232c786:wasm-function[1]:0x32)
at *%(basename)s:19:23

View file

@ -1,4 +1,4 @@
wasm-function[0]:0x22: RuntimeError: unreachable
RuntimeError: unreachable
at main (wasm://wasm/c6021c96:wasm-function[0]:0x22)
at main (wasm://wasm/d578b3d2:wasm-function[0]:0x22)
at *%(basename)s:{NUMBER}:31

View file

@ -1,4 +1,4 @@
wasm-function[0]:0x22: RuntimeError: unreachable
RuntimeError: unreachable
at test-module.main (wasm://wasm/test-module-e77350aa:wasm-function[0]:0x22)
at test-module.main (wasm://wasm/test-module-712dabfa:wasm-function[0]:0x22)
at *%(basename)s:{NUMBER}:31

View file

@ -1,4 +1,4 @@
wasm-function[0]:0x22: RuntimeError: unreachable
RuntimeError: unreachable
at test-module.main (wasm://wasm/test-module-e77350aa:wasm-function[0]:0x22)
at test-module.main (wasm://wasm/test-module-712dabfa:wasm-function[0]:0x22)
at *%(basename)s:{NUMBER}:31

View file

@ -1,4 +1,4 @@
wasm-function[0]:0x22: RuntimeError: unreachable
RuntimeError: unreachable
at wasm://wasm/e5b00f2a:wasm-function[0]:0x22
at wasm://wasm/44ee3bce:wasm-function[0]:0x22
at *%(basename)s:{NUMBER}:31

View file

@ -1,4 +1,4 @@
wasm-function[1]:0x30: RuntimeError: divide by zero
RuntimeError: divide by zero
at main (wasm://wasm/2d95b2ce:wasm-function[1]:0x30)
at main (wasm://wasm/7b123b7e:wasm-function[1]:0x30)
at *%(basename)s:{NUMBER}:16

View file

@ -1,4 +1,4 @@
RuntimeError: unreachable
at main (wasm://wasm/c6021c96:wasm-function[0]:0x22)
at main (wasm://wasm/d578b3d2:wasm-function[0]:0x22)
at *%(basename)s:{NUMBER}:27
at test/mjsunit/mjsunit.js:*

View file

@ -1,4 +1,4 @@
RuntimeError: unreachable
at main (wasm://wasm/c6021c96:wasm-function[0]:0x22)
at main (wasm://wasm/d578b3d2:wasm-function[0]:0x22)
at test/message/wasm-function-name-async.js:{NUMBER}:27
at test/mjsunit/mjsunit.js:*

View file

@ -1,4 +1,4 @@
RuntimeError: unreachable
at test-module.main (wasm://wasm/test-module-e77350aa:wasm-function[0]:0x22)
at test-module.main (wasm://wasm/test-module-712dabfa:wasm-function[0]:0x22)
at *%(basename)s:{NUMBER}:27
at test/mjsunit/mjsunit.js:*

View file

@ -1,4 +1,4 @@
RuntimeError: unreachable
at test-module.main (wasm://wasm/test-module-e77350aa:wasm-function[0]:0x22)
at test-module.main (wasm://wasm/test-module-712dabfa:wasm-function[0]:0x22)
at test/message/wasm-module-and-function-name-async.js:{NUMBER}:27
at test/mjsunit/mjsunit.js:*

View file

@ -1,4 +1,4 @@
RuntimeError: unreachable
at test-module.main (wasm://wasm/test-module-e77350aa:wasm-function[0]:0x22)
at test-module.main (wasm://wasm/test-module-712dabfa:wasm-function[0]:0x22)
at *%(basename)s:{NUMBER}:27
at test/mjsunit/mjsunit.js:*

View file

@ -1,4 +1,4 @@
RuntimeError: unreachable
at test-module.main (wasm://wasm/test-module-e77350aa:wasm-function[0]:0x22)
at test-module.main (wasm://wasm/test-module-712dabfa:wasm-function[0]:0x22)
at test/message/wasm-module-name-async.js:{NUMBER}:27
at test/mjsunit/mjsunit.js:*

View file

@ -1,4 +1,4 @@
RuntimeError: unreachable
at wasm://wasm/e5b00f2a:wasm-function[0]:0x22
at wasm://wasm/44ee3bce:wasm-function[0]:0x22
at *%(basename)s:{NUMBER}:27
at test/mjsunit/mjsunit.js:*

View file

@ -1,4 +1,4 @@
RuntimeError: unreachable
at wasm://wasm/e5b00f2a:wasm-function[0]:0x22
at wasm://wasm/44ee3bce:wasm-function[0]:0x22
at test/message/wasm-no-name-async.js:{NUMBER}:27
at test/mjsunit/mjsunit.js:*

View file

@ -1,11 +0,0 @@
// Copyright 2025 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.
let o = {}
for (var i = 0; i < 10000; i++) {
o[8589933568 + i] = i;
}
for (var i = 0; i < 10000; i++) {
assertEquals(o[8589933568 + i], i);
}

View file

@ -69,7 +69,7 @@ var module = builder.instantiate({mod: {func: STACK}});
var expected_string = 'Error\n' +
// The line numbers below will change as this test gains / loses lines..
' at STACK (stack.js:38:11)\n' + // --
' at main (wasm://wasm/16d24f76:wasm-function[1]:0x72)\n' + // --
' at main (wasm://wasm/862e1cf6:wasm-function[1]:0x72)\n' + // --
' at testSimpleStack (stack.js:76:18)\n' + // --
' at stack.js:78:3'; // --
@ -89,7 +89,7 @@ Error.prepareStackTrace = function(error, frames) {
verifyStack(stack, [
// isWasm function line pos file offset funcIndex
[ false, "STACK", 38, 0, "stack.js"],
[ true, "main", 1, 0x72, "wasm://wasm/16d24f76", '0x72', 1],
[ true, "main", 1, 0x72, "wasm://wasm/862e1cf6", '0x72', 1],
[ false, "testStackFrames", 87, 0, "stack.js"],
[ false, null, 96, 0, "stack.js"]
]);
@ -103,7 +103,7 @@ Error.prepareStackTrace = function(error, frames) {
assertContains("unreachable", e.message);
verifyStack(e.stack, [
// isWasm function line pos file offset funcIndex
[ true, "exec_unreachable", 1, 0x77, "wasm://wasm/16d24f76", '0x77', 2],
[ true, "exec_unreachable", 1, 0x77, "wasm://wasm/862e1cf6", '0x77', 2],
[ false, "testWasmUnreachable", 100, 0, "stack.js"],
[ false, null, 111, 0, "stack.js"]
]);
@ -118,8 +118,8 @@ Error.prepareStackTrace = function(error, frames) {
assertContains("out of bounds", e.message);
verifyStack(e.stack, [
// isWasm function line pos file offset funcIndex
[ true, null, 1, 0x7d, "wasm://wasm/16d24f76", '0x7d', 3],
[ true, "call_mem_out_of_bounds", 1, 0x83, "wasm://wasm/16d24f76", '0x83', 4],
[ true, null, 1, 0x7d, "wasm://wasm/862e1cf6", '0x7d', 3],
[ true, "call_mem_out_of_bounds", 1, 0x83, "wasm://wasm/862e1cf6", '0x83', 4],
[ false, "testWasmMemOutOfBounds", 115, 0, "stack.js"],
[ false, null, 127, 0, "stack.js"]
]);
@ -147,10 +147,10 @@ Error.prepareStackTrace = function(error, frames) {
assertTrue(e.stack.length >= 4, "expected at least 4 stack entries");
verifyStack(e.stack.splice(0, 4), [
// isWasm function line pos file offset funcIndex
[ true, "recursion", 1, 0x34, "wasm://wasm/ad7a0826", '0x34', 0],
[ true, "recursion", 1, 0x37, "wasm://wasm/ad7a0826", '0x37', 0],
[ true, "recursion", 1, 0x37, "wasm://wasm/ad7a0826", '0x37', 0],
[ true, "recursion", 1, 0x37, "wasm://wasm/ad7a0826", '0x37', 0]
[ true, "recursion", 1, 0x34, "wasm://wasm/80a35e5a", '0x34', 0],
[ true, "recursion", 1, 0x37, "wasm://wasm/80a35e5a", '0x37', 0],
[ true, "recursion", 1, 0x37, "wasm://wasm/80a35e5a", '0x37', 0],
[ true, "recursion", 1, 0x37, "wasm://wasm/80a35e5a", '0x37', 0]
]);
}
})();

View file

@ -1,34 +0,0 @@
/*
* rapidhash - Very fast, high quality, platform independant hashing algorithm.
* Copyright (C) 2024 Nicolas De Carli
*
* Based on 'wyhash', by Wang Yi <godspeed_china@yeah.net>
*
* BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You can contact the author at:
* - rapidhash source repository: https://github.com/Nicoshev/rapidhash
*/

View file

@ -1,2 +0,0 @@
leszeks@chromium.org
mlippautz@chromium.org

View file

@ -1,20 +0,0 @@
Name: rapidhash
URL: https://github.com/Nicoshev/rapidhash/blob/master/rapidhash.h
Version: N/A
Date: 2024-07-08
Revision: 588978411df8683777429f729be5213eb1bfd5f3
License: BSD 2-clause
License File: LICENSE
Shipped: Yes
Security Critical: yes
Description:
A fast hash function.
This is a fork of upstream, with the parts that we don't need or want
removed. We do not intend to sync regularly with upstream git. This
particular version is copied over from Chromium.
Local Modifications:
- Copied over from Chromium's third_party/rapidhash with all its changes.
- Removed base/ includes and replaced with V8 versions.

View file

@ -1,354 +0,0 @@
/*
* rapidhash - Very fast, high quality, platform-independent hashing algorithm.
* Copyright (C) 2024 Nicolas De Carli
*
* Based on 'wyhash', by Wang Yi <godspeed_china@yeah.net>
*
* BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You can contact the author at:
* - rapidhash source repository: https://github.com/Nicoshev/rapidhash
*/
#ifndef _THIRD_PARTY_RAPIDHASH_H
#define _THIRD_PARTY_RAPIDHASH_H 1
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include <tuple>
#include <utility>
#include "include/v8config.h"
#include "src/base/logging.h"
// Chromium has some local modifications to upstream rapidhash,
// mostly around the concept of HashReaders (including slightly
// more comments for ease of understanding). Generally, rapidhash
// hashes bytes without really caring what these bytes are,
// but often in Chromium, we want to hash _strings_, and strings
// can have multiple representations. In particular, the WTF
// StringImpl class (and by extension, String and AtomicString)
// can have three different states:
//
// 1. Latin1 (or ASCII) code points, in 8 bits per character (LChar).
// 2. The same code points, in 16 bits per character (UChar).
// 3. Strings actually including non-Latin1 code points, in 16 bits
// per character (UChar, UTF-16 encoding).
//
// The problem is that we'd like to hash case #1 and #2 to actually
// return the same hash. There are several ways we could deal with this:
//
// a) Just ignore the problem and hash everything as raw bytes;
// case #2 is fairly rare, and some algorithms (e.g. opportunistic
// deduplication) could live with some false negatives.
// b) Expand all strings to UTF-16 before hashing. This was the
// strategy for the old StringHasher (using SuperFastHash),
// as it naturally worked in 16-bit increments and it is probably
// the simplest. However, this both halves the throughput of the
// hasher and incurs conversion costs.
// c) Detect #2 and convert those cases to #1 (UTF-16 to Latin1
// conversion), and apart from that, juts hash bytes.
//
// b) is used in e.g. CaseFoldingHash, but c) is the one we use the most
// often. Most strings that we want to hash are 8-bit (e.g. HTML tags), so
// that makes the common case fast. And for UChar strings, it is fairly fast
// to make a pre-pass over the string to check for the existence of any
// non-Latin1 characters. Of course, #1 and #3 can just be hashed as raw
// bytes, as strings from those groups can never be equal anyway.
//
// To support these 8-to-16 and 16-to-8 conversions, and also things like
// lowercasing on the fly, we have modified rapidhash to be templatized
// on a HashReader, supplying bytes to the hash function. For the default
// case of just hashing raw bytes, this is simply reading. But for other
// conversions, the reader is doing slightly more work, such as packing
// or unpacking. See e.g. ConvertTo8BitHashReader in string_hasher.h.
//
// Note that this reader could be made constexpr if we needed to evaluate
// hashes at compile-time.
struct PlainHashReader {
// If this is different from 1 (only 1, 2 and 4 are really reasonable
// options), it means the reader consumes its input at a faster rate than
// would be normally expected. For instance, if it is 2, it means that when
// the reader produces 64 bits, it needs to move its input 128 bits
// ahead. This is used when e.g. a reader converts from UTF-16 to ASCII,
// by removing zeros. The input length must divide the compression factor.
static constexpr unsigned kCompressionFactor = 1;
// This is the opposite of kExpansionFactor. It does not make sense to have
// both kCompressionFactor and kExpansionFactor different from 1.
// The output length must divide the expansion factor.
static constexpr unsigned kExpansionFactor = 1;
// Read 64 little-endian bits from the input, taking into account
// the expansion/compression if relevant. Unaligned reads must be
// supported.
static inline uint64_t Read64(const uint8_t* p) {
uint64_t v;
#ifdef V8_TARGET_BIG_ENDIAN
uint8_t* dst = reinterpret_cast<uint8_t*>(&v);
for (size_t i = 0; i < sizeof(v); i++) {
dst[i] = p[sizeof(v) - i - 1];
}
#else
memcpy(&v, p, 8);
#endif
return v;
}
// Similarly, read 32 little-endian (unaligned) bits. Note that
// this must return uint64_t, _not_ uint32_t, as the hasher assumes
// it can freely shift such numbers up and down.
static inline uint64_t Read32(const uint8_t* p) {
uint32_t v;
#ifdef V8_TARGET_BIG_ENDIAN
uint8_t* dst = reinterpret_cast<uint8_t*>(&v);
for (size_t i = 0; i < sizeof(v); i++) {
dst[i] = p[sizeof(v) - i - 1];
}
#else
memcpy(&v, p, 4);
#endif
return v;
}
// Read 1, 2 or 3 bytes from the input, and distribute them somewhat
// reasonably across the resulting 64-bit number. Note that this is
// done in a branch-free fashion, so that it always reads three bytes
// but never reads past the end.
//
// This is only used in the case where we hash a string of exactly
// 1, 2 or 3 bytes; if the hash is e.g. 7 bytes, two overlapping 32-bit
// reads will be done instead. Note that if you have kCompressionFactor == 2,
// this means that this will only ever be called with k = 2.
static inline uint64_t ReadSmall(const uint8_t* p, size_t k) {
return (uint64_t{p[0]} << 56) | (uint64_t{p[k >> 1]} << 32) | p[k - 1];
}
};
/*
* Likely and unlikely macros.
*/
#define _likely_(x) __builtin_expect(x, 1)
#define _unlikely_(x) __builtin_expect(x, 0)
/*
* Default seed.
*/
static constexpr uint64_t RAPID_SEED = 0xbdd89aa982704029ull;
// Default secret parameters. If we wanted to, we could generate our own
// versions of these at renderer startup in order to perturb the hash
// and make it more DoS-resistant (similar to what base/hash.h does),
// but generating new ones takes a little bit of time (~200 µs on a desktop
// machine as of 2024), and good-quality random numbers may not be copious
// from within the sandbox. The secret concept is inherited from wyhash,
// described by the wyhash author here:
//
// https://github.com/wangyi-fudan/wyhash/issues/139
//
// The rules are:
//
// 1. Each byte must be “balanced”, i.e., have exactly 4 bits set.
// (This is trivially done by just precompting a LUT with the
// possible bytes and picking from those.)
//
// 2. Each 64-bit group should have a Hamming distance of 32 to
// all the others (i.e., popcount(secret[i] ^ secret[j]) == 32).
// This is just done by rejection sampling.
//
// 3. Each 64-bit group should be prime. It's not obvious that this
// is really needed for the hash, as opposed to wyrand which also
// uses the same secret, but according to the author, it is
// “a feeling to be perfect”. This naturally means the last byte
// cannot be divisible by 2, but apart from that, is easiest
// checked by testing a few small factors and then the Miller-Rabin
// test, which rejects nearly all bad candidates in the first iteration
// and is fast as long as we have 64x64 -> 128 bit muls and modulos.
//
// For now, we just use the rapidhash-supplied standard.
static constexpr uint64_t rapid_secret[3] = {
0x2d358dccaa6c78a5ull, 0x8bb84b93962eacc9ull, 0x4b33a62ed433d4a3ull};
/*
* 64*64 -> 128bit multiply function.
*
* @param A Address of 64-bit number.
* @param B Address of 64-bit number.
*
* Calculates 128-bit C = *A * *B.
*/
inline std::pair<uint64_t, uint64_t> rapid_mul128(uint64_t A, uint64_t B) {
#if defined(__SIZEOF_INT128__)
__uint128_t r = A;
r *= B;
return {static_cast<uint64_t>(r), static_cast<uint64_t>(r >> 64)};
#else
// High and low 32 bits of A and B.
uint64_t a_high = A >> 32, b_high = B >> 32, a_low = (uint32_t)A,
b_low = (uint32_t)B;
// Intermediate products.
uint64_t result_high = a_high * b_high;
uint64_t result_m0 = a_high * b_low;
uint64_t result_m1 = b_high * a_low;
uint64_t result_low = a_low * b_low;
// Final sum. The lower 64-bit addition can overflow twice,
// so accumulate carry as we go.
uint64_t high = result_high + (result_m0 >> 32) + (result_m1 >> 32);
uint64_t t = result_low + (result_m0 << 32);
high += (t < result_low); // Carry.
uint64_t low = t + (result_m1 << 32);
high += (low < t); // Carry.
return {low, high};
#endif
}
/*
* Multiply and xor mix function.
*
* @param A 64-bit number.
* @param B 64-bit number.
*
* Calculates 128-bit C = A * B.
* Returns 64-bit xor between high and low 64 bits of C.
*/
inline uint64_t rapid_mix(uint64_t A, uint64_t B) {
std::tie(A, B) = rapid_mul128(A, B);
return A ^ B;
}
/*
* rapidhash main function.
*
* @param key Buffer to be hashed.
* @param len Number of input bytes coming from the reader.
* @param seed 64-bit seed used to alter the hash result predictably.
* @param secret Triplet of 64-bit secrets used to alter hash result
* predictably.
*
* Returns a 64-bit hash.
*
* The data flow is separated so that we never mix input data with pointers;
*
* a, b, seed, secret[0], secret[1], secret[2], see1 and see2 are affected
* by the input data.
*
* p is only ever indexed by len, delta (comes from len only), i (comes from
* len only) or integral constants. len is const, so no data can flow into it.
*
* No other reads from memory take place. No writes to memory take place.
*/
template <class Reader>
V8_INLINE uint64_t rapidhash_internal(const uint8_t* p, const size_t len,
uint64_t seed, const uint64_t secret[3]) {
// For brevity.
constexpr unsigned x = Reader::kCompressionFactor;
constexpr unsigned y = Reader::kExpansionFactor;
DCHECK_EQ(len % y, 0u);
seed ^= rapid_mix(seed ^ secret[0], secret[1]) ^ len;
uint64_t a, b;
if (_likely_(len <= 16)) {
if (_likely_(len >= 4)) {
// Read the first and last 32 bits (they may overlap).
const uint8_t* plast = p + (len - 4) * x / y;
a = (Reader::Read32(p) << 32) | Reader::Read32(plast);
// This is equivalent to: delta = (len >= 8) ? 4 : 0;
const uint64_t delta = ((len & 24) >> (len >> 3)) * x / y;
b = ((Reader::Read32(p + delta) << 32) | Reader::Read32(plast - delta));
} else if (_likely_(len > 0)) {
// 1, 2 or 3 bytes.
a = Reader::ReadSmall(p, len);
b = 0;
} else {
a = b = 0;
}
} else {
size_t i = len;
if (_unlikely_(i > 48)) {
uint64_t see1 = seed, see2 = seed;
do {
seed = rapid_mix(Reader::Read64(p) ^ secret[0],
Reader::Read64(p + 8 * x / y) ^ seed);
see1 = rapid_mix(Reader::Read64(p + 16 * x / y) ^ secret[1],
Reader::Read64(p + 24 * x / y) ^ see1);
see2 = rapid_mix(Reader::Read64(p + 32 * x / y) ^ secret[2],
Reader::Read64(p + 40 * x / y) ^ see2);
p += 48 * x / y;
i -= 48;
} while (_likely_(i >= 48));
seed ^= see1 ^ see2;
}
if (i > 16) {
seed = rapid_mix(Reader::Read64(p) ^ secret[2],
Reader::Read64(p + 8 * x / y) ^ seed ^ secret[1]);
if (i > 32) {
seed = rapid_mix(Reader::Read64(p + 16 * x / y) ^ secret[2],
Reader::Read64(p + 24 * x / y) ^ seed);
}
}
// Read the last 2x64 bits. Note that due to the division by y,
// this must be a signed quantity (or the division would become
// unsigned, possibly moving the sign bit down into the address).
// Similarly for x.
a = Reader::Read64(p + (static_cast<ptrdiff_t>(i) - 16) *
static_cast<int>(x) / static_cast<int>(y));
b = Reader::Read64(p + (static_cast<ptrdiff_t>(i) - 8) *
static_cast<int>(x) / static_cast<int>(y));
}
a ^= secret[1];
b ^= seed;
std::tie(a, b) = rapid_mul128(a, b);
return rapid_mix(a ^ secret[0] ^ len, b ^ secret[1]);
}
/*
* rapidhash default seeded hash function.
*
* @param key Buffer to be hashed.
* @param len Number of input bytes coming from the reader.
* @param seed 64-bit seed used to alter the hash result predictably.
*
* Calls rapidhash_internal using provided parameters and default secrets.
*
* Returns a 64-bit hash.
*/
template <class Reader = PlainHashReader>
V8_INLINE static uint64_t rapidhash(const uint8_t* key, size_t len,
uint64_t seed = RAPID_SEED) {
return rapidhash_internal<Reader>(key, len, seed, rapid_secret);
}
#undef _likely_
#undef _unlikely_
#endif // _THIRD_PARTY_RAPIDHASH_H

View file

@ -41,7 +41,6 @@ if (v8_gcmole) {
"../../third_party/icu/source/i18n/",
"../../third_party/inspector_protocol/",
"../../third_party/libc++/src/",
"../../third_party/rapidhash-v8/",
"../../third_party/simdutf/",
"../../third_party/siphash/",
"../../third_party/utf8-decoder/",