Skip to content

Commit

Permalink
Merge pull request #81073 from raulsntos/dotnet/cached-string-names
Browse files Browse the repository at this point in the history
C#: Replace `StringNameCache` with `SNAME`
  • Loading branch information
akien-mga committed Aug 31, 2023
2 parents ae7bab8 + 6d7d083 commit 1594acc
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 31 deletions.
24 changes: 7 additions & 17 deletions modules/mono/csharp_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,6 @@

#include <stdint.h>

#define CACHED_STRING_NAME(m_var) (CSharpLanguage::get_singleton()->get_string_names().m_var)

// Types that will be skipped over (in favor of their base types) when setting up instance bindings.
// This must be a superset of `ignored_types` in bindings_generator.cpp.
const Vector<String> ignored_types = {};
Expand Down Expand Up @@ -1686,7 +1684,7 @@ bool CSharpInstance::property_can_revert(const StringName &p_name) const {
Variant ret;
Callable::CallError call_error;
GDMonoCache::managed_callbacks.CSharpInstanceBridge_Call(
gchandle.get_intptr(), &CACHED_STRING_NAME(_property_can_revert), args, 1, &call_error, &ret);
gchandle.get_intptr(), &SNAME("_property_can_revert"), args, 1, &call_error, &ret);

if (call_error.error != Callable::CallError::CALL_OK) {
return false;
Expand Down Expand Up @@ -1722,7 +1720,7 @@ bool CSharpInstance::property_get_revert(const StringName &p_name, Variant &r_re
Variant ret;
Callable::CallError call_error;
GDMonoCache::managed_callbacks.CSharpInstanceBridge_Call(
gchandle.get_intptr(), &CACHED_STRING_NAME(_property_get_revert), args, 1, &call_error, &ret);
gchandle.get_intptr(), &SNAME("_property_get_revert"), args, 1, &call_error, &ret);

if (call_error.error != Callable::CallError::CALL_OK) {
return false;
Expand Down Expand Up @@ -2010,13 +2008,11 @@ void CSharpInstance::notification(int p_notification, bool p_reversed) {
void CSharpInstance::_call_notification(int p_notification, bool p_reversed) {
Variant arg = p_notification;
const Variant *args[1] = { &arg };
StringName method_name = SNAME("_notification");

Callable::CallError call_error;

Variant ret;
Callable::CallError call_error;
GDMonoCache::managed_callbacks.CSharpInstanceBridge_Call(
gchandle.get_intptr(), &method_name, args, 1, &call_error, &ret);
gchandle.get_intptr(), &SNAME("_notification"), args, 1, &call_error, &ret);
}

String CSharpInstance::to_string(bool *r_valid) {
Expand Down Expand Up @@ -2240,7 +2236,7 @@ bool CSharpScript::_update_exports(PlaceHolderScriptInstance *p_instance_to_upda
}

bool CSharpScript::_get(const StringName &p_name, Variant &r_ret) const {
if (p_name == CSharpLanguage::singleton->string_names._script_source) {
if (p_name == SNAME("script/source")) {
r_ret = get_source_code();
return true;
}
Expand All @@ -2249,7 +2245,7 @@ bool CSharpScript::_get(const StringName &p_name, Variant &r_ret) const {
}

bool CSharpScript::_set(const StringName &p_name, const Variant &p_value) {
if (p_name == CSharpLanguage::singleton->string_names._script_source) {
if (p_name == SNAME("script/source")) {
set_source_code(p_value);
reload();
return true;
Expand All @@ -2259,7 +2255,7 @@ bool CSharpScript::_set(const StringName &p_name, const Variant &p_value) {
}

void CSharpScript::_get_property_list(List<PropertyInfo> *p_properties) const {
p_properties->push_back(PropertyInfo(Variant::STRING, CSharpLanguage::singleton->string_names._script_source, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL));
p_properties->push_back(PropertyInfo(Variant::STRING, SNAME("script/source"), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL));
}

void CSharpScript::_bind_methods() {
Expand Down Expand Up @@ -2906,9 +2902,3 @@ void ResourceFormatSaverCSharpScript::get_recognized_extensions(const Ref<Resour
bool ResourceFormatSaverCSharpScript::recognize(const Ref<Resource> &p_resource) const {
return Object::cast_to<CSharpScript>(p_resource.ptr()) != nullptr;
}

CSharpLanguage::StringNameCache::StringNameCache() {
_property_can_revert = StaticCString::create("_property_can_revert");
_property_get_revert = StaticCString::create("_property_get_revert");
_script_source = StaticCString::create("script/source");
}
14 changes: 0 additions & 14 deletions modules/mono/csharp_script.h
Original file line number Diff line number Diff line change
Expand Up @@ -335,14 +335,6 @@ class CSharpLanguage : public ScriptLanguage {

ManagedCallableMiddleman *managed_callable_middleman = memnew(ManagedCallableMiddleman);

struct StringNameCache {
StringName _property_can_revert;
StringName _property_get_revert;
StringName _script_source;

StringNameCache();
};

int lang_idx = -1;

// For debug_break and debug_break_parse
Expand Down Expand Up @@ -370,8 +362,6 @@ class CSharpLanguage : public ScriptLanguage {
static void set_instance_binding(Object *p_object, void *p_binding);
static bool has_instance_binding(Object *p_object);

StringNameCache string_names;

const Mutex &get_language_bind_mutex() {
return language_bind_mutex;
}
Expand All @@ -384,10 +374,6 @@ class CSharpLanguage : public ScriptLanguage {
}
void set_language_index(int p_idx);

_FORCE_INLINE_ const StringNameCache &get_string_names() {
return string_names;
}

_FORCE_INLINE_ static CSharpLanguage *get_singleton() {
return singleton;
}
Expand Down

0 comments on commit 1594acc

Please sign in to comment.