mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 00:05:36 +00:00
Bug 1693433
- Part 4: Make StencilModuleMetadata ref-counted. r=tcampbell
To borrow ExtensibleCompilationStencil.moduleMetadata from CompilationStencil.moduleMetadata. Differential Revision: https://phabricator.services.mozilla.com/D105891
This commit is contained in:
parent
cb0853be4b
commit
21f7c222fc
@ -544,7 +544,7 @@ struct CompilationStencil : public BaseCompilationStencil {
|
||||
RefPtr<ScriptSource> source;
|
||||
|
||||
// Module metadata if this is a module compile.
|
||||
UniquePtr<StencilModuleMetadata> moduleMetadata;
|
||||
RefPtr<StencilModuleMetadata> moduleMetadata;
|
||||
|
||||
// Immutable data computed during initial compilation and never updated during
|
||||
// delazification.
|
||||
@ -655,7 +655,7 @@ struct ExtensibleCompilationStencil {
|
||||
Vector<BigIntStencil, 0, js::SystemAllocPolicy> bigIntData;
|
||||
Vector<ObjLiteralStencil, 0, js::SystemAllocPolicy> objLiteralData;
|
||||
|
||||
UniquePtr<StencilModuleMetadata> moduleMetadata;
|
||||
RefPtr<StencilModuleMetadata> moduleMetadata;
|
||||
|
||||
StencilAsmJSContainer asmJS;
|
||||
|
||||
|
@ -1693,9 +1693,9 @@ ModuleNode* Parser<FullParseHandler, Unit>::moduleBody(
|
||||
ModuleSharedContext* modulesc) {
|
||||
MOZ_ASSERT(checkOptionsCalled_);
|
||||
|
||||
this->compilationState_.moduleMetadata = MakeUnique<StencilModuleMetadata>();
|
||||
this->compilationState_.moduleMetadata =
|
||||
cx_->template new_<StencilModuleMetadata>();
|
||||
if (!this->compilationState_.moduleMetadata) {
|
||||
js::ReportOutOfMemory(cx_);
|
||||
return null();
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "frontend/ScriptIndex.h" // ScriptIndex
|
||||
#include "frontend/TypedIndex.h" // TypedIndex
|
||||
#include "js/AllocPolicy.h" // SystemAllocPolicy
|
||||
#include "js/RefCounted.h" // AtomicRefCounted
|
||||
#include "js/RegExpFlags.h" // JS::RegExpFlags
|
||||
#include "js/RootingAPI.h" // Handle
|
||||
#include "js/TypeDecls.h" // JSContext
|
||||
@ -580,7 +581,8 @@ class StencilModuleEntry {
|
||||
};
|
||||
|
||||
// Metadata generated by parsing module scripts, including import/export tables.
|
||||
class StencilModuleMetadata {
|
||||
class StencilModuleMetadata
|
||||
: public js::AtomicRefCounted<StencilModuleMetadata> {
|
||||
public:
|
||||
using EntryVector = Vector<StencilModuleEntry, 0, js::SystemAllocPolicy>;
|
||||
|
||||
|
@ -643,9 +643,9 @@ XDRResult XDRCompilationStencil(XDRState<mode>* xdr,
|
||||
|
||||
if (stencil.scriptExtra[CompilationStencil::TopLevelIndex].isModule()) {
|
||||
if (mode == XDR_DECODE) {
|
||||
stencil.moduleMetadata = MakeUnique<StencilModuleMetadata>();
|
||||
stencil.moduleMetadata =
|
||||
xdr->cx()->template new_<StencilModuleMetadata>();
|
||||
if (!stencil.moduleMetadata) {
|
||||
js::ReportOutOfMemory(xdr->cx());
|
||||
return xdr->fail(JS::TranscodeResult::Throw);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user