Skip to content

Commit

Permalink
fix(gnovm): save object when refCount changed (#2992)
Browse files Browse the repository at this point in the history
This PR a fix in the gnovm to ensure that objects are saved correctly
when their reference count changes.

closes: #2266 #1543
<!-- please provide a detailed description of the changes made in this
pull request. -->

<details><summary>Contributors' checklist...</summary>

- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
  • Loading branch information
omarsy authored Jan 15, 2025
1 parent bd1d104 commit 90ff3e4
Show file tree
Hide file tree
Showing 37 changed files with 1,002 additions and 6,714 deletions.
2 changes: 1 addition & 1 deletion contribs/gnodev/pkg/dev/node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ func testingCallRealm(t *testing.T, node *Node, msgs ...vm.MsgCall) (*core_types

txcfg := gnoclient.BaseTxCfg{
GasFee: ugnot.ValueString(1000000), // Gas fee
GasWanted: 2_000_000, // Gas wanted
GasWanted: 3_000_000, // Gas wanted
}

// Set Caller in the msgs
Expand Down
113 changes: 0 additions & 113 deletions examples/gno.land/p/demo/avl/z_0_filetest.gno
Original file line number Diff line number Diff line change
Expand Up @@ -215,116 +215,3 @@ func main() {
// }
// }
// }
// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:2]={
// "Blank": {},
// "ObjectInfo": {
// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:2",
// "IsEscaped": true,
// "ModTime": "5",
// "RefCount": "2"
// },
// "Parent": null,
// "Source": {
// "@type": "/gno.RefNode",
// "BlockNode": null,
// "Location": {
// "Column": "0",
// "File": "",
// "Line": "0",
// "PkgPath": "gno.land/r/test"
// }
// },
// "Values": [
// {
// "T": {
// "@type": "/gno.PointerType",
// "Elt": {
// "@type": "/gno.RefType",
// "ID": "gno.land/p/demo/avl.Node"
// }
// },
// "V": {
// "@type": "/gno.PointerValue",
// "Base": {
// "@type": "/gno.RefValue",
// "Hash": "ae86874f9b47fa5e64c30b3e92e9d07f2ec967a4",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:6"
// },
// "Index": "0",
// "TV": null
// }
// },
// {
// "T": {
// "@type": "/gno.FuncType",
// "Params": [],
// "Results": []
// },
// "V": {
// "@type": "/gno.FuncValue",
// "Closure": {
// "@type": "/gno.RefValue",
// "Escaped": true,
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3"
// },
// "FileName": "z_0.gno",
// "IsMethod": false,
// "Name": "init.1",
// "NativeName": "",
// "NativePkg": "",
// "PkgPath": "gno.land/r/test",
// "Source": {
// "@type": "/gno.RefNode",
// "BlockNode": null,
// "Location": {
// "Column": "1",
// "File": "z_0.gno",
// "Line": "10",
// "PkgPath": "gno.land/r/test"
// }
// },
// "Type": {
// "@type": "/gno.FuncType",
// "Params": [],
// "Results": []
// }
// }
// },
// {
// "T": {
// "@type": "/gno.FuncType",
// "Params": [],
// "Results": []
// },
// "V": {
// "@type": "/gno.FuncValue",
// "Closure": {
// "@type": "/gno.RefValue",
// "Escaped": true,
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3"
// },
// "FileName": "z_0.gno",
// "IsMethod": false,
// "Name": "main",
// "NativeName": "",
// "NativePkg": "",
// "PkgPath": "gno.land/r/test",
// "Source": {
// "@type": "/gno.RefNode",
// "BlockNode": null,
// "Location": {
// "Column": "1",
// "File": "z_0.gno",
// "Line": "15",
// "PkgPath": "gno.land/r/test"
// }
// },
// "Type": {
// "@type": "/gno.FuncType",
// "Params": [],
// "Results": []
// }
// }
// }
// ]
// }
161 changes: 43 additions & 118 deletions examples/gno.land/p/demo/avl/z_1_filetest.gno
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,44 @@ func main() {

// Realm:
// switchrealm["gno.land/r/test"]
// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:6]={
// "ObjectInfo": {
// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:6",
// "ModTime": "11",
// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:5",
// "RefCount": "1"
// },
// "Value": {
// "T": {
// "@type": "/gno.RefType",
// "ID": "gno.land/p/demo/avl.Node"
// },
// "V": {
// "@type": "/gno.RefValue",
// "Hash": "1375f6f96a1a3f298347dc8fc0065afa36cb7f0f",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7"
// }
// }
// }
// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:8]={
// "ObjectInfo": {
// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8",
// "ModTime": "13",
// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:5",
// "RefCount": "1"
// },
// "Value": {
// "T": {
// "@type": "/gno.RefType",
// "ID": "gno.land/p/demo/avl.Node"
// },
// "V": {
// "@type": "/gno.RefValue",
// "Hash": "b28057ab7be6383785c0a5503e8a531bdbc21851",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9"
// }
// }
// }
// c[a8ada09dee16d791fd406d629fe29bb0ed084a30:15]={
// "Fields": [
// {
Expand Down Expand Up @@ -143,7 +181,7 @@ func main() {
// "@type": "/gno.PointerValue",
// "Base": {
// "@type": "/gno.RefValue",
// "Hash": "2f3adc5d0f2a3fe0331cfa93572a7abdde14c9aa",
// "Hash": "cafae89e4d4aaaefe7fdf0691084508d4274a981",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8"
// },
// "Index": "0",
Expand Down Expand Up @@ -191,7 +229,7 @@ func main() {
// },
// "V": {
// "@type": "/gno.RefValue",
// "Hash": "fe20a19f956511f274dc77854e9e5468387260f4",
// "Hash": "b2e446f490656c19a83c43055de29c96e92a1549",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:13"
// }
// }
Expand Down Expand Up @@ -235,7 +273,7 @@ func main() {
// "@type": "/gno.PointerValue",
// "Base": {
// "@type": "/gno.RefValue",
// "Hash": "c89a71bdf045e8bde2059dc9d33839f916e02e5d",
// "Hash": "4e56eeb96eb1d9b27cf603140cd03a1622b6358b",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:6"
// },
// "Index": "0",
Expand All @@ -254,7 +292,7 @@ func main() {
// "@type": "/gno.PointerValue",
// "Base": {
// "@type": "/gno.RefValue",
// "Hash": "90fa67f8c47db4b9b2a60425dff08d5a3385100f",
// "Hash": "7b61530859954d1d14b2f696c91c5f37d39c21e7",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:12"
// },
// "Index": "0",
Expand Down Expand Up @@ -283,123 +321,10 @@ func main() {
// },
// "V": {
// "@type": "/gno.RefValue",
// "Hash": "83e42caaf53070dd95b5f859053eb51ed900bbda",
// "Hash": "fedc6d430b38c985dc6a985b2fcaee97e88ba6da",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:11"
// }
// }
// }
// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:2]={
// "Blank": {},
// "ObjectInfo": {
// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:2",
// "IsEscaped": true,
// "ModTime": "9",
// "RefCount": "2"
// },
// "Parent": null,
// "Source": {
// "@type": "/gno.RefNode",
// "BlockNode": null,
// "Location": {
// "Column": "0",
// "File": "",
// "Line": "0",
// "PkgPath": "gno.land/r/test"
// }
// },
// "Values": [
// {
// "T": {
// "@type": "/gno.PointerType",
// "Elt": {
// "@type": "/gno.RefType",
// "ID": "gno.land/p/demo/avl.Node"
// }
// },
// "V": {
// "@type": "/gno.PointerValue",
// "Base": {
// "@type": "/gno.RefValue",
// "Hash": "1faa9fa4ba1935121a6d3f0a623772e9d4499b0a",
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:10"
// },
// "Index": "0",
// "TV": null
// }
// },
// {
// "T": {
// "@type": "/gno.FuncType",
// "Params": [],
// "Results": []
// },
// "V": {
// "@type": "/gno.FuncValue",
// "Closure": {
// "@type": "/gno.RefValue",
// "Escaped": true,
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3"
// },
// "FileName": "z_1.gno",
// "IsMethod": false,
// "Name": "init.1",
// "NativeName": "",
// "NativePkg": "",
// "PkgPath": "gno.land/r/test",
// "Source": {
// "@type": "/gno.RefNode",
// "BlockNode": null,
// "Location": {
// "Column": "1",
// "File": "z_1.gno",
// "Line": "10",
// "PkgPath": "gno.land/r/test"
// }
// },
// "Type": {
// "@type": "/gno.FuncType",
// "Params": [],
// "Results": []
// }
// }
// },
// {
// "T": {
// "@type": "/gno.FuncType",
// "Params": [],
// "Results": []
// },
// "V": {
// "@type": "/gno.FuncValue",
// "Closure": {
// "@type": "/gno.RefValue",
// "Escaped": true,
// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3"
// },
// "FileName": "z_1.gno",
// "IsMethod": false,
// "Name": "main",
// "NativeName": "",
// "NativePkg": "",
// "PkgPath": "gno.land/r/test",
// "Source": {
// "@type": "/gno.RefNode",
// "BlockNode": null,
// "Location": {
// "Column": "1",
// "File": "z_1.gno",
// "Line": "15",
// "PkgPath": "gno.land/r/test"
// }
// },
// "Type": {
// "@type": "/gno.FuncType",
// "Params": [],
// "Results": []
// }
// }
// }
// ]
// }
// d[a8ada09dee16d791fd406d629fe29bb0ed084a30:4]
// d[a8ada09dee16d791fd406d629fe29bb0ed084a30:5]
Loading

0 comments on commit 90ff3e4

Please sign in to comment.