From 5dcd0f1213acddf44b7d20751bcf6852ec1e50a9 Mon Sep 17 00:00:00 2001
From: Dunqing <29533304+Dunqing@users.noreply.github.com>
Date: Thu, 15 May 2025 22:33:43 +0000
Subject: [PATCH] perf(allocator/vec2): reorder `RawVec` fields (#11050)
According to `len` is more commonly used than `cap` and `a` is used less than any other field, reorder `RawVec` fields to get the best performance.
I've tried putting `cap` before `len`, the performance is not as good as the current order, see https://github.com/oxc-project/oxc/pull/11050#issuecomment-2883194443
---
crates/oxc_allocator/src/vec2/raw_vec.rs | 4 +-
napi/parser/generated/deserialize/js.js | 86 +++++++++----------
napi/parser/generated/deserialize/ts.js | 86 +++++++++----------
.../ast_tools/src/generators/raw_transfer.rs | 2 +-
4 files changed, 89 insertions(+), 89 deletions(-)
diff --git a/crates/oxc_allocator/src/vec2/raw_vec.rs b/crates/oxc_allocator/src/vec2/raw_vec.rs
index 173144805ed3e..4a86cd9918493 100644
--- a/crates/oxc_allocator/src/vec2/raw_vec.rs
+++ b/crates/oxc_allocator/src/vec2/raw_vec.rs
@@ -66,9 +66,9 @@ use bumpalo::collections::CollectionAllocErr::{self, AllocErr, CapacityOverflow}
#[repr(C)]
pub struct RawVec<'a, T> {
ptr: NonNull,
- a: &'a Bump,
- cap: u32,
pub(super) len: u32,
+ cap: u32,
+ a: &'a Bump,
}
impl<'a, T> RawVec<'a, T> {
diff --git a/napi/parser/generated/deserialize/js.js b/napi/parser/generated/deserialize/js.js
index 531343d7fceec..fcc8b9db7445f 100644
--- a/napi/parser/generated/deserialize/js.js
+++ b/napi/parser/generated/deserialize/js.js
@@ -4051,7 +4051,7 @@ function deserializeStr(pos) {
function deserializeVecComment(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeComment(pos));
@@ -4068,7 +4068,7 @@ function deserializeOptionHashbang(pos) {
function deserializeVecDirective(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeDirective(pos));
@@ -4080,7 +4080,7 @@ function deserializeVecDirective(pos) {
function deserializeVecStatement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeStatement(pos));
@@ -4267,7 +4267,7 @@ function deserializeOptionSymbolId(pos) {
function deserializeVecArrayExpressionElement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeArrayExpressionElement(pos));
@@ -4283,7 +4283,7 @@ function deserializeBoxSpreadElement(pos) {
function deserializeVecObjectPropertyKind(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeObjectPropertyKind(pos));
@@ -4311,7 +4311,7 @@ function deserializeBoxPrivateIdentifier(pos) {
function deserializeVecTemplateElement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTemplateElement(pos));
@@ -4323,7 +4323,7 @@ function deserializeVecTemplateElement(pos) {
function deserializeVecExpression(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeExpression(pos));
@@ -4361,7 +4361,7 @@ function deserializeBoxPrivateFieldExpression(pos) {
function deserializeVecArgument(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeArgument(pos));
@@ -4386,7 +4386,7 @@ function deserializeOptionAssignmentTargetMaybeDefault(pos) {
function deserializeVecOptionAssignmentTargetMaybeDefault(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeOptionAssignmentTargetMaybeDefault(pos));
@@ -4403,7 +4403,7 @@ function deserializeOptionAssignmentTargetRest(pos) {
function deserializeVecAssignmentTargetProperty(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeAssignmentTargetProperty(pos));
@@ -4528,7 +4528,7 @@ function deserializeBoxTSImportEqualsDeclaration(pos) {
function deserializeVecVariableDeclarator(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeVariableDeclarator(pos));
@@ -4555,7 +4555,7 @@ function deserializeOptionLabelIdentifier(pos) {
function deserializeVecSwitchCase(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeSwitchCase(pos));
@@ -4611,7 +4611,7 @@ function deserializeBoxAssignmentPattern(pos) {
function deserializeVecBindingProperty(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeBindingProperty(pos));
@@ -4637,7 +4637,7 @@ function deserializeOptionBindingPattern(pos) {
function deserializeVecOptionBindingPattern(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeOptionBindingPattern(pos));
@@ -4685,7 +4685,7 @@ function deserializeOptionBoxFunctionBody(pos) {
function deserializeVecFormalParameter(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeFormalParameter(pos));
@@ -4697,7 +4697,7 @@ function deserializeVecFormalParameter(pos) {
function deserializeVecDecorator(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeDecorator(pos));
@@ -4714,7 +4714,7 @@ function deserializeOptionTSAccessibility(pos) {
function deserializeVecTSClassImplements(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSClassImplements(pos));
@@ -4730,7 +4730,7 @@ function deserializeBoxClassBody(pos) {
function deserializeVecClassElement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeClassElement(pos));
@@ -4791,7 +4791,7 @@ function deserializeOptionImportPhase(pos) {
function deserializeVecImportDeclarationSpecifier(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeImportDeclarationSpecifier(pos));
@@ -4829,7 +4829,7 @@ function deserializeBoxImportNamespaceSpecifier(pos) {
function deserializeVecImportAttribute(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeImportAttribute(pos));
@@ -4846,7 +4846,7 @@ function deserializeOptionDeclaration(pos) {
function deserializeVecExportSpecifier(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeExportSpecifier(pos));
@@ -4889,7 +4889,7 @@ function deserializeBoxJSXOpeningElement(pos) {
function deserializeVecJSXChild(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeJSXChild(pos));
@@ -4910,7 +4910,7 @@ function deserializeOptionBoxJSXClosingElement(pos) {
function deserializeVecJSXAttributeItem(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeJSXAttributeItem(pos));
@@ -4959,7 +4959,7 @@ function deserializeBoxJSXSpreadChild(pos) {
function deserializeVecTSEnumMember(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSEnumMember(pos));
@@ -5119,7 +5119,7 @@ function deserializeBoxJSDocUnknownType(pos) {
function deserializeVecTSType(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSType(pos));
@@ -5131,7 +5131,7 @@ function deserializeVecTSType(pos) {
function deserializeVecTSTupleElement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSTupleElement(pos));
@@ -5160,7 +5160,7 @@ function deserializeOptionTSType(pos) {
function deserializeVecTSTypeParameter(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSTypeParameter(pos));
@@ -5172,7 +5172,7 @@ function deserializeVecTSTypeParameter(pos) {
function deserializeVecTSInterfaceHeritage(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSInterfaceHeritage(pos));
@@ -5188,7 +5188,7 @@ function deserializeBoxTSInterfaceBody(pos) {
function deserializeVecTSSignature(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSSignature(pos));
@@ -5216,7 +5216,7 @@ function deserializeBoxTSMethodSignature(pos) {
function deserializeVecTSIndexSignatureName(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSIndexSignatureName(pos));
@@ -5269,7 +5269,7 @@ function deserializeOptionNameSpan(pos) {
function deserializeVecAlternative(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeAlternative(pos));
@@ -5281,7 +5281,7 @@ function deserializeVecAlternative(pos) {
function deserializeVecTerm(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTerm(pos));
@@ -5347,7 +5347,7 @@ function deserializeOptionU64(pos) {
function deserializeVecCharacterClassContents(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeCharacterClassContents(pos));
@@ -5367,7 +5367,7 @@ function deserializeBoxClassStringDisjunction(pos) {
function deserializeVecClassString(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeClassString(pos));
@@ -5379,7 +5379,7 @@ function deserializeVecClassString(pos) {
function deserializeVecCharacter(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeCharacter(pos));
@@ -5401,7 +5401,7 @@ function deserializeOptionModifier(pos) {
function deserializeVecError(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeError(pos));
@@ -5413,7 +5413,7 @@ function deserializeVecError(pos) {
function deserializeVecErrorLabel(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeErrorLabel(pos));
@@ -5425,7 +5425,7 @@ function deserializeVecErrorLabel(pos) {
function deserializeVecStaticImport(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeStaticImport(pos));
@@ -5437,7 +5437,7 @@ function deserializeVecStaticImport(pos) {
function deserializeVecStaticExport(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeStaticExport(pos));
@@ -5449,7 +5449,7 @@ function deserializeVecStaticExport(pos) {
function deserializeVecDynamicImport(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeDynamicImport(pos));
@@ -5461,7 +5461,7 @@ function deserializeVecDynamicImport(pos) {
function deserializeVecSpan(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeSpan(pos));
@@ -5473,7 +5473,7 @@ function deserializeVecSpan(pos) {
function deserializeVecImportEntry(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeImportEntry(pos));
@@ -5485,7 +5485,7 @@ function deserializeVecImportEntry(pos) {
function deserializeVecExportEntry(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeExportEntry(pos));
diff --git a/napi/parser/generated/deserialize/ts.js b/napi/parser/generated/deserialize/ts.js
index bd3684ecda445..0e9bd8bea13a6 100644
--- a/napi/parser/generated/deserialize/ts.js
+++ b/napi/parser/generated/deserialize/ts.js
@@ -4203,7 +4203,7 @@ function deserializeStr(pos) {
function deserializeVecComment(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeComment(pos));
@@ -4220,7 +4220,7 @@ function deserializeOptionHashbang(pos) {
function deserializeVecDirective(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeDirective(pos));
@@ -4232,7 +4232,7 @@ function deserializeVecDirective(pos) {
function deserializeVecStatement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeStatement(pos));
@@ -4419,7 +4419,7 @@ function deserializeOptionSymbolId(pos) {
function deserializeVecArrayExpressionElement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeArrayExpressionElement(pos));
@@ -4435,7 +4435,7 @@ function deserializeBoxSpreadElement(pos) {
function deserializeVecObjectPropertyKind(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeObjectPropertyKind(pos));
@@ -4463,7 +4463,7 @@ function deserializeBoxPrivateIdentifier(pos) {
function deserializeVecTemplateElement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTemplateElement(pos));
@@ -4475,7 +4475,7 @@ function deserializeVecTemplateElement(pos) {
function deserializeVecExpression(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeExpression(pos));
@@ -4513,7 +4513,7 @@ function deserializeBoxPrivateFieldExpression(pos) {
function deserializeVecArgument(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeArgument(pos));
@@ -4538,7 +4538,7 @@ function deserializeOptionAssignmentTargetMaybeDefault(pos) {
function deserializeVecOptionAssignmentTargetMaybeDefault(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeOptionAssignmentTargetMaybeDefault(pos));
@@ -4555,7 +4555,7 @@ function deserializeOptionAssignmentTargetRest(pos) {
function deserializeVecAssignmentTargetProperty(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeAssignmentTargetProperty(pos));
@@ -4680,7 +4680,7 @@ function deserializeBoxTSImportEqualsDeclaration(pos) {
function deserializeVecVariableDeclarator(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeVariableDeclarator(pos));
@@ -4707,7 +4707,7 @@ function deserializeOptionLabelIdentifier(pos) {
function deserializeVecSwitchCase(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeSwitchCase(pos));
@@ -4763,7 +4763,7 @@ function deserializeBoxAssignmentPattern(pos) {
function deserializeVecBindingProperty(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeBindingProperty(pos));
@@ -4789,7 +4789,7 @@ function deserializeOptionBindingPattern(pos) {
function deserializeVecOptionBindingPattern(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeOptionBindingPattern(pos));
@@ -4837,7 +4837,7 @@ function deserializeOptionBoxFunctionBody(pos) {
function deserializeVecFormalParameter(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeFormalParameter(pos));
@@ -4849,7 +4849,7 @@ function deserializeVecFormalParameter(pos) {
function deserializeVecDecorator(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeDecorator(pos));
@@ -4866,7 +4866,7 @@ function deserializeOptionTSAccessibility(pos) {
function deserializeVecTSClassImplements(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSClassImplements(pos));
@@ -4882,7 +4882,7 @@ function deserializeBoxClassBody(pos) {
function deserializeVecClassElement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeClassElement(pos));
@@ -4943,7 +4943,7 @@ function deserializeOptionImportPhase(pos) {
function deserializeVecImportDeclarationSpecifier(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeImportDeclarationSpecifier(pos));
@@ -4981,7 +4981,7 @@ function deserializeBoxImportNamespaceSpecifier(pos) {
function deserializeVecImportAttribute(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeImportAttribute(pos));
@@ -4998,7 +4998,7 @@ function deserializeOptionDeclaration(pos) {
function deserializeVecExportSpecifier(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeExportSpecifier(pos));
@@ -5041,7 +5041,7 @@ function deserializeBoxJSXOpeningElement(pos) {
function deserializeVecJSXChild(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeJSXChild(pos));
@@ -5062,7 +5062,7 @@ function deserializeOptionBoxJSXClosingElement(pos) {
function deserializeVecJSXAttributeItem(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeJSXAttributeItem(pos));
@@ -5111,7 +5111,7 @@ function deserializeBoxJSXSpreadChild(pos) {
function deserializeVecTSEnumMember(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSEnumMember(pos));
@@ -5271,7 +5271,7 @@ function deserializeBoxJSDocUnknownType(pos) {
function deserializeVecTSType(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSType(pos));
@@ -5283,7 +5283,7 @@ function deserializeVecTSType(pos) {
function deserializeVecTSTupleElement(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSTupleElement(pos));
@@ -5312,7 +5312,7 @@ function deserializeOptionTSType(pos) {
function deserializeVecTSTypeParameter(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSTypeParameter(pos));
@@ -5324,7 +5324,7 @@ function deserializeVecTSTypeParameter(pos) {
function deserializeVecTSInterfaceHeritage(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSInterfaceHeritage(pos));
@@ -5340,7 +5340,7 @@ function deserializeBoxTSInterfaceBody(pos) {
function deserializeVecTSSignature(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSSignature(pos));
@@ -5368,7 +5368,7 @@ function deserializeBoxTSMethodSignature(pos) {
function deserializeVecTSIndexSignatureName(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTSIndexSignatureName(pos));
@@ -5421,7 +5421,7 @@ function deserializeOptionNameSpan(pos) {
function deserializeVecAlternative(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeAlternative(pos));
@@ -5433,7 +5433,7 @@ function deserializeVecAlternative(pos) {
function deserializeVecTerm(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeTerm(pos));
@@ -5499,7 +5499,7 @@ function deserializeOptionU64(pos) {
function deserializeVecCharacterClassContents(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeCharacterClassContents(pos));
@@ -5519,7 +5519,7 @@ function deserializeBoxClassStringDisjunction(pos) {
function deserializeVecClassString(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeClassString(pos));
@@ -5531,7 +5531,7 @@ function deserializeVecClassString(pos) {
function deserializeVecCharacter(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeCharacter(pos));
@@ -5553,7 +5553,7 @@ function deserializeOptionModifier(pos) {
function deserializeVecError(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeError(pos));
@@ -5565,7 +5565,7 @@ function deserializeVecError(pos) {
function deserializeVecErrorLabel(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeErrorLabel(pos));
@@ -5577,7 +5577,7 @@ function deserializeVecErrorLabel(pos) {
function deserializeVecStaticImport(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeStaticImport(pos));
@@ -5589,7 +5589,7 @@ function deserializeVecStaticImport(pos) {
function deserializeVecStaticExport(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeStaticExport(pos));
@@ -5601,7 +5601,7 @@ function deserializeVecStaticExport(pos) {
function deserializeVecDynamicImport(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeDynamicImport(pos));
@@ -5613,7 +5613,7 @@ function deserializeVecDynamicImport(pos) {
function deserializeVecSpan(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeSpan(pos));
@@ -5625,7 +5625,7 @@ function deserializeVecSpan(pos) {
function deserializeVecImportEntry(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeImportEntry(pos));
@@ -5637,7 +5637,7 @@ function deserializeVecImportEntry(pos) {
function deserializeVecExportEntry(pos) {
const arr = [],
pos32 = pos >> 2,
- len = uint32[pos32 + 5];
+ len = uint32[pos32 + 2];
pos = uint32[pos32];
for (let i = 0; i < len; i++) {
arr.push(deserializeExportEntry(pos));
diff --git a/tasks/ast_tools/src/generators/raw_transfer.rs b/tasks/ast_tools/src/generators/raw_transfer.rs
index 2947716430c52..23a45afda0510 100644
--- a/tasks/ast_tools/src/generators/raw_transfer.rs
+++ b/tasks/ast_tools/src/generators/raw_transfer.rs
@@ -27,7 +27,7 @@ use super::define_generator;
// Offsets of `Vec`'s fields.
// `Vec` is `#[repr(transparent)]` and `RawVec` is `#[repr(C)]`, so these offsets are fixed.
const VEC_PTR_FIELD_OFFSET: usize = 0;
-const VEC_LEN_FIELD_OFFSET: usize = 20;
+const VEC_LEN_FIELD_OFFSET: usize = 8;
/// Generator for raw transfer deserializer.
pub struct RawTransferGenerator;