mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-24 08:07:30 +09:00
Convert the trailing array of BindingNames at the end of the various kinds of scope data into raw unsigned chars into which those BindingNames are placement-new'd, rather than memcpy-ing non-trivial classes around and failing to comply with the C++ object model
This commit is contained in:
parent
36607675b2
commit
4cbf54089a
6 changed files with 108 additions and 64 deletions
|
|
@ -273,7 +273,7 @@ Scope::XDRSizedBindingNames(XDRState<mode>* xdr, Handle<ConcreteScope*> scope,
|
|||
}
|
||||
|
||||
for (uint32_t i = 0; i < length; i++) {
|
||||
if (!XDRBindingName(xdr, &data->names[i])) {
|
||||
if (!XDRBindingName(xdr, &data->trailingNames[i])) {
|
||||
if (mode == XDR_DECODE) {
|
||||
DeleteScopeData(data.get());
|
||||
data.set(nullptr);
|
||||
|
|
@ -1250,7 +1250,7 @@ BindingIter::init(LexicalScope::Data& data, uint32_t firstFrameSlot, uint8_t fla
|
|||
init(0, 0, 0, 0, 0, 0,
|
||||
CanHaveEnvironmentSlots | flags,
|
||||
firstFrameSlot, JSSLOT_FREE(&LexicalEnvironmentObject::class_),
|
||||
data.names, data.length);
|
||||
data.trailingNames.start(), data.length);
|
||||
} else {
|
||||
// imports - [0, 0)
|
||||
// positional formals - [0, 0)
|
||||
|
|
@ -1262,7 +1262,7 @@ BindingIter::init(LexicalScope::Data& data, uint32_t firstFrameSlot, uint8_t fla
|
|||
init(0, 0, 0, 0, 0, data.constStart,
|
||||
CanHaveFrameSlots | CanHaveEnvironmentSlots | flags,
|
||||
firstFrameSlot, JSSLOT_FREE(&LexicalEnvironmentObject::class_),
|
||||
data.names, data.length);
|
||||
data.trailingNames.start(), data.length);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1283,7 +1283,7 @@ BindingIter::init(FunctionScope::Data& data, uint8_t flags)
|
|||
init(0, data.nonPositionalFormalStart, data.varStart, data.varStart, data.length, data.length,
|
||||
flags,
|
||||
0, JSSLOT_FREE(&CallObject::class_),
|
||||
data.names, data.length);
|
||||
data.trailingNames.start(), data.length);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1299,7 +1299,7 @@ BindingIter::init(VarScope::Data& data, uint32_t firstFrameSlot)
|
|||
init(0, 0, 0, 0, data.length, data.length,
|
||||
CanHaveFrameSlots | CanHaveEnvironmentSlots,
|
||||
firstFrameSlot, JSSLOT_FREE(&VarEnvironmentObject::class_),
|
||||
data.names, data.length);
|
||||
data.trailingNames.start(), data.length);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1343,7 +1343,7 @@ BindingIter::init(EvalScope::Data& data, bool strict)
|
|||
// consts - [data.length, data.length)
|
||||
init(0, 0, 0, data.varStart, data.length, data.length,
|
||||
flags, firstFrameSlot, firstEnvironmentSlot,
|
||||
data.names, data.length);
|
||||
data.trailingNames.start(), data.length);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1359,7 +1359,7 @@ BindingIter::init(ModuleScope::Data& data)
|
|||
init(data.varStart, data.varStart, data.varStart, data.varStart, data.letStart, data.constStart,
|
||||
CanHaveFrameSlots | CanHaveEnvironmentSlots,
|
||||
0, JSSLOT_FREE(&ModuleEnvironmentObject::class_),
|
||||
data.names, data.length);
|
||||
data.trailingNames.start(), data.length);
|
||||
}
|
||||
|
||||
PositionalFormalParameterIter::PositionalFormalParameterIter(JSScript* script)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue