mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
Bug 1575055 - Avoid duplicating CompileOptions constructor code. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D42562 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
094cb37502
commit
64ba0d5e30
@ -214,8 +214,9 @@ class JS_PUBLIC_API ReadOnlyCompileOptions : public TransitiveCompileOptions {
|
||||
ReadOnlyCompileOptions() = default;
|
||||
|
||||
// Set all POD options (those not requiring reference counts, copies,
|
||||
// rooting, or other hand-holding) to their values in |rhs|.
|
||||
void copyPODOptions(const ReadOnlyCompileOptions& rhs);
|
||||
// rooting, or other hand-holding) not set by copyPODTransitiveOptions to
|
||||
// their values in |rhs|.
|
||||
void copyPODNonTransitiveOptions(const ReadOnlyCompileOptions& rhs);
|
||||
|
||||
public:
|
||||
// Read-only accessors for non-POD options. The proper way to set these
|
||||
@ -288,25 +289,10 @@ class MOZ_STACK_CLASS JS_PUBLIC_API CompileOptions final
|
||||
Rooted<JSScript*> scriptOrModuleRoot;
|
||||
|
||||
public:
|
||||
// Default options determined using the JSContext.
|
||||
explicit CompileOptions(JSContext* cx);
|
||||
|
||||
CompileOptions(JSContext* cx, const ReadOnlyCompileOptions& rhs)
|
||||
: ReadOnlyCompileOptions(),
|
||||
elementRoot(cx),
|
||||
elementAttributeNameRoot(cx),
|
||||
introductionScriptRoot(cx),
|
||||
scriptOrModuleRoot(cx) {
|
||||
copyPODOptions(rhs);
|
||||
|
||||
filename_ = rhs.filename();
|
||||
introducerFilename_ = rhs.introducerFilename();
|
||||
sourceMapURL_ = rhs.sourceMapURL();
|
||||
elementRoot = rhs.element();
|
||||
elementAttributeNameRoot = rhs.elementAttributeName();
|
||||
introductionScriptRoot = rhs.introductionScript();
|
||||
scriptOrModuleRoot = rhs.scriptOrModule();
|
||||
}
|
||||
|
||||
// Copy the transitive options from another options object.
|
||||
CompileOptions(JSContext* cx, const TransitiveCompileOptions& rhs)
|
||||
: ReadOnlyCompileOptions(),
|
||||
elementRoot(cx),
|
||||
@ -324,6 +310,13 @@ class MOZ_STACK_CLASS JS_PUBLIC_API CompileOptions final
|
||||
scriptOrModuleRoot = rhs.scriptOrModule();
|
||||
}
|
||||
|
||||
// Copy both the transitive and the non-transitive options from another
|
||||
// options object.
|
||||
CompileOptions(JSContext* cx, const ReadOnlyCompileOptions& rhs)
|
||||
: CompileOptions(cx, static_cast<const TransitiveCompileOptions&>(rhs)) {
|
||||
copyPODNonTransitiveOptions(rhs);
|
||||
}
|
||||
|
||||
JSObject* element() const override { return elementRoot; }
|
||||
|
||||
JSString* elementAttributeName() const override {
|
||||
|
@ -3541,9 +3541,8 @@ void JS::TransitiveCompileOptions::copyPODTransitiveOptions(
|
||||
fieldsEnabledOption = rhs.fieldsEnabledOption;
|
||||
}
|
||||
|
||||
void JS::ReadOnlyCompileOptions::copyPODOptions(
|
||||
void JS::ReadOnlyCompileOptions::copyPODNonTransitiveOptions(
|
||||
const ReadOnlyCompileOptions& rhs) {
|
||||
copyPODTransitiveOptions(rhs);
|
||||
lineno = rhs.lineno;
|
||||
column = rhs.column;
|
||||
scriptSourceOffset = rhs.scriptSourceOffset;
|
||||
@ -3583,7 +3582,8 @@ bool JS::OwningCompileOptions::copy(JSContext* cx,
|
||||
// Release existing string allocations.
|
||||
release();
|
||||
|
||||
copyPODOptions(rhs);
|
||||
copyPODTransitiveOptions(rhs);
|
||||
copyPODNonTransitiveOptions(rhs);
|
||||
|
||||
elementRoot = rhs.element();
|
||||
elementAttributeNameRoot = rhs.elementAttributeName();
|
||||
|
Loading…
Reference in New Issue
Block a user