903519 part 2: Reparent JSString from TenuredCell to Cell.
903519 Part 3: Make js::Allocate cast strings to requested type.
903519 Part 4: Force non-atom strings to have their low flag bit set in order to distinguish them from JSObjects in the nursery.
903519 Part 5: Strings in the nursery: allocation.
Mixed reset later.
903519 Part 6: Strings in the nursery: tracing and tenuring.
903519 Part 7: Strings in the nursery: barriers.
903519 Part 8: Discard nursery keys from EvalCache.
903519 Part 9: Strings in the nursery: allow any thread to access zone of permanent atoms.
903519 Part 10: Strings in the nursery: MIR node.
903519 Part 11: Change Relocated marker to not confuse string vs object bit.
903519 Part 12: Default nursery strings to off, add ability to enable.
903519 Part 13: Strings in the nursery: JIT, partial due CodeGenerator.cpp differences startin from: // Follow any base pointer if the input is itself a dependent string.
This is due file changed: 1434230: Spectre mitigations for strings
1322724: IonMonkey - Add the hit count information on the extra false branch blocks
1322932: IonMonkey - Only iterate the backedge of the inner-loop when it has already be visited
1329901 - Remove expensive isObservableOperand() loop guards.
1330667: IonMonkey - Create a new constant for every optimized arguments use.
1342016 - Fast-path for isObservableSlot().
1388045 - Branch Pruning: Check the compile info associated with the resume point.
Bug 1335146: IonMonkey - Don't do flow-aa on blocks without entry predecessor.
1329665 - Use fallible allocator in FlowAliasAnalysis::saveStoreDependency.
1329651: IonMonkey - Ensure ballast in EliminateDeadResumePointOperands.
Sec-fix: 1355050 - Root the RegExpShared in RegExpMacroAssembler
1375436: Assertion failure: throwing, at js/src/jscntxt.cpp:1466 with Debugger and async
Fix typo while at it in CodeGenerator.cpp
- RegExpParser collects seen groups in named_captures_.
- After irregexp::ParsePattern has finished, RegExpParser::StoreNamedCaptureMap translates
the parser data to RegExpCompileData.capture_name/index
- RegExpShared::initializeNamedCaptures takes these and builds a PlainObject map which
is kept with the compiled expression
This is done because irregexp doesn't have access to the JS context and so can't allocate
any JSValues itself.
- for each match result, this map is used to build PlainObjects of name->match/undefined
(extremely simplified from upstream at the expense of some perf)
IonMonkey switches to non-masm code path for expressions with named groups.
This should be the last code backout for this. merging this branch
should get us back to the way we were (+ additional code changes for
later changes) as fasr as the unused unboxed code is concerned.