Skip to content

Commit 7ca4b51

Browse files
committed
feat: Added a toggle enableDisplayCustomTypeInfo aimed at further enhancing performance.
1 parent 93193a5 commit 7ca4b51

File tree

7 files changed

+35
-2
lines changed

7 files changed

+35
-2
lines changed

emmy_core/src/emmy_core.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ static const luaL_Reg lib[] = {
3131
{"breakHere", breakHere},
3232
{"stop", stop},
3333
{"tcpSharedListen", tcpSharedListen},
34+
{"enableDisplayCustomTypeInfo", enableDisplayCustomTypeInfo},
3435
{"registerTypeName", registerTypeName},
3536
{nullptr, nullptr}
3637
};

emmy_debugger/include/emmy_debugger/debugger/emmy_debugger.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class Debugger: public std::enable_shared_from_this<Debugger>
9595

9696
void ClearVariableArenaRef();
9797

98+
void enableDisplayCustomTypeInfo();
9899
bool RegisterTypeName(const std::string& typeName, std::string& err);
99100

100101
private:
@@ -143,5 +144,6 @@ class Debugger: public std::enable_shared_from_this<Debugger>
143144

144145
Arena<Variable> *arenaRef;
145146

147+
bool displayCustomTypeInfo;
146148
std::bitset<LUA_NUMTAGS> registeredTypes;
147149
};

emmy_debugger/include/emmy_debugger/debugger/emmy_debugger_lib.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ int tcpSharedListen(lua_State* L);
2828
// emmy.stop()
2929
int stop(lua_State* L);
3030

31+
// emmy.enableDisplayCustomTypeInfo(): bool
32+
int enableDisplayCustomTypeInfo(lua_State* L);
33+
3134
// emmy.registerTypeName(typeName: string): bool
3235
int registerTypeName(lua_State* L);
3336

emmy_debugger/include/emmy_debugger/emmy_facade.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class EmmyFacade
5858
bool PipeListen(lua_State* L, const std::string& name, std::string& err);
5959
bool PipeConnect(lua_State* L, const std::string& name, std::string& err);
6060
int BreakHere(lua_State* L);
61+
bool enableDisplayCustomTypeInfo(lua_State *L, std::string &err);
6162
bool RegisterTypeName(lua_State *L, const std::string &typeName, std::string &err);
6263

6364
int OnConnect(bool suc);

emmy_debugger/src/debugger/emmy_debugger.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ Debugger::Debugger(lua_State *L, EmmyDebuggerManager *manager)
4141
running(false),
4242
skipHook(false),
4343
blocking(false),
44-
arenaRef(nullptr) {
44+
arenaRef(nullptr),
45+
displayCustomTypeInfo(false) {
4546
}
4647

4748
Debugger::~Debugger() {
@@ -371,7 +372,7 @@ void Debugger::GetVariable(lua_State *L, Idx<Variable> variable, int index, int
371372
variable->valueType = type;
372373

373374
if (queryHelper) {
374-
if (type >= 0 && type < registeredTypes.size() && registeredTypes.test(type)
375+
if (displayCustomTypeInfo && type >= 0 && type < registeredTypes.size() && registeredTypes.test(type)
375376
&& manager->extension.QueryVariableCustom(L, variable, typeName, index, depth)) {
376377
return;
377378
}
@@ -1442,6 +1443,10 @@ int Debugger::GetTypeFromName(const char* typeName) {
14421443
return -1; // 未知类型
14431444
}
14441445

1446+
void Debugger::enableDisplayCustomTypeInfo() {
1447+
displayCustomTypeInfo = true;
1448+
}
1449+
14451450
bool Debugger::RegisterTypeName(const std::string& typeName, std::string& err) {
14461451
int type = GetTypeFromName(typeName.c_str());
14471452
if (type == -1) {

emmy_debugger/src/debugger/emmy_debugger_lib.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,17 @@ int stop(lua_State* L)
117117
return 0;
118118
}
119119

120+
// emmy.enableDisplayCustomTypeInfo(): bool
121+
int enableDisplayCustomTypeInfo(lua_State* L)
122+
{
123+
std::string err;
124+
const auto suc = EmmyFacade::Get().enableDisplayCustomTypeInfo(L, err);
125+
lua_pushboolean(L, suc);
126+
if (suc) return 1;
127+
lua_pushstring(L, err.c_str());
128+
return 2;
129+
}
130+
120131
// emmy.registerTypeName(typeName: string): bool
121132
int registerTypeName(lua_State* L)
122133
{

emmy_debugger/src/emmy_facade.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,16 @@ void EmmyFacade::Attach(lua_State *L) {
397397
lua_sethook(L, EmmyFacade::HookLua, LUA_MASKCALL | LUA_MASKLINE | LUA_MASKRET, 0);
398398
}
399399

400+
bool EmmyFacade::enableDisplayCustomTypeInfo(lua_State *L, std::string &err) {
401+
auto debugger = GetDebugger(L);
402+
if (!debugger) {
403+
err = "Debugger does not exist";
404+
return false;
405+
}
406+
debugger->enableDisplayCustomTypeInfo();
407+
return true;
408+
}
409+
400410
bool EmmyFacade::RegisterTypeName(lua_State *L, const std::string &typeName, std::string &err) {
401411
auto debugger = GetDebugger(L);
402412
if (!debugger) {

0 commit comments

Comments
 (0)