summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Libraries/LibJS/AST.cpp4
-rw-r--r--Userland/Libraries/LibJS/AST.h4
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 };
};