Implement jit support for Records and Tuples
Categories
(Core :: JavaScript Engine, enhancement, P3)
Tracking
()
People
(Reporter: nicolo.ribaudo, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(109 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
The --enable-record-tuple
build flag currently disables JIT. We should implement jit support for the new Record
, Tuple
and Box
primitives.
Updated•2 years ago
|
Updated•2 years ago
|
Comment 1•2 years ago
|
||
Depends on D134842
Comment 2•2 years ago
|
||
Depends on D135771
Comment 3•2 years ago
|
||
This will be used by JIT for records (since record keys need to be sorted).
Depends on D135772
Comment 4•2 years ago
|
||
This will be useful when implementing JIT for records.
Depends on D135773
Comment 5•2 years ago
|
||
Add wrappers for NativeAddProperty, GrowElements, ArrayNativeSort, Int32ToAtom
Depends on D135774
Comment 6•2 years ago
|
||
Depends on D135775
Comment 7•2 years ago
|
||
Depends on D135776
Comment 8•2 years ago
|
||
Depends on D135777
Comment 9•2 years ago
|
||
Depends on D135778
Comment 10•2 years ago
|
||
Depends on D135779
Comment 11•2 years ago
|
||
Depends on D135780
Comment 12•2 years ago
|
||
Depends on D135781
Comment 13•2 years ago
|
||
Depends on D135782
Comment 14•2 years ago
|
||
These auxiliary ops will be used to implement baseline codegen for
the AddRecordProperty opcode.
Depends on D135783
Comment 15•2 years ago
|
||
Depends on D135784
Comment 16•2 years ago
|
||
Depends on D135785
Comment 17•2 years ago
|
||
Depends on D135786
Comment 18•2 years ago
|
||
Depends on D135787
Comment 19•2 years ago
|
||
This code will be used for code generation for AddTupleElement and AddRecordProperty.
Depends on D135788
Comment 20•2 years ago
|
||
This arises when setting object flags on records/tuples; if the record or
tuple becomes non-extensible, the shape should change (otherwise, the initial
default shape is mutated).
Depends on D135789
Comment 21•2 years ago
|
||
Depends on D135790
Comment 22•2 years ago
|
||
Depends on D135791
Comment 23•2 years ago
|
||
Depends on D135792
Comment 24•2 years ago
|
||
Depends on D135793
Comment 25•2 years ago
|
||
Depends on D135795
Comment 26•2 years ago
|
||
Depends on D135796
Comment 27•2 years ago
|
||
Depends on D135797
Comment 28•2 years ago
|
||
Depends on D135798
Comment 29•2 years ago
|
||
Depends on D135799
Comment 30•2 years ago
|
||
Depends on D135800
Comment 31•2 years ago
|
||
Depends on D135801
Comment 32•2 years ago
|
||
Depends on D135802
Comment 33•2 years ago
|
||
Depends on D135803
Comment 34•2 years ago
|
||
Depends on D135804
Comment 35•2 years ago
|
||
Depends on D135805
Comment 36•2 years ago
|
||
Depends on D135806
Updated•2 years ago
|
Updated•2 years ago
|
Comment 37•2 years ago
|
||
Depends on D135777
Updated•2 years ago
|
Updated•2 years ago
|
Comment 38•2 years ago
|
||
This will be used by the JIT implementation for AddRecordProperty and AddTupleElement.
Depends on D135779
Comment 39•2 years ago
|
||
This will be used by the JIT implementation for FinishRecord and FinishTuple.
Depends on D152987
Comment 40•2 years ago
|
||
This will be used by the JIT implementation for AddRecordProperty.
Depends on D152988
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Comment 41•2 years ago
|
||
This will be called by the JIT implementation of AddRecordProperty if a
value is non-primitive.
Depends on D135783
Comment 42•2 years ago
|
||
Depends on D152990
Comment 43•2 years ago
|
||
This function is used to implement FinishRecord.
Depends on D152991
Updated•2 years ago
|
Comment 44•2 years ago
|
||
This is used to implement FinishRecord.
Depends on D135773
Comment 45•2 years ago
|
||
This is used to implement AddRecordProperty.
Depends on D152993
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Comment 46•2 years ago
|
||
Depends on D135803
Comment 47•2 years ago
|
||
Depends on D152995
Updated•2 years ago
|
Comment 48•2 years ago
|
||
Depends on D135804
Comment 49•2 years ago
|
||
Depends on D152997
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Comment 50•2 years ago
|
||
Depends on D135797
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Comment 51•2 years ago
|
||
Depends on D135807
Comment 52•2 years ago
|
||
Depends on D153000
Comment 53•2 years ago
|
||
This is helpful in implementing record initialization (in the presence of spread operations, record length isn't always statically known.)
Depends on D153001
Updated•2 years ago
|
Comment 54•2 years ago
|
||
Depends on D135782
Comment 55•2 years ago
|
||
Depends on D153003
Comment 56•2 years ago
|
||
Depends on D153004
Comment 57•2 years ago
|
||
This instruction is a no-op at runtime, but allows us to re-use
MIR instructions with Object operands for Records and Tuples.
Depends on D153005
Comment 58•2 years ago
|
||
Depends on D153006
Comment 59•2 years ago
|
||
Depends on D153007
Comment 60•2 years ago
|
||
This is used to implement AddRecordProperty to ensure that record keys
are not symbols.
Depends on D153008
Comment 61•2 years ago
|
||
These are used to implement FinishRecord.
Depends on D153009
Comment 62•2 years ago
|
||
This is used in implementing AddRecordProperty and AddTupleElement.
Depends on D153010
Comment 63•2 years ago
|
||
This is used in implementing AddRecordProperty.
Depends on D153011
Comment 64•2 years ago
|
||
This is used to implement FinishRecord.
Depends on D153012
Comment 65•2 years ago
|
||
Depends on D153013
Comment 66•2 years ago
|
||
Depends on D153014
Comment 67•2 years ago
|
||
Depends on D153015
Comment 68•2 years ago
|
||
Depends on D153016
Comment 69•2 years ago
|
||
Include mozilla/Maybe.h in TupleObject.cpp
Include vm/JSContext-inl.h in RecordTupleShared.cpp
This fixes build failures on build-macosx64-hybrid/plain
Depends on D153017
Comment 70•2 years ago
|
||
Depends on D153018
Comment 71•2 years ago
|
||
Depends on D153019
Comment 72•2 years ago
|
||
From the README.md: https://github.com/tc39/proposal-record-tuple#readme
From the cookbook: https://tc39.es/proposal-record-tuple/cookbook/
And possibly wrong examples in Details.md (not updated since 2020): https://github.com/tc39/proposal-record-tuple/blob/main/details.md
Depends on D153020
Comment 73•2 years ago
|
||
Depends on D153021
Comment 74•2 years ago
|
||
Depends on D153022
Comment 75•2 years ago
|
||
Depends on D153023
Comment 76•2 years ago
|
||
Depends on D153024
Comment 77•2 years ago
|
||
Depends on D153025
Comment 78•2 years ago
|
||
Depends on D153026
Comment 79•2 years ago
|
||
Depends on D153027
Comment 80•2 years ago
|
||
The bug was that it was calling prepare() twice, which meant that in
one of the paths, the stack didn't get popped all the way, meaning we
used some random garbage as the return address
Record tests pass now except for json
Depends on D153028
Comment 81•2 years ago
|
||
This needs to be cleaned up.
Records still render as just "Object { }", but that's the best I can do
for now without knowing the code better, and it doesn't crash
Main issue I fixed was that there were two versions of createValueGrip()
in the console and both needed to be changed to return something non-null
for Record/Tuple
Also needs tests
Depends on D153029
Comment 82•2 years ago
|
||
Depends on D153030
Comment 83•2 years ago
|
||
Depends on D153031
Comment 84•2 years ago
|
||
Depends on D153032
Comment 85•2 years ago
|
||
The code was incorrectly coercing ExtPrimOperandIds into ObjOperandIds,
causing useRegister(...) to use the wrong type when unboxing Tuples,
creating invalid memory addresses
Depends on D153033
Comment 86•2 years ago
|
||
Depends on D153034
Comment 87•2 years ago
|
||
Depends on D153035
Comment 88•2 years ago
|
||
Because guardToTuple may return something that's different from its input
(it might unbox a TupleObject), it can't use a custom writer.
Depends on D153036
Comment 89•2 years ago
|
||
Depends on D153037
Comment 90•2 years ago
|
||
Depends on D153038
Comment 91•2 years ago
|
||
Depends on D153039
Comment 92•2 years ago
|
||
Depends on D153040
Comment 93•2 years ago
|
||
Depends on D153041
Comment 94•2 years ago
|
||
Depends on D153042
Comment 95•2 years ago
|
||
Depends on D153043
Comment 96•2 years ago
|
||
Depends on D153044
Comment 97•2 years ago
|
||
Uncommented tests in records-proposal-examples.js,
and some in record-tuple-cookbook.js which I had forgotten to uncomment
last time. Some tests still fail.
Depends on D153045
Comment 98•2 years ago
|
||
Uncommented tests in records-proposal-examples.js,
and some in record-tuple-cookbook.js which I had forgotten to uncomment
last time.
FIXME: Errors with JSON.stringify
Depends on D153046
Comment 99•2 years ago
|
||
Implements InitTuple and FinishTuple in Warp.
Depends on D153047
Comment 100•2 years ago
|
||
Finishes WIP of previous commit.
Extends jit-test/tests/record-tuple/basic-tuples.js to induce warp (hopefully).
Depends on D153048
Comment 101•2 years ago
|
||
Depends on D153049
Comment 102•2 years ago
|
||
This was resulting in a garbage value being written into a tuple with
an array spread on arm32
Depends on D153050
Comment 103•2 years ago
|
||
Depends on D153051
Comment 104•2 years ago
|
||
Depends on D153052
Comment 105•2 years ago
|
||
Depends on D153053
Comment 106•2 years ago
|
||
Changed CallAddRecordSpread to take both the record and the object as
Values, to use fewer registers
Depends on D153054
Comment 107•2 years ago
|
||
Depends on D153055
Comment 108•2 years ago
|
||
Depends on D153056
Comment 109•2 years ago
|
||
Depends on D153057
Comment 110•5 months ago
|
||
The bug assignee is inactive on Bugzilla, so the assignee is being reset.
Description
•