mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 17:31:47 +09:00
Issue #2083 - Part 4: Give RegExpShared a finalizer.
Based on Mozilla bug 1345177.
This commit is contained in:
parent
2ac60a27c7
commit
9824659d3c
3 changed files with 12 additions and 11 deletions
|
|
@ -340,9 +340,6 @@ class TenuredCell : public Cell
|
||||||
static MOZ_ALWAYS_INLINE void writeBarrierPost(void* cellp, TenuredCell* prior,
|
static MOZ_ALWAYS_INLINE void writeBarrierPost(void* cellp, TenuredCell* prior,
|
||||||
TenuredCell* next);
|
TenuredCell* next);
|
||||||
|
|
||||||
// Default implementation for kinds that don't require finalization.
|
|
||||||
void finalize(FreeOp* fop) {}
|
|
||||||
|
|
||||||
// Default implementation for kinds that don't require fixup.
|
// Default implementation for kinds that don't require fixup.
|
||||||
void fixupAfterMovingGC() {}
|
void fixupAfterMovingGC() {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -952,12 +952,6 @@ RegExpShared::RegExpShared(JSAtom* source, RegExpFlag flags)
|
||||||
numNamedCaptures_(0), groupsTemplate_(nullptr)
|
numNamedCaptures_(0), groupsTemplate_(nullptr)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
RegExpShared::~RegExpShared()
|
|
||||||
{
|
|
||||||
for (size_t i = 0; i < tables.length(); i++)
|
|
||||||
js_delete(tables[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
RegExpShared::traceChildren(JSTracer* trc)
|
RegExpShared::traceChildren(JSTracer* trc)
|
||||||
{
|
{
|
||||||
|
|
@ -978,6 +972,14 @@ RegExpShared::discardJitCode()
|
||||||
comp.jitCode = nullptr;
|
comp.jitCode = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
RegExpShared::finalize(FreeOp* fop)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < tables.length(); i++)
|
||||||
|
js_free(tables[i]);
|
||||||
|
tables.~JitCodeTables();
|
||||||
|
}
|
||||||
|
|
||||||
/* static */ bool
|
/* static */ bool
|
||||||
RegExpShared::compile(JSContext* cx, MutableHandleRegExpShared re, HandleLinearString input,
|
RegExpShared::compile(JSContext* cx, MutableHandleRegExpShared re, HandleLinearString input,
|
||||||
CompilationMode mode, ForceByteCodeEnum force)
|
CompilationMode mode, ForceByteCodeEnum force)
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,8 @@ class RegExpShared : public gc::TenuredCell
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tables referenced by JIT code.
|
// Tables referenced by JIT code.
|
||||||
Vector<uint8_t*, 0, SystemAllocPolicy> tables;
|
using JitCodeTables = Vector<uint8_t*, 0, SystemAllocPolicy>;
|
||||||
|
JitCodeTables tables;
|
||||||
|
|
||||||
/* Internal functions. */
|
/* Internal functions. */
|
||||||
RegExpShared(JSAtom* source, RegExpFlag flags);
|
RegExpShared(JSAtom* source, RegExpFlag flags);
|
||||||
|
|
@ -172,7 +173,7 @@ class RegExpShared : public gc::TenuredCell
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~RegExpShared();
|
~RegExpShared() = delete;
|
||||||
|
|
||||||
// Execute this RegExp on input starting from searchIndex, filling in
|
// Execute this RegExp on input starting from searchIndex, filling in
|
||||||
// matches if specified and otherwise only determining if there is a match.
|
// matches if specified and otherwise only determining if there is a match.
|
||||||
|
|
@ -222,6 +223,7 @@ class RegExpShared : public gc::TenuredCell
|
||||||
|
|
||||||
void traceChildren(JSTracer* trc);
|
void traceChildren(JSTracer* trc);
|
||||||
void discardJitCode();
|
void discardJitCode();
|
||||||
|
void finalize(FreeOp* fop);
|
||||||
|
|
||||||
static size_t offsetOfSource() {
|
static size_t offsetOfSource() {
|
||||||
return offsetof(RegExpShared, source);
|
return offsetof(RegExpShared, source);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue