diff options
-rw-r--r-- | Userland/Libraries/LibJS/AST.cpp | 4 | ||||
-rw-r--r-- | Userland/Libraries/LibJS/AST.h | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/Userland/Libraries/LibJS/AST.cpp b/Userland/Libraries/LibJS/AST.cpp index caf127db71..23d7de8836 100644 --- a/Userland/Libraries/LibJS/AST.cpp +++ b/Userland/Libraries/LibJS/AST.cpp @@ -62,8 +62,8 @@ private: }; ASTNode::ASTNode(SourceRange source_range) - : m_source_code(source_range.code) - , m_start_offset(source_range.start.offset) + : m_start_offset(source_range.start.offset) + , m_source_code(source_range.code) , m_end_offset(source_range.end.offset) { } diff --git a/Userland/Libraries/LibJS/AST.h b/Userland/Libraries/LibJS/AST.h index a583f917bd..d757eba77a 100644 --- a/Userland/Libraries/LibJS/AST.h +++ b/Userland/Libraries/LibJS/AST.h @@ -90,8 +90,10 @@ protected: explicit ASTNode(SourceRange); private: - RefPtr<SourceCode> m_source_code; + // NOTE: These members are carefully ordered so that `m_start_offset` is packed with the padding after RefCounted::m_ref_count. + // This creates a 4-byte padding hole after `m_end_offset` which is used to pack subclasses better. u32 m_start_offset { 0 }; + RefPtr<SourceCode> m_source_code; u32 m_end_offset { 0 }; }; |