@agoric/swingset-liveslots 0.10.3-u12.0 → 0.10.3-u14.0
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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
### [0.10.3-u14.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-liveslots@0.10.3-u13.0...@agoric/swingset-liveslots@0.10.3-u14.0) (2024-02-27)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @agoric/swingset-liveslots
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### [0.10.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-liveslots@0.10.3-u12.0...@agoric/swingset-liveslots@0.10.3-u13.0) (2023-12-07)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @agoric/swingset-liveslots
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
### [0.10.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-liveslots@0.10.3-u11wf.0...@agoric/swingset-liveslots@0.10.3-u12.0) (2023-11-10)
|
|
7
23
|
|
|
8
24
|
**Note:** Version bump only for package @agoric/swingset-liveslots
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/swingset-liveslots",
|
|
3
|
-
"version": "0.10.3-
|
|
3
|
+
"version": "0.10.3-u14.0",
|
|
4
4
|
"description": "SwingSet ocap support layer",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@agoric/assert": "^0.6.1-u11wf.0",
|
|
21
|
-
"@agoric/internal": "^0.4.0-
|
|
22
|
-
"@agoric/store": "^0.9.3-
|
|
23
|
-
"@agoric/vat-data": "^0.5.3-
|
|
21
|
+
"@agoric/internal": "^0.4.0-u14.0",
|
|
22
|
+
"@agoric/store": "^0.9.3-u14.0",
|
|
23
|
+
"@agoric/vat-data": "^0.5.3-u14.0",
|
|
24
24
|
"@endo/eventual-send": "0.17.2",
|
|
25
25
|
"@endo/exo": "0.2.2",
|
|
26
26
|
"@endo/far": "0.2.18",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "b3a6f3374cb3bddab39fc6d6f426429cae6c29c6"
|
|
65
65
|
}
|
|
@@ -587,12 +587,12 @@ test('durable kind IDs can be reanimated', t => {
|
|
|
587
587
|
|
|
588
588
|
// Store it in the store without having used it
|
|
589
589
|
placeToPutIt.init('savedKindID', kindHandle);
|
|
590
|
-
t.is(log.shift(), 'get vc.
|
|
590
|
+
t.is(log.shift(), 'get vc.4.ssavedKindID => undefined');
|
|
591
591
|
t.is(log.shift(), `get vom.rc.${khid} => undefined`);
|
|
592
592
|
t.is(log.shift(), `set vom.rc.${khid} 1`);
|
|
593
|
-
t.is(log.shift(), `set vc.
|
|
594
|
-
t.is(log.shift(), 'get vc.
|
|
595
|
-
t.is(log.shift(), 'set vc.
|
|
593
|
+
t.is(log.shift(), `set vc.4.ssavedKindID ${vstr(kind)}`);
|
|
594
|
+
t.is(log.shift(), 'get vc.4.|entryCount => 0');
|
|
595
|
+
t.is(log.shift(), 'set vc.4.|entryCount 1');
|
|
596
596
|
t.deepEqual(log, []);
|
|
597
597
|
|
|
598
598
|
// Forget its Representative
|
|
@@ -606,7 +606,7 @@ test('durable kind IDs can be reanimated', t => {
|
|
|
606
606
|
|
|
607
607
|
// Fetch it from the store, which should reanimate it
|
|
608
608
|
const fetchedKindID = placeToPutIt.get('savedKindID');
|
|
609
|
-
t.is(log.shift(), `get vc.
|
|
609
|
+
t.is(log.shift(), `get vc.4.ssavedKindID => ${vstr(kind)}`);
|
|
610
610
|
t.is(
|
|
611
611
|
log.shift(),
|
|
612
612
|
'get vom.dkind.10.descriptor => {"kindID":"10","tag":"testkind"}',
|
|
@@ -654,9 +654,23 @@ test('virtual object gc', t => {
|
|
|
654
654
|
];
|
|
655
655
|
t.is(log.shift(), `get storeKindIDTable => undefined`);
|
|
656
656
|
t.is(log.shift(), `set ${skit[0]} ${skit[1]}`);
|
|
657
|
+
t.is(log.shift(), 'set vc.1.|nextOrdinal 1');
|
|
658
|
+
t.is(log.shift(), 'set vc.1.|entryCount 0');
|
|
659
|
+
t.is(log.shift(), 'get watcherTableID => undefined');
|
|
660
|
+
t.is(log.shift(), 'set vc.2.|nextOrdinal 1');
|
|
661
|
+
t.is(log.shift(), 'set vc.2.|entryCount 0');
|
|
662
|
+
t.is(log.shift(), 'set watcherTableID o+d6/2');
|
|
663
|
+
t.is(log.shift(), 'get vom.rc.o+d6/2 => undefined');
|
|
664
|
+
t.is(log.shift(), 'set vom.rc.o+d6/2 1');
|
|
665
|
+
t.is(log.shift(), 'get watchedPromiseTableID => undefined');
|
|
666
|
+
t.is(log.shift(), 'set vc.3.|nextOrdinal 1');
|
|
667
|
+
t.is(log.shift(), 'set vc.3.|entryCount 0');
|
|
668
|
+
t.is(log.shift(), 'set watchedPromiseTableID o+d6/3');
|
|
669
|
+
t.is(log.shift(), 'get vom.rc.o+d6/3 => undefined');
|
|
670
|
+
t.is(log.shift(), 'set vom.rc.o+d6/3 1');
|
|
657
671
|
t.is(
|
|
658
672
|
log.shift(),
|
|
659
|
-
|
|
673
|
+
'set vom.vkind.10.descriptor {"kindID":"10","tag":"thing"}',
|
|
660
674
|
);
|
|
661
675
|
t.is(log.shift(), `set vom.vkind.11.descriptor {"kindID":"11","tag":"ref"}`);
|
|
662
676
|
t.deepEqual(log, []);
|
|
@@ -682,6 +696,12 @@ test('virtual object gc', t => {
|
|
|
682
696
|
t.deepEqual(dumpStore(), [
|
|
683
697
|
['kindIDID', '1'],
|
|
684
698
|
skit,
|
|
699
|
+
['vc.1.|entryCount', '0'],
|
|
700
|
+
['vc.1.|nextOrdinal', '1'],
|
|
701
|
+
['vc.2.|entryCount', '0'],
|
|
702
|
+
['vc.2.|nextOrdinal', '1'],
|
|
703
|
+
['vc.3.|entryCount', '0'],
|
|
704
|
+
['vc.3.|nextOrdinal', '1'],
|
|
685
705
|
[`vom.${tbase}/1`, minThing('thing #1')],
|
|
686
706
|
[`vom.${tbase}/2`, minThing('thing #2')],
|
|
687
707
|
[`vom.${tbase}/3`, minThing('thing #3')],
|
|
@@ -691,8 +711,12 @@ test('virtual object gc', t => {
|
|
|
691
711
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
692
712
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
693
713
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
714
|
+
['vom.rc.o+d6/2', '1'],
|
|
715
|
+
['vom.rc.o+d6/3', '1'],
|
|
694
716
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
695
717
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
718
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
719
|
+
['watcherTableID', 'o+d6/2'],
|
|
696
720
|
]);
|
|
697
721
|
|
|
698
722
|
// This is what the finalizer would do if the local reference was dropped and GC'd
|
|
@@ -718,6 +742,12 @@ test('virtual object gc', t => {
|
|
|
718
742
|
t.deepEqual(dumpStore(), [
|
|
719
743
|
['kindIDID', '1'],
|
|
720
744
|
skit,
|
|
745
|
+
['vc.1.|entryCount', '0'],
|
|
746
|
+
['vc.1.|nextOrdinal', '1'],
|
|
747
|
+
['vc.2.|entryCount', '0'],
|
|
748
|
+
['vc.2.|nextOrdinal', '1'],
|
|
749
|
+
['vc.3.|entryCount', '0'],
|
|
750
|
+
['vc.3.|nextOrdinal', '1'],
|
|
721
751
|
[`vom.es.${tbase}/1`, 'r'],
|
|
722
752
|
[`vom.${tbase}/1`, minThing('thing #1')],
|
|
723
753
|
[`vom.${tbase}/2`, minThing('thing #2')],
|
|
@@ -728,8 +758,12 @@ test('virtual object gc', t => {
|
|
|
728
758
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
729
759
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
730
760
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
761
|
+
['vom.rc.o+d6/2', '1'],
|
|
762
|
+
['vom.rc.o+d6/3', '1'],
|
|
731
763
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
732
764
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
765
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
766
|
+
['watcherTableID', 'o+d6/2'],
|
|
733
767
|
]);
|
|
734
768
|
|
|
735
769
|
// drop export -- should delete
|
|
@@ -759,6 +793,12 @@ test('virtual object gc', t => {
|
|
|
759
793
|
t.deepEqual(dumpStore(), [
|
|
760
794
|
['kindIDID', '1'],
|
|
761
795
|
skit,
|
|
796
|
+
['vc.1.|entryCount', '0'],
|
|
797
|
+
['vc.1.|nextOrdinal', '1'],
|
|
798
|
+
['vc.2.|entryCount', '0'],
|
|
799
|
+
['vc.2.|nextOrdinal', '1'],
|
|
800
|
+
['vc.3.|entryCount', '0'],
|
|
801
|
+
['vc.3.|nextOrdinal', '1'],
|
|
762
802
|
[`vom.${tbase}/2`, minThing('thing #2')],
|
|
763
803
|
[`vom.${tbase}/3`, minThing('thing #3')],
|
|
764
804
|
[`vom.${tbase}/4`, minThing('thing #4')],
|
|
@@ -767,8 +807,12 @@ test('virtual object gc', t => {
|
|
|
767
807
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
768
808
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
769
809
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
810
|
+
['vom.rc.o+d6/2', '1'],
|
|
811
|
+
['vom.rc.o+d6/3', '1'],
|
|
770
812
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
771
813
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
814
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
815
|
+
['watcherTableID', 'o+d6/2'],
|
|
772
816
|
]);
|
|
773
817
|
|
|
774
818
|
// case 2: export, drop export, drop local ref
|
|
@@ -786,6 +830,12 @@ test('virtual object gc', t => {
|
|
|
786
830
|
t.deepEqual(dumpStore(), [
|
|
787
831
|
['kindIDID', '1'],
|
|
788
832
|
skit,
|
|
833
|
+
['vc.1.|entryCount', '0'],
|
|
834
|
+
['vc.1.|nextOrdinal', '1'],
|
|
835
|
+
['vc.2.|entryCount', '0'],
|
|
836
|
+
['vc.2.|nextOrdinal', '1'],
|
|
837
|
+
['vc.3.|entryCount', '0'],
|
|
838
|
+
['vc.3.|nextOrdinal', '1'],
|
|
789
839
|
[`vom.es.${tbase}/2`, 's'],
|
|
790
840
|
[`vom.${tbase}/2`, minThing('thing #2')],
|
|
791
841
|
[`vom.${tbase}/3`, minThing('thing #3')],
|
|
@@ -795,8 +845,12 @@ test('virtual object gc', t => {
|
|
|
795
845
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
796
846
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
797
847
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
848
|
+
['vom.rc.o+d6/2', '1'],
|
|
849
|
+
['vom.rc.o+d6/3', '1'],
|
|
798
850
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
799
851
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
852
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
853
|
+
['watcherTableID', 'o+d6/2'],
|
|
800
854
|
]);
|
|
801
855
|
|
|
802
856
|
// drop local ref -- should delete
|
|
@@ -817,6 +871,12 @@ test('virtual object gc', t => {
|
|
|
817
871
|
t.deepEqual(dumpStore(), [
|
|
818
872
|
['kindIDID', '1'],
|
|
819
873
|
skit,
|
|
874
|
+
['vc.1.|entryCount', '0'],
|
|
875
|
+
['vc.1.|nextOrdinal', '1'],
|
|
876
|
+
['vc.2.|entryCount', '0'],
|
|
877
|
+
['vc.2.|nextOrdinal', '1'],
|
|
878
|
+
['vc.3.|entryCount', '0'],
|
|
879
|
+
['vc.3.|nextOrdinal', '1'],
|
|
820
880
|
[`vom.${tbase}/3`, minThing('thing #3')],
|
|
821
881
|
[`vom.${tbase}/4`, minThing('thing #4')],
|
|
822
882
|
[`vom.${tbase}/5`, minThing('thing #5')],
|
|
@@ -824,8 +884,12 @@ test('virtual object gc', t => {
|
|
|
824
884
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
825
885
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
826
886
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
887
|
+
['vom.rc.o+d6/2', '1'],
|
|
888
|
+
['vom.rc.o+d6/3', '1'],
|
|
827
889
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
828
890
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
891
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
892
|
+
['watcherTableID', 'o+d6/2'],
|
|
829
893
|
]);
|
|
830
894
|
|
|
831
895
|
// case 3: drop local ref with no prior export
|
|
@@ -847,14 +911,24 @@ test('virtual object gc', t => {
|
|
|
847
911
|
t.deepEqual(dumpStore(), [
|
|
848
912
|
['kindIDID', '1'],
|
|
849
913
|
skit,
|
|
914
|
+
['vc.1.|entryCount', '0'],
|
|
915
|
+
['vc.1.|nextOrdinal', '1'],
|
|
916
|
+
['vc.2.|entryCount', '0'],
|
|
917
|
+
['vc.2.|nextOrdinal', '1'],
|
|
918
|
+
['vc.3.|entryCount', '0'],
|
|
919
|
+
['vc.3.|nextOrdinal', '1'],
|
|
850
920
|
[`vom.${tbase}/4`, minThing('thing #4')],
|
|
851
921
|
[`vom.${tbase}/5`, minThing('thing #5')],
|
|
852
922
|
[`vom.${tbase}/6`, minThing('thing #6')],
|
|
853
923
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
854
924
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
855
925
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
926
|
+
['vom.rc.o+d6/2', '1'],
|
|
927
|
+
['vom.rc.o+d6/3', '1'],
|
|
856
928
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
857
929
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
930
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
931
|
+
['watcherTableID', 'o+d6/2'],
|
|
858
932
|
]);
|
|
859
933
|
|
|
860
934
|
// case 4: ref virtually, export, drop local ref, drop export
|
|
@@ -867,15 +941,25 @@ test('virtual object gc', t => {
|
|
|
867
941
|
t.deepEqual(dumpStore(), [
|
|
868
942
|
['kindIDID', '1'],
|
|
869
943
|
skit,
|
|
944
|
+
['vc.1.|entryCount', '0'],
|
|
945
|
+
['vc.1.|nextOrdinal', '1'],
|
|
946
|
+
['vc.2.|entryCount', '0'],
|
|
947
|
+
['vc.2.|nextOrdinal', '1'],
|
|
948
|
+
['vc.3.|entryCount', '0'],
|
|
949
|
+
['vc.3.|nextOrdinal', '1'],
|
|
870
950
|
[`vom.${tbase}/4`, minThing('thing #4')],
|
|
871
951
|
[`vom.${tbase}/5`, minThing('thing #5')],
|
|
872
952
|
[`vom.${tbase}/6`, minThing('thing #6')],
|
|
873
953
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
874
954
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
875
955
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
956
|
+
['vom.rc.o+d6/2', '1'],
|
|
957
|
+
['vom.rc.o+d6/3', '1'],
|
|
876
958
|
[`vom.rc.${tbase}/4`, '1'],
|
|
877
959
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
878
960
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
961
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
962
|
+
['watcherTableID', 'o+d6/2'],
|
|
879
963
|
]);
|
|
880
964
|
// export
|
|
881
965
|
setExportStatus(`${tbase}/4`, 'reachable');
|
|
@@ -909,6 +993,12 @@ test('virtual object gc', t => {
|
|
|
909
993
|
t.deepEqual(dumpStore(), [
|
|
910
994
|
['kindIDID', '1'],
|
|
911
995
|
skit,
|
|
996
|
+
['vc.1.|entryCount', '0'],
|
|
997
|
+
['vc.1.|nextOrdinal', '1'],
|
|
998
|
+
['vc.2.|entryCount', '0'],
|
|
999
|
+
['vc.2.|nextOrdinal', '1'],
|
|
1000
|
+
['vc.3.|entryCount', '0'],
|
|
1001
|
+
['vc.3.|nextOrdinal', '1'],
|
|
912
1002
|
[`vom.es.${tbase}/4`, 's'],
|
|
913
1003
|
[`vom.es.${tbase}/5`, 'r'],
|
|
914
1004
|
[`vom.${tbase}/4`, minThing('thing #4')],
|
|
@@ -917,10 +1007,14 @@ test('virtual object gc', t => {
|
|
|
917
1007
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
918
1008
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
919
1009
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
1010
|
+
['vom.rc.o+d6/2', '1'],
|
|
1011
|
+
['vom.rc.o+d6/3', '1'],
|
|
920
1012
|
[`vom.rc.${tbase}/4`, '1'],
|
|
921
1013
|
[`vom.rc.${tbase}/5`, '1'],
|
|
922
1014
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
923
1015
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
1016
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
1017
|
+
['watcherTableID', 'o+d6/2'],
|
|
924
1018
|
]);
|
|
925
1019
|
// drop local ref -- should not delete because ref'd virtually AND exported
|
|
926
1020
|
pretendGC(`${tbase}/5`, false);
|
|
@@ -944,6 +1038,12 @@ test('virtual object gc', t => {
|
|
|
944
1038
|
t.deepEqual(dumpStore(), [
|
|
945
1039
|
['kindIDID', '1'],
|
|
946
1040
|
skit,
|
|
1041
|
+
['vc.1.|entryCount', '0'],
|
|
1042
|
+
['vc.1.|nextOrdinal', '1'],
|
|
1043
|
+
['vc.2.|entryCount', '0'],
|
|
1044
|
+
['vc.2.|nextOrdinal', '1'],
|
|
1045
|
+
['vc.3.|entryCount', '0'],
|
|
1046
|
+
['vc.3.|nextOrdinal', '1'],
|
|
947
1047
|
[`vom.es.${tbase}/4`, 's'],
|
|
948
1048
|
[`vom.es.${tbase}/5`, 's'],
|
|
949
1049
|
[`vom.${tbase}/4`, minThing('thing #4')],
|
|
@@ -952,11 +1052,15 @@ test('virtual object gc', t => {
|
|
|
952
1052
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
953
1053
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
954
1054
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
1055
|
+
['vom.rc.o+d6/2', '1'],
|
|
1056
|
+
['vom.rc.o+d6/3', '1'],
|
|
955
1057
|
[`vom.rc.${tbase}/4`, '1'],
|
|
956
1058
|
[`vom.rc.${tbase}/5`, '1'],
|
|
957
1059
|
[`vom.rc.${tbase}/6`, '1'],
|
|
958
1060
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
959
1061
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
1062
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
1063
|
+
['watcherTableID', 'o+d6/2'],
|
|
960
1064
|
]);
|
|
961
1065
|
// drop local ref -- should not delete because ref'd virtually
|
|
962
1066
|
pretendGC(`${tbase}/6`, false);
|
|
@@ -966,6 +1070,12 @@ test('virtual object gc', t => {
|
|
|
966
1070
|
t.deepEqual(dumpStore(), [
|
|
967
1071
|
['kindIDID', '1'],
|
|
968
1072
|
skit,
|
|
1073
|
+
['vc.1.|entryCount', '0'],
|
|
1074
|
+
['vc.1.|nextOrdinal', '1'],
|
|
1075
|
+
['vc.2.|entryCount', '0'],
|
|
1076
|
+
['vc.2.|nextOrdinal', '1'],
|
|
1077
|
+
['vc.3.|entryCount', '0'],
|
|
1078
|
+
['vc.3.|nextOrdinal', '1'],
|
|
969
1079
|
[`vom.es.${tbase}/4`, 's'],
|
|
970
1080
|
[`vom.es.${tbase}/5`, 's'],
|
|
971
1081
|
[`vom.${tbase}/4`, minThing('thing #4')],
|
|
@@ -974,11 +1084,15 @@ test('virtual object gc', t => {
|
|
|
974
1084
|
[`vom.${tbase}/7`, minThing('thing #7')],
|
|
975
1085
|
[`vom.${tbase}/8`, minThing('thing #8')],
|
|
976
1086
|
[`vom.${tbase}/9`, minThing('thing #9')],
|
|
1087
|
+
['vom.rc.o+d6/2', '1'],
|
|
1088
|
+
['vom.rc.o+d6/3', '1'],
|
|
977
1089
|
[`vom.rc.${tbase}/4`, '1'],
|
|
978
1090
|
[`vom.rc.${tbase}/5`, '1'],
|
|
979
1091
|
[`vom.rc.${tbase}/6`, '1'],
|
|
980
1092
|
['vom.vkind.10.descriptor', '{"kindID":"10","tag":"thing"}'],
|
|
981
1093
|
['vom.vkind.11.descriptor', '{"kindID":"11","tag":"ref"}'],
|
|
1094
|
+
['watchedPromiseTableID', 'o+d6/3'],
|
|
1095
|
+
['watcherTableID', 'o+d6/2'],
|
|
982
1096
|
]);
|
|
983
1097
|
});
|
|
984
1098
|
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
/* eslint-disable max-classes-per-file */
|
|
3
3
|
import { makeMarshal } from '@endo/marshal';
|
|
4
4
|
import { assert } from '@agoric/assert';
|
|
5
|
-
import {
|
|
5
|
+
import { isPromise } from '@endo/promise-kit';
|
|
6
6
|
|
|
7
|
+
import { parseVatSlot } from '../src/parseVatSlots.js';
|
|
7
8
|
import { makeVirtualReferenceManager } from '../src/virtualReferences.js';
|
|
8
9
|
import { makeWatchedPromiseManager } from '../src/watchedPromises.js';
|
|
9
10
|
import { makeFakeVirtualObjectManager } from './fakeVirtualObjectManager.js';
|
|
@@ -158,6 +159,14 @@ export function makeFakeLiveSlotsStuff(options = {}) {
|
|
|
158
159
|
return exportID;
|
|
159
160
|
}
|
|
160
161
|
|
|
162
|
+
// different starting point for more distinct IDs
|
|
163
|
+
let nextPromiseID = 7;
|
|
164
|
+
function allocatePromiseID() {
|
|
165
|
+
const promiseID = nextPromiseID;
|
|
166
|
+
nextPromiseID += 1;
|
|
167
|
+
return promiseID;
|
|
168
|
+
}
|
|
169
|
+
|
|
161
170
|
let nextCollectionID = 1;
|
|
162
171
|
function allocateCollectionID() {
|
|
163
172
|
const collectionID = nextCollectionID;
|
|
@@ -193,7 +202,9 @@ export function makeFakeLiveSlotsStuff(options = {}) {
|
|
|
193
202
|
|
|
194
203
|
function convertValToSlot(val) {
|
|
195
204
|
if (!valToSlot.has(val)) {
|
|
196
|
-
const slot =
|
|
205
|
+
const slot = isPromise(val)
|
|
206
|
+
? `p+${allocatePromiseID()}`
|
|
207
|
+
: `o+${allocateExportID()}`;
|
|
197
208
|
valToSlot.set(val, slot);
|
|
198
209
|
setValForSlot(slot, val);
|
|
199
210
|
}
|
|
@@ -311,6 +322,7 @@ export function makeFakeWatchedPromiseManager(
|
|
|
311
322
|
maybeExportPromise: fakeStuff.maybeExportPromise,
|
|
312
323
|
});
|
|
313
324
|
}
|
|
325
|
+
|
|
314
326
|
/**
|
|
315
327
|
* Configure virtual stuff with relaxed durability rules and fake liveslots
|
|
316
328
|
*
|
|
@@ -331,6 +343,7 @@ export function makeFakeVirtualStuff(options = {}) {
|
|
|
331
343
|
fakeStuff.setVrm(vrm);
|
|
332
344
|
const cm = makeFakeCollectionManager(vrm, fakeStuff, actualOptions);
|
|
333
345
|
const wpm = makeFakeWatchedPromiseManager(vrm, vom, cm, fakeStuff);
|
|
346
|
+
wpm.preparePromiseWatcherTables();
|
|
334
347
|
return { fakeStuff, vrm, vom, cm, wpm };
|
|
335
348
|
}
|
|
336
349
|
|