Remove the intern'd strings component

Intern'd strings were intended to be "shared" to reduce memory usage but
this optimization doesn't carry its weight. Remove it. No functional
change expected.
This commit is contained in:
ridiculousfish 2022-08-13 12:26:34 -07:00
parent 082f074bb1
commit 2a0e0d6721
11 changed files with 1 additions and 75 deletions

View File

@ -106,7 +106,7 @@ set(FISH_SRCS
src/expand.cpp src/fallback.cpp src/fd_monitor.cpp src/fish_version.cpp src/expand.cpp src/fallback.cpp src/fd_monitor.cpp src/fish_version.cpp
src/flog.cpp src/function.cpp src/future_feature_flags.cpp src/highlight.cpp src/flog.cpp src/function.cpp src/future_feature_flags.cpp src/highlight.cpp
src/history.cpp src/history_file.cpp src/input.cpp src/input_common.cpp src/history.cpp src/history_file.cpp src/input.cpp src/input_common.cpp
src/intern.cpp src/io.cpp src/iothread.cpp src/job_group.cpp src/kill.cpp src/io.cpp src/iothread.cpp src/job_group.cpp src/kill.cpp
src/null_terminated_array.cpp src/operation_context.cpp src/output.cpp src/null_terminated_array.cpp src/operation_context.cpp src/output.cpp
src/pager.cpp src/parse_execution.cpp src/parse_tree.cpp src/parse_util.cpp src/pager.cpp src/parse_execution.cpp src/parse_tree.cpp src/parse_util.cpp
src/parser.cpp src/parser_keywords.cpp src/path.cpp src/postfork.cpp src/parser.cpp src/parser_keywords.cpp src/path.cpp src/postfork.cpp

View File

@ -71,7 +71,6 @@
#include "exec.h" #include "exec.h"
#include "fallback.h" // IWYU pragma: keep #include "fallback.h" // IWYU pragma: keep
#include "flog.h" #include "flog.h"
#include "intern.h"
#include "io.h" #include "io.h"
#include "parse_constants.h" #include "parse_constants.h"
#include "parse_util.h" #include "parse_util.h"
@ -430,13 +429,6 @@ static const builtin_data_t *builtin_lookup(const wcstring &name) {
return get_by_sorted_name(name.c_str(), builtin_datas); return get_by_sorted_name(name.c_str(), builtin_datas);
} }
/// Initialize builtin data.
void builtin_init() {
for (const auto &builtin_data : builtin_datas) {
intern_static(builtin_data.name);
}
}
/// Is there a builtin command with the given name? /// Is there a builtin command with the given name?
bool builtin_exists(const wcstring &cmd) { return static_cast<bool>(builtin_lookup(cmd)); } bool builtin_exists(const wcstring &cmd) { return static_cast<bool>(builtin_lookup(cmd)); }

View File

@ -78,7 +78,6 @@ struct builtin_data_t {
/// The send stuff to foreground message. /// The send stuff to foreground message.
#define FG_MSG _(L"Send job %d (%ls) to foreground\n") #define FG_MSG _(L"Send job %d (%ls) to foreground\n")
void builtin_init();
bool builtin_exists(const wcstring &cmd); bool builtin_exists(const wcstring &cmd);
proc_status_t builtin_run(parser_t &parser, const wcstring_list_t &argv, io_streams_t &streams); proc_status_t builtin_run(parser_t &parser, const wcstring_list_t &argv, io_streams_t &streams);

View File

@ -13,7 +13,6 @@
#include "../common.h" #include "../common.h"
#include "../env.h" #include "../env.h"
#include "../fallback.h" // IWYU pragma: keep #include "../fallback.h" // IWYU pragma: keep
#include "../intern.h"
#include "../io.h" #include "../io.h"
#include "../parser.h" #include "../parser.h"
#include "../proc.h" #include "../proc.h"

View File

@ -48,7 +48,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#include "function.h" #include "function.h"
#include "future_feature_flags.h" #include "future_feature_flags.h"
#include "history.h" #include "history.h"
#include "intern.h"
#include "io.h" #include "io.h"
#include "parse_util.h" #include "parse_util.h"
#include "parser.h" #include "parser.h"
@ -502,7 +501,6 @@ int main(int argc, char **argv) {
} }
mutable_fish_features().set_from_string(opts.features); mutable_fish_features().set_from_string(opts.features);
proc_init(); proc_init();
builtin_init();
misc_init(); misc_init();
reader_init(); reader_init();

View File

@ -7083,7 +7083,6 @@ int main(int argc, char **argv) {
set_main_thread(); set_main_thread();
setup_fork_guards(); setup_fork_guards();
proc_init(); proc_init();
builtin_init();
env_init(); env_init();
misc_init(); misc_init();
reader_init(); reader_init();

View File

@ -25,7 +25,6 @@
#include "exec.h" #include "exec.h"
#include "fallback.h" // IWYU pragma: keep #include "fallback.h" // IWYU pragma: keep
#include "function.h" #include "function.h"
#include "intern.h"
#include "parser.h" #include "parser.h"
#include "parser_keywords.h" #include "parser_keywords.h"
#include "reader.h" #include "reader.h"

View File

@ -1,41 +0,0 @@
// Library for pooling common strings.
#include "config.h" // IWYU pragma: keep
#include "intern.h"
#include <stddef.h>
#include <algorithm>
#include <cwchar>
#include <memory>
#include <vector>
#include "common.h"
#include "fallback.h" // IWYU pragma: keep
static bool string_less_than_string(const wchar_t *a, const wchar_t *b) {
return std::wcscmp(a, b) < 0;
}
/// The table of intern'd strings.
owning_lock<std::vector<const wchar_t *>> string_table;
static const wchar_t *intern_with_dup(const wchar_t *in, bool dup) {
if (!in) return nullptr;
auto table = string_table.acquire();
const wchar_t *result;
auto iter = std::lower_bound(table->begin(), table->end(), in, string_less_than_string);
if (iter != table->end() && std::wcscmp(*iter, in) == 0) {
result = *iter;
} else {
result = dup ? wcsdup(in) : in;
table->insert(iter, result);
}
return result;
}
const wchar_t *intern(const wchar_t *in) { return intern_with_dup(in, true); }
const wchar_t *intern_static(const wchar_t *in) { return intern_with_dup(in, false); }

View File

@ -1,17 +0,0 @@
// Library for pooling common strings.
#ifndef FISH_INTERN_H
#define FISH_INTERN_H
/// Return an identical copy of the specified string from a pool of unique strings. If the string
/// was not in the pool, add a copy.
///
/// \param in the string to return an interned copy of.
const wchar_t *intern(const wchar_t *in);
/// Insert the specified string literal into the pool of unique strings. The string will not first
/// be copied, and it will not be free'd on exit.
///
/// \param in the string to add to the interned pool
const wchar_t *intern_static(const wchar_t *in);
#endif

View File

@ -19,7 +19,6 @@
#include "fallback.h" // IWYU pragma: keep #include "fallback.h" // IWYU pragma: keep
#include "flog.h" #include "flog.h"
#include "function.h" #include "function.h"
#include "intern.h"
#include "job_group.h" #include "job_group.h"
#include "parse_constants.h" #include "parse_constants.h"
#include "parse_execution.h" #include "parse_execution.h"

View File

@ -61,7 +61,6 @@
#include "history.h" #include "history.h"
#include "input.h" #include "input.h"
#include "input_common.h" #include "input_common.h"
#include "intern.h"
#include "io.h" #include "io.h"
#include "iothread.h" #include "iothread.h"
#include "kill.h" #include "kill.h"