diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp index fb661231921b..cfff9c9869c3 100644 --- a/js/src/shell/js.cpp +++ b/js/src/shell/js.cpp @@ -9122,7 +9122,7 @@ main(int argc, char** argv, char** envp) || !op.addBoolOption('\0', "non-writable-jitcode", "(NOP for fuzzers) Allocate JIT code as non-writable memory.") || !op.addBoolOption('\0', "no-sse3", "Pretend CPU does not support SSE3 instructions and above " "to test JIT codegen (no-op on platforms other than x86 and x64).") - || !op.addBoolOption('\0', "no-sse4", "Pretend CPU does not support SSE4 instructions" + || !op.addBoolOption('\0', "no-sse4", "Pretend CPU does not support SSE4 instructions " "to test JIT codegen (no-op on platforms other than x86 and x64).") || !op.addBoolOption('\0', "enable-avx", "AVX is disabled by default. Enable AVX. " "(no-op on platforms other than x86 and x64).") @@ -9139,6 +9139,7 @@ main(int argc, char** argv, char** envp) || !op.addBoolOption('\0', "no-ggc", "Disable Generational GC") || !op.addBoolOption('\0', "no-cgc", "Disable Compacting GC") || !op.addBoolOption('\0', "no-incremental-gc", "Disable Incremental GC") + || !op.addBoolOption('\0', "nursery-strings", "Allocate strings in the nursery") || !op.addIntOption('\0', "available-memory", "SIZE", "Select GC settings based on available memory (MB)", 0) || !op.addStringOption('\0', "arm-hwcap", "[features]", @@ -9286,6 +9287,9 @@ main(int argc, char** argv, char** envp) js::UseInternalJobQueues(cx); + if (op.getBoolOption("nursery-strings")) + cx->runtime()->gc.nursery().enableStrings(); + if (!JS::InitSelfHostedCode(cx)) return 1; diff --git a/js/src/vm/String-inl.h b/js/src/vm/String-inl.h index 0f21fd5c225a..8aa9e008940a 100644 --- a/js/src/vm/String-inl.h +++ b/js/src/vm/String-inl.h @@ -122,7 +122,7 @@ JSRope::new_(JSContext* cx, { if (!validateLength(cx, length)) return nullptr; - JSRope* str = js::Allocate(cx, js::gc::TenuredHeap); + JSRope* str = js::Allocate(cx, js::gc::DefaultHeap); if (!str) return nullptr; str->init(cx, left, right, length); @@ -182,7 +182,7 @@ JSDependentString::new_(JSContext* cx, JSLinearString* baseArg, size_t start, if (baseArg->isExternal() && !baseArg->ensureFlat(cx)) return nullptr; - JSDependentString* str = js::Allocate(cx, js::gc::TenuredHeap); + JSDependentString* str = js::Allocate(cx, js::gc::DefaultHeap); if (str) { str->init(cx, baseArg, start, length); return str; @@ -190,7 +190,7 @@ JSDependentString::new_(JSContext* cx, JSLinearString* baseArg, size_t start, js::RootedLinearString base(cx, baseArg); - str = js::Allocate(cx, js::gc::TenuredHeap); + str = js::Allocate(cx, js::gc::DefaultHeap); if (!str) return nullptr; str->init(cx, base, start, length); @@ -226,7 +226,7 @@ JSFlatString::new_(JSContext* cx, const CharT* chars, size_t length) if (cx->compartment()->isAtomsCompartment()) str = js::Allocate(cx); else - str = js::Allocate(cx, js::gc::TenuredHeap); + str = js::Allocate(cx, js::gc::DefaultHeap); if (!str) return nullptr; @@ -270,7 +270,7 @@ JSThinInlineString::new_(JSContext* cx) if (cx->compartment()->isAtomsCompartment()) return (JSThinInlineString*)(js::Allocate(cx)); - return js::Allocate(cx, js::gc::TenuredHeap); + return js::Allocate(cx, js::gc::DefaultHeap); } template @@ -280,7 +280,7 @@ JSFatInlineString::new_(JSContext* cx) if (cx->compartment()->isAtomsCompartment()) return (JSFatInlineString*)(js::Allocate(cx)); - return js::Allocate(cx, js::gc::TenuredHeap); + return js::Allocate(cx, js::gc::DefaultHeap); } template<>