Pārlūkot izejas kodu

LibJS: Move Bytecode::Instruction::execute() to the Op.h header

..and make sure it always gets inlined in the interpreter loop.
Andreas Kling 4 gadi atpakaļ
vecāks
revīzija
48a8022cf6

+ 1 - 0
Userland/Libraries/LibJS/Bytecode/Interpreter.cpp

@@ -8,6 +8,7 @@
 #include <LibJS/Bytecode/BasicBlock.h>
 #include <LibJS/Bytecode/BasicBlock.h>
 #include <LibJS/Bytecode/Instruction.h>
 #include <LibJS/Bytecode/Instruction.h>
 #include <LibJS/Bytecode/Interpreter.h>
 #include <LibJS/Bytecode/Interpreter.h>
+#include <LibJS/Bytecode/Op.h>
 #include <LibJS/Runtime/GlobalObject.h>
 #include <LibJS/Runtime/GlobalObject.h>
 
 
 namespace JS::Bytecode {
 namespace JS::Bytecode {

+ 0 - 15
Userland/Libraries/LibJS/Bytecode/Op.cpp

@@ -16,21 +16,6 @@
 
 
 namespace JS::Bytecode {
 namespace JS::Bytecode {
 
 
-void Instruction::execute(Bytecode::Interpreter& interpreter) const
-{
-#define __BYTECODE_OP(op)       \
-    case Instruction::Type::op: \
-        return static_cast<Bytecode::Op::op const&>(*this).execute(interpreter);
-
-    switch (type()) {
-        ENUMERATE_BYTECODE_OPS(__BYTECODE_OP)
-    default:
-        VERIFY_NOT_REACHED();
-    }
-
-#undef __BYTECODE_OP
-}
-
 String Instruction::to_string() const
 String Instruction::to_string() const
 {
 {
 #define __BYTECODE_OP(op)       \
 #define __BYTECODE_OP(op)       \

+ 19 - 0
Userland/Libraries/LibJS/Bytecode/Op.h

@@ -374,3 +374,22 @@ public:
 };
 };
 
 
 }
 }
+
+namespace JS::Bytecode {
+
+ALWAYS_INLINE void Instruction::execute(Bytecode::Interpreter& interpreter) const
+{
+#define __BYTECODE_OP(op)       \
+    case Instruction::Type::op: \
+        return static_cast<Bytecode::Op::op const&>(*this).execute(interpreter);
+
+    switch (type()) {
+        ENUMERATE_BYTECODE_OPS(__BYTECODE_OP)
+    default:
+        VERIFY_NOT_REACHED();
+    }
+
+#undef __BYTECODE_OP
+}
+
+}