Remove raw base pointer from GDScript#111490
Merged
Repiteo merged 1 commit intogodotengine:masterfrom Nov 7, 2025
Merged
Conversation
dalexeev
approved these changes
Nov 6, 2025
Member
dalexeev
left a comment
There was a problem hiding this comment.
Looks good to me.
Note that _FORCE_INLINE_ does not generally guarantee inlining: for dev and size-optimized builds, the inline keyword is used instead of an attribute, so the compiler will determine whether to inline based on its own heuristics. However, the compiler will likely always inline ptr(), since it is a trivial accessor.
Lines 76 to 84 in cb3af5a
godot/core/object/ref_counted.h
Lines 124 to 126 in cb3af5a
Contributor
|
Thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Currently GDScript stores its base once as
Ref<GDScript>(base) and once as rawGDScript*(_base). They are always set/unset together, the raw pointer is just assignedbase->ptr(). So the value of those should always be the same.The comment on
_basereads as if the raw pointer was cached for performance. HoweverRef::ptris at the moment force inlined and just returns the raw pointer that the ref uses. So based on my knowledge it should be equally as fast. Both members are present since 0b806ee so maybe ref did have some overhead at some point.Main advantage is preventing invalid states and to remove noise from the code.