@woosh/meep-engine 2.117.18 → 2.117.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/meep.cjs +117 -112
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +117 -112
- package/package.json +1 -1
- package/src/core/collection/map/HashMap.d.ts.map +1 -1
- package/src/core/collection/map/HashMap.js +112 -108
- package/src/engine/graphics/material/manager/ManagedTexture.d.ts +0 -3
- package/src/engine/graphics/material/manager/ManagedTexture.d.ts.map +0 -1
- package/src/engine/graphics/material/manager/ManagedTexture.js +0 -3
- package/src/engine/graphics/material/manager/TextureManager.d.ts +0 -3
- package/src/engine/graphics/material/manager/TextureManager.d.ts.map +0 -1
- package/src/engine/graphics/material/manager/TextureManager.js +0 -3
package/build/meep.cjs
CHANGED
|
@@ -59947,20 +59947,6 @@ function invokeObjectHash(object) {
|
|
|
59947
59947
|
return object.hash();
|
|
59948
59948
|
}
|
|
59949
59949
|
|
|
59950
|
-
/**
|
|
59951
|
-
* @template T
|
|
59952
|
-
* @param {T[]} array
|
|
59953
|
-
* @param {number} index0
|
|
59954
|
-
* @param {number} index1
|
|
59955
|
-
*/
|
|
59956
|
-
function array_swap_one(array, index0, index1) {
|
|
59957
|
-
|
|
59958
|
-
const t = array[index0];
|
|
59959
|
-
|
|
59960
|
-
array[index0] = array[index1];
|
|
59961
|
-
array[index1] = t;
|
|
59962
|
-
}
|
|
59963
|
-
|
|
59964
59950
|
/**
|
|
59965
59951
|
* @example `const my_array = new ( UintArrayForCount(x) )(length);`
|
|
59966
59952
|
* @param {number} max_value maximum value to be contained in the array
|
|
@@ -60110,62 +60096,62 @@ class HashMap {
|
|
|
60110
60096
|
* number of bins is always power or two
|
|
60111
60097
|
* @type {Uint32Array}
|
|
60112
60098
|
*/
|
|
60113
|
-
|
|
60099
|
+
__bins = EMPTY_BINS;
|
|
60114
60100
|
|
|
60115
60101
|
/**
|
|
60116
60102
|
* Note that dead entries are marked as such with a special reserved hash values, so records can be reused for new entries
|
|
60117
60103
|
* @type {Array<HashMapEntry<K,V>>}
|
|
60118
60104
|
*/
|
|
60119
|
-
|
|
60105
|
+
__entries = new Array(0);
|
|
60120
60106
|
|
|
60121
60107
|
/**
|
|
60122
60108
|
* Pointer to the end of allocated entries segment
|
|
60123
60109
|
* @type {number}
|
|
60124
60110
|
*/
|
|
60125
|
-
|
|
60111
|
+
__entries_bound = 0;
|
|
60126
60112
|
|
|
60127
60113
|
/**
|
|
60128
60114
|
*
|
|
60129
60115
|
* @type {number}
|
|
60130
60116
|
*/
|
|
60131
|
-
|
|
60117
|
+
__entries_start = 0;
|
|
60132
60118
|
|
|
60133
60119
|
/**
|
|
60134
60120
|
* number of records in the map
|
|
60135
60121
|
* @type {number}
|
|
60136
60122
|
*/
|
|
60137
|
-
|
|
60123
|
+
__size = 0;
|
|
60138
60124
|
|
|
60139
|
-
|
|
60125
|
+
__bin_count = 0;
|
|
60140
60126
|
|
|
60141
60127
|
/**
|
|
60142
60128
|
* Always exactly half of the number of bins
|
|
60143
60129
|
* @type {number}
|
|
60144
60130
|
*/
|
|
60145
|
-
|
|
60131
|
+
__entries_allocated_count = 0;
|
|
60146
60132
|
|
|
60147
|
-
|
|
60133
|
+
__bin_count_power_of_two = 0;
|
|
60148
60134
|
|
|
60149
|
-
|
|
60135
|
+
__entries_count_power_of_two = 0;
|
|
60150
60136
|
|
|
60151
60137
|
/**
|
|
60152
60138
|
* Mask used to map from hash to a bin index
|
|
60153
60139
|
* @type {number}
|
|
60154
60140
|
*/
|
|
60155
|
-
|
|
60141
|
+
__bin_count_mask = 0;
|
|
60156
60142
|
|
|
60157
60143
|
/**
|
|
60158
60144
|
* How full the table can get before number of buckets is increased
|
|
60159
60145
|
* @type {number}
|
|
60160
60146
|
* @private
|
|
60161
60147
|
*/
|
|
60162
|
-
|
|
60148
|
+
__load_factor = DEFAULT_LOAD_FACTOR;
|
|
60163
60149
|
|
|
60164
60150
|
/**
|
|
60165
60151
|
* Used to track modifications to prevent concurrent changes during iteration
|
|
60166
60152
|
* @type {number}
|
|
60167
60153
|
*/
|
|
60168
|
-
|
|
60154
|
+
__version = 0;
|
|
60169
60155
|
|
|
60170
60156
|
/**
|
|
60171
60157
|
* @template K, V
|
|
@@ -60196,13 +60182,13 @@ class HashMap {
|
|
|
60196
60182
|
*/
|
|
60197
60183
|
this.keyEqualityFunction = keyEqualityFunction;
|
|
60198
60184
|
|
|
60199
|
-
this
|
|
60185
|
+
this.__load_factor = loadFactor;
|
|
60200
60186
|
|
|
60201
60187
|
this.#setBinCount(ceilPowerOfTwo(capacity));
|
|
60202
60188
|
}
|
|
60203
60189
|
|
|
60204
60190
|
get size() {
|
|
60205
|
-
return this
|
|
60191
|
+
return this.__size;
|
|
60206
60192
|
}
|
|
60207
60193
|
|
|
60208
60194
|
/**
|
|
@@ -60210,7 +60196,7 @@ class HashMap {
|
|
|
60210
60196
|
* @returns {number}
|
|
60211
60197
|
*/
|
|
60212
60198
|
getCurrentLoad() {
|
|
60213
|
-
return this
|
|
60199
|
+
return this.__size / this.__bin_count;
|
|
60214
60200
|
}
|
|
60215
60201
|
|
|
60216
60202
|
/**
|
|
@@ -60219,33 +60205,33 @@ class HashMap {
|
|
|
60219
60205
|
*/
|
|
60220
60206
|
#setBinCount(count) {
|
|
60221
60207
|
|
|
60222
|
-
if (count < this
|
|
60223
|
-
throw new Error(`count must be at least equal to must of records in the map (=${this
|
|
60208
|
+
if (count < this.__size) {
|
|
60209
|
+
throw new Error(`count must be at least equal to must of records in the map (=${this.__size}), instead was ${count}`);
|
|
60224
60210
|
}
|
|
60225
60211
|
|
|
60226
60212
|
|
|
60227
|
-
this
|
|
60228
|
-
this
|
|
60213
|
+
this.__entries_count_power_of_two = ctz32(count);
|
|
60214
|
+
this.__bin_count_power_of_two = this.__entries_count_power_of_two + 1;
|
|
60229
60215
|
|
|
60230
|
-
this
|
|
60231
|
-
this
|
|
60216
|
+
this.__bin_count = 2 ** this.__bin_count_power_of_two;
|
|
60217
|
+
this.__bin_count_mask = this.__bin_count - 1;
|
|
60232
60218
|
|
|
60233
|
-
const old_entry_allocation_count = this
|
|
60219
|
+
const old_entry_allocation_count = this.__entries_allocated_count;
|
|
60234
60220
|
|
|
60235
|
-
this
|
|
60221
|
+
this.__entries_allocated_count = 2 ** this.__entries_count_power_of_two;
|
|
60236
60222
|
|
|
60237
|
-
const BinsArray = UintArrayForCount(this
|
|
60223
|
+
const BinsArray = UintArrayForCount(this.__entries_allocated_count + ENTRY_BASE);
|
|
60238
60224
|
|
|
60239
|
-
this
|
|
60225
|
+
this.__bins = new BinsArray(this.__bin_count);
|
|
60240
60226
|
|
|
60241
|
-
const new_entries = new Array(this
|
|
60242
|
-
const old_entries = this
|
|
60227
|
+
const new_entries = new Array(this.__entries_allocated_count);
|
|
60228
|
+
const old_entries = this.__entries;
|
|
60243
60229
|
|
|
60244
|
-
this
|
|
60230
|
+
this.__entries = new_entries;
|
|
60245
60231
|
|
|
60246
|
-
array_copy(old_entries, 0, new_entries, 0, min2(old_entry_allocation_count, this
|
|
60232
|
+
array_copy(old_entries, 0, new_entries, 0, min2(old_entry_allocation_count, this.__entries_allocated_count));
|
|
60247
60233
|
|
|
60248
|
-
if (this
|
|
60234
|
+
if (this.__size > 0) {
|
|
60249
60235
|
// re-hash
|
|
60250
60236
|
this.rebuild();
|
|
60251
60237
|
}
|
|
@@ -60257,7 +60243,7 @@ class HashMap {
|
|
|
60257
60243
|
* @returns {number}
|
|
60258
60244
|
* @private
|
|
60259
60245
|
*/
|
|
60260
|
-
|
|
60246
|
+
compute_bin_index(hash) {
|
|
60261
60247
|
|
|
60262
60248
|
// mix the input hash to minimize potential impact of poor hash function spread
|
|
60263
60249
|
const mixed_hash = (hash >>> 16) ^ hash;
|
|
@@ -60265,7 +60251,7 @@ class HashMap {
|
|
|
60265
60251
|
// force index to unsigned integer
|
|
60266
60252
|
const index = mixed_hash >>> 0;
|
|
60267
60253
|
|
|
60268
|
-
return index & this
|
|
60254
|
+
return index & this.__bin_count_mask;
|
|
60269
60255
|
}
|
|
60270
60256
|
|
|
60271
60257
|
/**
|
|
@@ -60311,15 +60297,15 @@ class HashMap {
|
|
|
60311
60297
|
*/
|
|
60312
60298
|
#allocate_entry(k, v, hash) {
|
|
60313
60299
|
|
|
60314
|
-
const i = this
|
|
60300
|
+
const i = this.__entries_bound;
|
|
60315
60301
|
|
|
60316
|
-
this
|
|
60302
|
+
this.__entries_bound++;
|
|
60317
60303
|
|
|
60318
|
-
if (this
|
|
60304
|
+
if (this.__entries[i] !== undefined) {
|
|
60319
60305
|
|
|
60320
60306
|
// entry exists, let's reuse it
|
|
60321
60307
|
|
|
60322
|
-
const entry = this
|
|
60308
|
+
const entry = this.__entries[i];
|
|
60323
60309
|
|
|
60324
60310
|
entry.hash = hash;
|
|
60325
60311
|
entry.key = k;
|
|
@@ -60329,7 +60315,7 @@ class HashMap {
|
|
|
60329
60315
|
|
|
60330
60316
|
// entry slot is empty
|
|
60331
60317
|
|
|
60332
|
-
this
|
|
60318
|
+
this.__entries[i] = new HashMapEntry(k, v, hash);
|
|
60333
60319
|
|
|
60334
60320
|
}
|
|
60335
60321
|
|
|
@@ -60350,11 +60336,11 @@ class HashMap {
|
|
|
60350
60336
|
}
|
|
60351
60337
|
|
|
60352
60338
|
#rebuild_if_necessary() {
|
|
60353
|
-
if (this
|
|
60339
|
+
if (this.__entries_bound !== this.__entries_allocated_count) {
|
|
60354
60340
|
return;
|
|
60355
60341
|
}
|
|
60356
60342
|
|
|
60357
|
-
if (this
|
|
60343
|
+
if (this.__size === this.__entries_allocated_count) {
|
|
60358
60344
|
// used up all allocated entries
|
|
60359
60345
|
// bin count must always be larger than end of the entries table
|
|
60360
60346
|
this.#grow();
|
|
@@ -60373,18 +60359,18 @@ class HashMap {
|
|
|
60373
60359
|
this.#rebuild_if_necessary();
|
|
60374
60360
|
|
|
60375
60361
|
const raw_hash = this.#build_key_hash(key);
|
|
60376
|
-
let bin_index = this
|
|
60362
|
+
let bin_index = this.compute_bin_index(raw_hash);
|
|
60377
60363
|
|
|
60378
60364
|
let first_deleted_bin_index = UNDEFINED_BIN_INDEX;
|
|
60379
60365
|
|
|
60380
60366
|
for (; ;) {
|
|
60381
|
-
const bin = this
|
|
60367
|
+
const bin = this.__bins[bin_index];
|
|
60382
60368
|
|
|
60383
60369
|
if (bin > BIN_RESERVED_VALUE_DELETED) {
|
|
60384
60370
|
// bin is occupied
|
|
60385
60371
|
|
|
60386
60372
|
// check if it's the entry that we're looking for
|
|
60387
|
-
const entry = this
|
|
60373
|
+
const entry = this.__entries[bin - ENTRY_BASE];
|
|
60388
60374
|
|
|
60389
60375
|
if (this.#entry_equality_check(entry, raw_hash, key)) {
|
|
60390
60376
|
// found the right entry
|
|
@@ -60404,7 +60390,7 @@ class HashMap {
|
|
|
60404
60390
|
|
|
60405
60391
|
const bin_value = entry_index + ENTRY_BASE;
|
|
60406
60392
|
|
|
60407
|
-
this
|
|
60393
|
+
this.__bins[bin_index] = bin_value;
|
|
60408
60394
|
|
|
60409
60395
|
break;
|
|
60410
60396
|
|
|
@@ -60415,19 +60401,19 @@ class HashMap {
|
|
|
60415
60401
|
}
|
|
60416
60402
|
|
|
60417
60403
|
// perform secondary hashing
|
|
60418
|
-
bin_index = generate_next_linear_congruential_index(bin_index, this
|
|
60404
|
+
bin_index = generate_next_linear_congruential_index(bin_index, this.__bin_count_mask);
|
|
60419
60405
|
|
|
60420
60406
|
}
|
|
60421
60407
|
|
|
60422
|
-
const old_size = this
|
|
60408
|
+
const old_size = this.__size;
|
|
60423
60409
|
const new_size = old_size + 1;
|
|
60424
|
-
this
|
|
60410
|
+
this.__size = new_size;
|
|
60425
60411
|
|
|
60426
60412
|
// compute actual current load
|
|
60427
|
-
const bucket_count = this
|
|
60413
|
+
const bucket_count = this.__bin_count;
|
|
60428
60414
|
const load = new_size / bucket_count;
|
|
60429
60415
|
|
|
60430
|
-
if (load > this
|
|
60416
|
+
if (load > this.__load_factor) {
|
|
60431
60417
|
// current load is too high, increase table size
|
|
60432
60418
|
this.#grow();
|
|
60433
60419
|
}
|
|
@@ -60441,16 +60427,16 @@ class HashMap {
|
|
|
60441
60427
|
get(key) {
|
|
60442
60428
|
const raw_hash = this.#build_key_hash(key);
|
|
60443
60429
|
|
|
60444
|
-
let bin_index = this
|
|
60430
|
+
let bin_index = this.compute_bin_index(raw_hash);
|
|
60445
60431
|
|
|
60446
60432
|
for (; ;) {
|
|
60447
|
-
const bin = this
|
|
60433
|
+
const bin = this.__bins[bin_index];
|
|
60448
60434
|
|
|
60449
60435
|
if (bin > BIN_RESERVED_VALUE_DELETED) {
|
|
60450
60436
|
// bin is occupied
|
|
60451
60437
|
|
|
60452
60438
|
// check if the entry is what we're looking for
|
|
60453
|
-
const entry = this
|
|
60439
|
+
const entry = this.__entries[bin - ENTRY_BASE];
|
|
60454
60440
|
|
|
60455
60441
|
if (this.#entry_equality_check(entry, raw_hash, key)) {
|
|
60456
60442
|
// found the right entry
|
|
@@ -60463,7 +60449,7 @@ class HashMap {
|
|
|
60463
60449
|
}
|
|
60464
60450
|
|
|
60465
60451
|
// perform secondary hashing
|
|
60466
|
-
bin_index = generate_next_linear_congruential_index(bin_index, this
|
|
60452
|
+
bin_index = generate_next_linear_congruential_index(bin_index, this.__bin_count_mask);
|
|
60467
60453
|
|
|
60468
60454
|
}
|
|
60469
60455
|
|
|
@@ -60512,22 +60498,23 @@ class HashMap {
|
|
|
60512
60498
|
}
|
|
60513
60499
|
|
|
60514
60500
|
/**
|
|
60515
|
-
*
|
|
60516
|
-
* @param {number} bin
|
|
60501
|
+
* Update the entries start of table TAB after removing an entry with index N in the array entries.
|
|
60502
|
+
* @param {number} bin index of deleted entry
|
|
60517
60503
|
*/
|
|
60518
60504
|
#update_range_for_deleted(bin) {
|
|
60519
|
-
if (this
|
|
60520
|
-
|
|
60521
|
-
|
|
60522
|
-
|
|
60523
|
-
const entries = this.#entries;
|
|
60505
|
+
if (this.__entries_start !== bin) {
|
|
60506
|
+
return;
|
|
60507
|
+
}
|
|
60524
60508
|
|
|
60525
|
-
|
|
60526
|
-
|
|
60527
|
-
|
|
60509
|
+
let start = bin + 1;
|
|
60510
|
+
let bound = this.__entries_bound;
|
|
60511
|
+
const entries = this.__entries;
|
|
60528
60512
|
|
|
60529
|
-
|
|
60513
|
+
while (start < bound && entries[start].hash === RESERVED_HASH) {
|
|
60514
|
+
start++;
|
|
60530
60515
|
}
|
|
60516
|
+
|
|
60517
|
+
this.__entries_start = start;
|
|
60531
60518
|
}
|
|
60532
60519
|
|
|
60533
60520
|
/**
|
|
@@ -60538,10 +60525,10 @@ class HashMap {
|
|
|
60538
60525
|
delete(key) {
|
|
60539
60526
|
|
|
60540
60527
|
const raw_hash = this.#build_key_hash(key);
|
|
60541
|
-
let bin_index = this
|
|
60528
|
+
let bin_index = this.compute_bin_index(raw_hash);
|
|
60542
60529
|
|
|
60543
|
-
const bins = this
|
|
60544
|
-
const entries = this
|
|
60530
|
+
const bins = this.__bins;
|
|
60531
|
+
const entries = this.__entries;
|
|
60545
60532
|
|
|
60546
60533
|
for (; ;) {
|
|
60547
60534
|
const bin = bins[bin_index];
|
|
@@ -60562,7 +60549,7 @@ class HashMap {
|
|
|
60562
60549
|
// mark slot as removed
|
|
60563
60550
|
bins[bin_index] = BIN_RESERVED_VALUE_DELETED;
|
|
60564
60551
|
|
|
60565
|
-
this
|
|
60552
|
+
this.__size--;
|
|
60566
60553
|
|
|
60567
60554
|
this.#update_range_for_deleted(entry_index);
|
|
60568
60555
|
|
|
@@ -60575,7 +60562,7 @@ class HashMap {
|
|
|
60575
60562
|
}
|
|
60576
60563
|
|
|
60577
60564
|
// perform secondary hashing
|
|
60578
|
-
bin_index = generate_next_linear_congruential_index(bin_index, this
|
|
60565
|
+
bin_index = generate_next_linear_congruential_index(bin_index, this.__bin_count_mask);
|
|
60579
60566
|
|
|
60580
60567
|
}
|
|
60581
60568
|
}
|
|
@@ -60589,9 +60576,9 @@ class HashMap {
|
|
|
60589
60576
|
verifyHashes(callback, thisArg) {
|
|
60590
60577
|
let all_hashes_valid = true;
|
|
60591
60578
|
|
|
60592
|
-
const count = this
|
|
60579
|
+
const count = this.__bin_count;
|
|
60593
60580
|
for (let j = 0; j < count; j++) {
|
|
60594
|
-
const bin = this
|
|
60581
|
+
const bin = this.__bins[j];
|
|
60595
60582
|
|
|
60596
60583
|
if (bin <= BIN_RESERVED_VALUE_DELETED) {
|
|
60597
60584
|
// unoccupied
|
|
@@ -60601,7 +60588,7 @@ class HashMap {
|
|
|
60601
60588
|
/**
|
|
60602
60589
|
* @type {HashMapEntry<K,V>}
|
|
60603
60590
|
*/
|
|
60604
|
-
const entry = this
|
|
60591
|
+
const entry = this.__entries[bin - ENTRY_BASE];
|
|
60605
60592
|
|
|
60606
60593
|
//check hash
|
|
60607
60594
|
const raw_hash = this.#build_key_hash(entry.key);
|
|
@@ -60618,7 +60605,7 @@ class HashMap {
|
|
|
60618
60605
|
}
|
|
60619
60606
|
|
|
60620
60607
|
#grow() {
|
|
60621
|
-
this.#setBinCount(this
|
|
60608
|
+
this.#setBinCount(this.__entries_allocated_count * 2);
|
|
60622
60609
|
}
|
|
60623
60610
|
|
|
60624
60611
|
|
|
@@ -60626,17 +60613,17 @@ class HashMap {
|
|
|
60626
60613
|
* Rebuild table, useful for when table is resized
|
|
60627
60614
|
*/
|
|
60628
60615
|
rebuild() {
|
|
60629
|
-
const entries_bound = this
|
|
60630
|
-
const entries = this
|
|
60616
|
+
const entries_bound = this.__entries_bound;
|
|
60617
|
+
const entries = this.__entries;
|
|
60631
60618
|
|
|
60632
60619
|
// reset all bins
|
|
60633
|
-
const bins = this
|
|
60620
|
+
const bins = this.__bins;
|
|
60634
60621
|
bins.fill(BIN_RESERVED_VALUE_EMPTY);
|
|
60635
60622
|
|
|
60636
60623
|
let written_entries = 0;
|
|
60637
60624
|
|
|
60638
60625
|
for (
|
|
60639
|
-
let existing_entry_index = this
|
|
60626
|
+
let existing_entry_index = this.__entries_start;
|
|
60640
60627
|
existing_entry_index < entries_bound;
|
|
60641
60628
|
existing_entry_index++
|
|
60642
60629
|
) {
|
|
@@ -60654,11 +60641,15 @@ class HashMap {
|
|
|
60654
60641
|
|
|
60655
60642
|
if (new_index !== existing_entry_index) {
|
|
60656
60643
|
// move entries to the new position, compacting holes
|
|
60657
|
-
|
|
60644
|
+
const temp = entries[new_index];
|
|
60645
|
+
|
|
60646
|
+
entries[new_index] = entries[existing_entry_index];
|
|
60647
|
+
entries[existing_entry_index] = temp;
|
|
60658
60648
|
}
|
|
60659
60649
|
|
|
60660
|
-
let bin_index = this
|
|
60650
|
+
let bin_index = this.compute_bin_index(hash);
|
|
60661
60651
|
|
|
60652
|
+
// search for place for the entry
|
|
60662
60653
|
for (; ;) {
|
|
60663
60654
|
const bin = bins[bin_index];
|
|
60664
60655
|
|
|
@@ -60669,20 +60660,20 @@ class HashMap {
|
|
|
60669
60660
|
}
|
|
60670
60661
|
|
|
60671
60662
|
// perform secondary hashing
|
|
60672
|
-
bin_index = generate_next_linear_congruential_index(bin_index, this
|
|
60663
|
+
bin_index = generate_next_linear_congruential_index(bin_index, this.__bin_count_mask);
|
|
60673
60664
|
|
|
60674
60665
|
}
|
|
60675
60666
|
}
|
|
60676
60667
|
|
|
60677
|
-
this
|
|
60678
|
-
this
|
|
60679
|
-
this
|
|
60668
|
+
this.__entries_start = 0;
|
|
60669
|
+
this.__entries_bound = this.__size;
|
|
60670
|
+
this.__version++;
|
|
60680
60671
|
}
|
|
60681
60672
|
|
|
60682
60673
|
#count_live_entities() {
|
|
60683
60674
|
let count = 0;
|
|
60684
|
-
for (let i = this
|
|
60685
|
-
const entry = this
|
|
60675
|
+
for (let i = this.__entries_start; i < this.__entries_bound; i++) {
|
|
60676
|
+
const entry = this.__entries[i];
|
|
60686
60677
|
|
|
60687
60678
|
if (entry.hash !== RESERVED_HASH) {
|
|
60688
60679
|
count++;
|
|
@@ -60694,10 +60685,10 @@ class HashMap {
|
|
|
60694
60685
|
|
|
60695
60686
|
forEach(callback, thisArg) {
|
|
60696
60687
|
|
|
60697
|
-
const count = this
|
|
60698
|
-
const entries = this
|
|
60699
|
-
const bins = this
|
|
60700
|
-
this
|
|
60688
|
+
const count = this.__bin_count;
|
|
60689
|
+
const entries = this.__entries;
|
|
60690
|
+
const bins = this.__bins;
|
|
60691
|
+
this.__version;
|
|
60701
60692
|
|
|
60702
60693
|
for (let j = 0; j < count; j++) {
|
|
60703
60694
|
|
|
@@ -60733,8 +60724,8 @@ class HashMap {
|
|
|
60733
60724
|
clear() {
|
|
60734
60725
|
|
|
60735
60726
|
// clear out all
|
|
60736
|
-
const bins = this
|
|
60737
|
-
const count = this
|
|
60727
|
+
const bins = this.__bins;
|
|
60728
|
+
const count = this.__bin_count;
|
|
60738
60729
|
|
|
60739
60730
|
for (let i = 0; i < count; i++) {
|
|
60740
60731
|
const bin = bins[i];
|
|
@@ -60745,7 +60736,7 @@ class HashMap {
|
|
|
60745
60736
|
// occupied, move to deleted
|
|
60746
60737
|
const entry_index = bin - ENTRY_BASE;
|
|
60747
60738
|
|
|
60748
|
-
this.#deallocate(this
|
|
60739
|
+
this.#deallocate(this.__entries[entry_index]);
|
|
60749
60740
|
}
|
|
60750
60741
|
|
|
60751
60742
|
// mark as empty
|
|
@@ -60755,20 +60746,20 @@ class HashMap {
|
|
|
60755
60746
|
|
|
60756
60747
|
}
|
|
60757
60748
|
|
|
60758
|
-
this
|
|
60749
|
+
this.__size = 0;
|
|
60759
60750
|
|
|
60760
|
-
this
|
|
60761
|
-
this
|
|
60751
|
+
this.__entries_start = 0;
|
|
60752
|
+
this.__entries_bound = 0;
|
|
60762
60753
|
}
|
|
60763
60754
|
|
|
60764
60755
|
* [Symbol.iterator]() {
|
|
60765
60756
|
|
|
60766
|
-
const count = this
|
|
60757
|
+
const count = this.__bin_count;
|
|
60767
60758
|
|
|
60768
|
-
const bins = this
|
|
60769
|
-
const entries = this
|
|
60759
|
+
const bins = this.__bins;
|
|
60760
|
+
const entries = this.__entries;
|
|
60770
60761
|
|
|
60771
|
-
this
|
|
60762
|
+
this.__version;
|
|
60772
60763
|
|
|
60773
60764
|
for (let j = 0; j < count; j++) {
|
|
60774
60765
|
|
|
@@ -106547,6 +106538,20 @@ function computeBinaryDataTypeByPrecision(type, precision) {
|
|
|
106547
106538
|
throw new Error(`Unsupported numeric type(=${type}) and precision(=${precision}) combination`);
|
|
106548
106539
|
}
|
|
106549
106540
|
|
|
106541
|
+
/**
|
|
106542
|
+
* @template T
|
|
106543
|
+
* @param {T[]} array
|
|
106544
|
+
* @param {number} index0
|
|
106545
|
+
* @param {number} index1
|
|
106546
|
+
*/
|
|
106547
|
+
function array_swap_one(array, index0, index1) {
|
|
106548
|
+
|
|
106549
|
+
const t = array[index0];
|
|
106550
|
+
|
|
106551
|
+
array[index0] = array[index1];
|
|
106552
|
+
array[index1] = t;
|
|
106553
|
+
}
|
|
106554
|
+
|
|
106550
106555
|
const stack$1 = [];
|
|
106551
106556
|
|
|
106552
106557
|
/**
|