@woosh/meep-engine 2.117.18 → 2.117.19
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 +115 -112
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +115 -112
- package/package.json +1 -1
- package/src/core/collection/map/HashMap.d.ts.map +1 -1
- package/src/core/collection/map/HashMap.js +110 -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,13 @@ class HashMap {
|
|
|
60654
60641
|
|
|
60655
60642
|
if (new_index !== existing_entry_index) {
|
|
60656
60643
|
// move entries to the new position, compacting holes
|
|
60657
|
-
|
|
60644
|
+
|
|
60645
|
+
entries[new_index] = entries[existing_entry_index];
|
|
60658
60646
|
}
|
|
60659
60647
|
|
|
60660
|
-
let bin_index = this
|
|
60648
|
+
let bin_index = this.compute_bin_index(hash);
|
|
60661
60649
|
|
|
60650
|
+
// search for place for the entry
|
|
60662
60651
|
for (; ;) {
|
|
60663
60652
|
const bin = bins[bin_index];
|
|
60664
60653
|
|
|
@@ -60669,20 +60658,20 @@ class HashMap {
|
|
|
60669
60658
|
}
|
|
60670
60659
|
|
|
60671
60660
|
// perform secondary hashing
|
|
60672
|
-
bin_index = generate_next_linear_congruential_index(bin_index, this
|
|
60661
|
+
bin_index = generate_next_linear_congruential_index(bin_index, this.__bin_count_mask);
|
|
60673
60662
|
|
|
60674
60663
|
}
|
|
60675
60664
|
}
|
|
60676
60665
|
|
|
60677
|
-
this
|
|
60678
|
-
this
|
|
60679
|
-
this
|
|
60666
|
+
this.__entries_start = 0;
|
|
60667
|
+
this.__entries_bound = this.__size;
|
|
60668
|
+
this.__version++;
|
|
60680
60669
|
}
|
|
60681
60670
|
|
|
60682
60671
|
#count_live_entities() {
|
|
60683
60672
|
let count = 0;
|
|
60684
|
-
for (let i = this
|
|
60685
|
-
const entry = this
|
|
60673
|
+
for (let i = this.__entries_start; i < this.__entries_bound; i++) {
|
|
60674
|
+
const entry = this.__entries[i];
|
|
60686
60675
|
|
|
60687
60676
|
if (entry.hash !== RESERVED_HASH) {
|
|
60688
60677
|
count++;
|
|
@@ -60694,10 +60683,10 @@ class HashMap {
|
|
|
60694
60683
|
|
|
60695
60684
|
forEach(callback, thisArg) {
|
|
60696
60685
|
|
|
60697
|
-
const count = this
|
|
60698
|
-
const entries = this
|
|
60699
|
-
const bins = this
|
|
60700
|
-
this
|
|
60686
|
+
const count = this.__bin_count;
|
|
60687
|
+
const entries = this.__entries;
|
|
60688
|
+
const bins = this.__bins;
|
|
60689
|
+
this.__version;
|
|
60701
60690
|
|
|
60702
60691
|
for (let j = 0; j < count; j++) {
|
|
60703
60692
|
|
|
@@ -60733,8 +60722,8 @@ class HashMap {
|
|
|
60733
60722
|
clear() {
|
|
60734
60723
|
|
|
60735
60724
|
// clear out all
|
|
60736
|
-
const bins = this
|
|
60737
|
-
const count = this
|
|
60725
|
+
const bins = this.__bins;
|
|
60726
|
+
const count = this.__bin_count;
|
|
60738
60727
|
|
|
60739
60728
|
for (let i = 0; i < count; i++) {
|
|
60740
60729
|
const bin = bins[i];
|
|
@@ -60745,7 +60734,7 @@ class HashMap {
|
|
|
60745
60734
|
// occupied, move to deleted
|
|
60746
60735
|
const entry_index = bin - ENTRY_BASE;
|
|
60747
60736
|
|
|
60748
|
-
this.#deallocate(this
|
|
60737
|
+
this.#deallocate(this.__entries[entry_index]);
|
|
60749
60738
|
}
|
|
60750
60739
|
|
|
60751
60740
|
// mark as empty
|
|
@@ -60755,20 +60744,20 @@ class HashMap {
|
|
|
60755
60744
|
|
|
60756
60745
|
}
|
|
60757
60746
|
|
|
60758
|
-
this
|
|
60747
|
+
this.__size = 0;
|
|
60759
60748
|
|
|
60760
|
-
this
|
|
60761
|
-
this
|
|
60749
|
+
this.__entries_start = 0;
|
|
60750
|
+
this.__entries_bound = 0;
|
|
60762
60751
|
}
|
|
60763
60752
|
|
|
60764
60753
|
* [Symbol.iterator]() {
|
|
60765
60754
|
|
|
60766
|
-
const count = this
|
|
60755
|
+
const count = this.__bin_count;
|
|
60767
60756
|
|
|
60768
|
-
const bins = this
|
|
60769
|
-
const entries = this
|
|
60757
|
+
const bins = this.__bins;
|
|
60758
|
+
const entries = this.__entries;
|
|
60770
60759
|
|
|
60771
|
-
this
|
|
60760
|
+
this.__version;
|
|
60772
60761
|
|
|
60773
60762
|
for (let j = 0; j < count; j++) {
|
|
60774
60763
|
|
|
@@ -106547,6 +106536,20 @@ function computeBinaryDataTypeByPrecision(type, precision) {
|
|
|
106547
106536
|
throw new Error(`Unsupported numeric type(=${type}) and precision(=${precision}) combination`);
|
|
106548
106537
|
}
|
|
106549
106538
|
|
|
106539
|
+
/**
|
|
106540
|
+
* @template T
|
|
106541
|
+
* @param {T[]} array
|
|
106542
|
+
* @param {number} index0
|
|
106543
|
+
* @param {number} index1
|
|
106544
|
+
*/
|
|
106545
|
+
function array_swap_one(array, index0, index1) {
|
|
106546
|
+
|
|
106547
|
+
const t = array[index0];
|
|
106548
|
+
|
|
106549
|
+
array[index0] = array[index1];
|
|
106550
|
+
array[index1] = t;
|
|
106551
|
+
}
|
|
106552
|
+
|
|
106550
106553
|
const stack$1 = [];
|
|
106551
106554
|
|
|
106552
106555
|
/**
|