mirror of
https://github.com/zebrajr/ladybird.git
synced 2025-12-06 12:20:00 +01:00
LibJS: Shrink JS::Bytecode::Operand from 8 bytes to 4 bytes
This packs the bytecode much better and gives us a decent performance boost on throughput-focused benchmarks. Measured on my M3 MacBook Pro: - 4.7% speedup on Kraken - 2.3% speedup on Octane - 2.7% speedup on JetStream1
This commit is contained in:
parent
70411a117b
commit
3c2a2bb39f
|
|
@ -13,7 +13,7 @@ namespace JS::Bytecode {
|
|||
|
||||
class Operand {
|
||||
public:
|
||||
enum class Type {
|
||||
enum class Type : u8 {
|
||||
Invalid,
|
||||
Register,
|
||||
Local,
|
||||
|
|
@ -26,6 +26,7 @@ public:
|
|||
: m_type(type)
|
||||
, m_index(index)
|
||||
{
|
||||
VERIFY((index & 0x3fffffff) == index);
|
||||
}
|
||||
|
||||
explicit Operand(Register);
|
||||
|
|
@ -42,10 +43,12 @@ public:
|
|||
void offset_index_by(u32 offset) { m_index += offset; }
|
||||
|
||||
private:
|
||||
Type m_type {};
|
||||
u32 m_index { 0 };
|
||||
Type m_type : 2 {};
|
||||
u32 m_index : 30 { 0 };
|
||||
};
|
||||
|
||||
static_assert(sizeof(Operand) == 4);
|
||||
|
||||
}
|
||||
|
||||
namespace AK {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user