Просмотр исходного кода

LibWasm: Don't create useless temporary strings for trap reasons

These strings are only used when execution traps, so there's no reason
to create actual strings until that happens; instead switch to using
StringViews.
Ali Mohammad Pur 4 лет назад
Родитель
Сommit
06ffc0c4db

+ 2 - 2
Userland/Libraries/LibWasm/AbstractMachine/BytecodeInterpreter.cpp

@@ -17,7 +17,7 @@ namespace Wasm {
 
 
 #define TRAP_IF_NOT(x)                                                                         \
 #define TRAP_IF_NOT(x)                                                                         \
     do {                                                                                       \
     do {                                                                                       \
-        if (trap_if_not(x, #x)) {                                                              \
+        if (trap_if_not(x, #x##sv)) {                                                          \
             dbgln_if(WASM_TRACE_DEBUG, "Trapped because {} failed, at line {}", #x, __LINE__); \
             dbgln_if(WASM_TRACE_DEBUG, "Trapped because {} failed, at line {}", #x, __LINE__); \
             return;                                                                            \
             return;                                                                            \
         }                                                                                      \
         }                                                                                      \
@@ -25,7 +25,7 @@ namespace Wasm {
 
 
 #define TRAP_IF_NOT_NORETURN(x)                                                                \
 #define TRAP_IF_NOT_NORETURN(x)                                                                \
     do {                                                                                       \
     do {                                                                                       \
-        if (trap_if_not(x, #x)) {                                                              \
+        if (trap_if_not(x, #x##sv)) {                                                          \
             dbgln_if(WASM_TRACE_DEBUG, "Trapped because {} failed, at line {}", #x, __LINE__); \
             dbgln_if(WASM_TRACE_DEBUG, "Trapped because {} failed, at line {}", #x, __LINE__); \
         }                                                                                      \
         }                                                                                      \
     } while (false)
     } while (false)

+ 2 - 2
Userland/Libraries/LibWasm/AbstractMachine/BytecodeInterpreter.h

@@ -49,10 +49,10 @@ protected:
     T read_value(ReadonlyBytes data);
     T read_value(ReadonlyBytes data);
 
 
     Vector<Value> pop_values(Configuration& configuration, size_t count);
     Vector<Value> pop_values(Configuration& configuration, size_t count);
-    bool trap_if_not(bool value, String reason)
+    bool trap_if_not(bool value, StringView reason)
     {
     {
         if (!value)
         if (!value)
-            m_trap = Trap { move(reason) };
+            m_trap = Trap { reason };
         return m_trap.has_value();
         return m_trap.has_value();
     }
     }