tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

CacheIROps.yaml (67464B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 # [SMDOC] CacheIR Opcodes
      6 # =======================
      7 # This file defines all CacheIR opcodes and their arguments.
      8 #
      9 # Each op has the following attributes:
     10 #
     11 # name
     12 # ====
     13 # Opcode name. Convention is to use a name ending in *Result for ops that store
     14 # to the IC's output register.
     15 #
     16 # shared
     17 # ======
     18 # If true, Baseline and Ion use the same CacheIRCompiler code for this op.
     19 # If false, the op must be implemented in both BaselineCacheIRCompiler and
     20 # IonCacheIRCompiler.
     21 #
     22 # transpile
     23 # =========
     24 # Whether this op can be transpiled to MIR by WarpCacheIRTranspiler.
     25 #
     26 # cost_estimate
     27 # =========
     28 # Score of an individual CacheIR Opcode's contribution to the overall score for
     29 # each stub. This score is based off of the cost of the masm calls made by the op's
     30 # implementation. The higher the score the more costly the op is.
     31 #
     32 # How to decide the cost estimate for a CacheIROp:
     33 # 0 points - Generates no code
     34 # 1 point - 1-5 simple masm ops, no callVM or callWithABI
     35 # 2 points - 5-20 masm ops, no callVM or callWithABI
     36 # 3 points - 20+ masm ops, no callVM or callWithABI
     37 # 4 points - callWithABI
     38 # 5 points - callVM
     39 # 6 points - more than one callWithABI or callVM
     40 #
     41 # In the case of the op not being shared, default to counting the Baseline
     42 # implementation.
     43 #
     44 # If the cost estimate is different based off of what branch of a conditional
     45 # is taken, assign the score of the branch with the highest cost.
     46 #
     47 # Note:
     48 # Currently, the scoring is tentative. It is in place to provide an
     49 # estimate for the cost of each op. The scoring will be refined.
     50 #
     51 # custom_writer (optional)
     52 # ========================
     53 # If true, the generated CacheIRWriter method will be private and has a trailing
     54 # '_'. This is useful for ops that need custom CacheIRWriter logic on top of the
     55 # generated code.
     56 #
     57 # args
     58 # ====
     59 # List of arguments encoded in the bytecode stream. There are three argument
     60 # kinds:
     61 #
     62 # - Id (ObjId, ValId, ...): refers to either an IC input or a value defined by
     63 #   a previous CacheIR instruction. This is encoded as integer in the bytecode
     64 #   stream.
     65 #
     66 # - Field (ObjectField, StringField, ...): specific value is stored in the stub
     67 #   data and the bytecode stream stores the offset of this field. This means the
     68 #   CacheIR is not specialized for particular values and code can be shared.
     69 #
     70 # - Immediate (BoolImm, Int32Imm, JSOpImm, ...): a value baked directly into
     71 #   the bytecode stream. This is useful for bits of state that need to be
     72 #   available to all CacheIR compilers/transpilers.
     73 #
     74 # If there's an argument named 'result', the generated CacheIRWriter method will
     75 # return a new OperandId of this type.
     76 
     77 - name: ReturnFromIC
     78  shared: false
     79  transpile: true
     80  cost_estimate: 1
     81  args:
     82 
     83 - name: GuardToObject
     84  shared: true
     85  transpile: true
     86  cost_estimate: 1
     87  custom_writer: true
     88  args:
     89    input: ValId
     90 
     91 - name: GuardIsNullOrUndefined
     92  shared: true
     93  transpile: true
     94  cost_estimate: 1
     95  args:
     96    input: ValId
     97 
     98 - name: GuardIsNull
     99  shared: true
    100  transpile: true
    101  cost_estimate: 1
    102  args:
    103    input: ValId
    104 
    105 - name: GuardIsUndefined
    106  shared: true
    107  transpile: true
    108  cost_estimate: 1
    109  args:
    110    input: ValId
    111 
    112 - name: GuardIsNotUninitializedLexical
    113  shared: true
    114  transpile: true
    115  cost_estimate: 1
    116  args:
    117    val: ValId
    118 
    119 - name: GuardToBoolean
    120  shared: true
    121  transpile: true
    122  cost_estimate: 1
    123  custom_writer: true
    124  args:
    125    input: ValId
    126 
    127 - name: GuardToString
    128  shared: true
    129  transpile: true
    130  cost_estimate: 1
    131  custom_writer: true
    132  args:
    133    input: ValId
    134 
    135 - name: GuardToSymbol
    136  shared: true
    137  transpile: true
    138  cost_estimate: 1
    139  custom_writer: true
    140  args:
    141    input: ValId
    142 
    143 - name: GuardToBigInt
    144  shared: true
    145  transpile: true
    146  cost_estimate: 1
    147  custom_writer: true
    148  args:
    149    input: ValId
    150 
    151 - name: GuardIsNumber
    152  shared: true
    153  transpile: true
    154  cost_estimate: 1
    155  custom_writer: true
    156  args:
    157    input: ValId
    158 
    159 - name: GuardToInt32
    160  shared: true
    161  transpile: true
    162  cost_estimate: 1
    163  custom_writer: true
    164  args:
    165    input: ValId
    166 
    167 - name: GuardToNonGCThing
    168  shared: true
    169  transpile: true
    170  cost_estimate: 1
    171  args:
    172    input: ValId
    173 
    174 # If the Value is a boolean, convert it to int32.
    175 - name: GuardBooleanToInt32
    176  shared: true
    177  transpile: true
    178  cost_estimate: 1
    179  args:
    180    input: ValId
    181    result: Int32Id
    182 
    183 - name: GuardToInt32Index
    184  shared: true
    185  transpile: true
    186  cost_estimate: 1
    187  args:
    188    input: ValId
    189    result: Int32Id
    190 
    191 - name: Int32ToIntPtr
    192  shared: true
    193  transpile: true
    194  cost_estimate: 1
    195  args:
    196    input: Int32Id
    197    result: IntPtrId
    198 
    199 - name: GuardNumberToIntPtrIndex
    200  shared: true
    201  transpile: true
    202  cost_estimate: 2
    203  args:
    204    input: NumberId
    205    supportOOB: BoolImm
    206    result: IntPtrId
    207 
    208 - name: GuardToInt32ModUint32
    209  shared: true
    210  transpile: true
    211  cost_estimate: 2
    212  args:
    213    input: ValId
    214    result: Int32Id
    215 
    216 - name: GuardToUint8Clamped
    217  shared: true
    218  transpile: true
    219  cost_estimate: 2
    220  args:
    221    input: ValId
    222    result: Int32Id
    223 
    224 # Note: this doesn't accept doubles to avoid ambiguity about whether it includes
    225 # int32 values. Use GuardIsNumber instead.
    226 - name: GuardNonDoubleType
    227  shared: true
    228  transpile: true
    229  cost_estimate: 1
    230  args:
    231    input: ValId
    232    type: ValueTypeImm
    233 
    234 - name: GuardShape
    235  shared: false
    236  transpile: true
    237  cost_estimate: 1
    238  args:
    239    obj: ObjId
    240    shape: WeakShapeField
    241 
    242 - name: GuardMultipleShapes
    243  shared: true
    244  transpile: true
    245  cost_estimate: 2
    246  custom_writer: true
    247  args:
    248    obj: ObjId
    249    shapes: ObjectField
    250 
    251 - name: GuardMultipleShapesToOffset
    252  shared: true
    253  transpile: true
    254  cost_estimate: 2
    255  custom_writer: true
    256  args:
    257    obj: ObjId
    258    shapes: ObjectField
    259    result: Int32Id
    260 
    261 - name: GuardProto
    262  shared: false
    263  transpile: true
    264  cost_estimate: 1
    265  args:
    266    obj: ObjId
    267    proto: WeakObjectField
    268 
    269 - name: GuardNullProto
    270  shared: true
    271  transpile: true
    272  cost_estimate: 1
    273  args:
    274    obj: ObjId
    275 
    276 # Guard per GuardClassKind.
    277 - name: GuardClass
    278  shared: true
    279  transpile: true
    280  cost_estimate: 1
    281  args:
    282    obj: ObjId
    283    kind: GuardClassKindImm
    284 
    285 # Guard on a realm fuse.
    286 - name: GuardFuse
    287  shared: true
    288  transpile: true
    289  cost_estimate: 1
    290  args:
    291    fuseWord: RealmFuseIndexImm
    292 
    293 # Guard on a runtime fuse.
    294 - name: GuardRuntimeFuse
    295  shared: true
    296  transpile: true
    297  cost_estimate: 1
    298  args:
    299    fuseWord: RuntimeFuseIndexImm
    300 
    301 - name: GuardObjectFuseProperty
    302  shared: true
    303  transpile: true
    304  cost_estimate: 1
    305  args:
    306    # These two fields are used in debug builds to check the object matches
    307    # objFuseOwner. It also ensures the ObjectFuse outlives this IC stub.
    308    obj: ObjId
    309    objFuseOwner: WeakObjectField
    310    # The ObjectFuse* and data used for the IC guard.
    311    objFuse: RawPointerField
    312    expectedGeneration: RawInt32Field
    313    propIndex: RawInt32Field
    314    propMask: RawInt32Field
    315    # Whether IC code can use a fast path based on invalidatedConstantProperty_.
    316    canUseFastPath: BoolImm
    317 
    318 # Guard on an arbitrary JSClass.
    319 - name: GuardAnyClass
    320  shared: false
    321  transpile: true
    322  cost_estimate: 1
    323  args:
    324    obj: ObjId
    325    clasp: RawPointerField
    326 
    327 - name: GuardGlobalGeneration
    328  shared: true
    329  transpile: true
    330  cost_estimate: 1
    331  args:
    332    expected: RawInt32Field
    333    generationAddr: RawPointerField
    334 
    335 - name: HasClassResult
    336  shared: false
    337  transpile: true
    338  cost_estimate: 1
    339  args:
    340    obj: ObjId
    341    clasp: RawPointerField
    342 
    343 - name: HasShapeResult
    344  shared: false
    345  transpile: true
    346  cost_estimate: 1
    347  args:
    348    obj: ObjId
    349    shape: ShapeField
    350 
    351 - name: CallRegExpMatcherResult
    352  shared: false
    353  transpile: true
    354  cost_estimate: 5
    355  args:
    356    regexp: ObjId
    357    input: StringId
    358    lastIndex: Int32Id
    359    stub: JitCodeField
    360 
    361 - name: CallRegExpSearcherResult
    362  shared: false
    363  transpile: true
    364  cost_estimate: 5
    365  args:
    366    regexp: ObjId
    367    input: StringId
    368    lastIndex: Int32Id
    369    stub: JitCodeField
    370 
    371 - name: RegExpSearcherLastLimitResult
    372  shared: true
    373  transpile: true
    374  cost_estimate: 1
    375  args:
    376 
    377 - name: RegExpHasCaptureGroupsResult
    378  shared: false
    379  transpile: true
    380  cost_estimate: 1
    381  args:
    382    regexp: ObjId
    383    input: StringId
    384 
    385 - name: RegExpBuiltinExecMatchResult
    386  shared: false
    387  transpile: true
    388  cost_estimate: 5
    389  args:
    390    regexp: ObjId
    391    input: StringId
    392    stub: JitCodeField
    393 
    394 - name: RegExpBuiltinExecTestResult
    395  shared: false
    396  transpile: true
    397  cost_estimate: 5
    398  args:
    399    regexp: ObjId
    400    input: StringId
    401    stub: JitCodeField
    402 
    403 - name: RegExpFlagResult
    404  shared: true
    405  transpile: true
    406  cost_estimate: 2
    407  args:
    408    regexp: ObjId
    409    flagsMask: Int32Imm
    410 
    411 - name: CallSubstringKernelResult
    412  shared: true
    413  transpile: true
    414  cost_estimate: 5
    415  args:
    416    str: StringId
    417    begin: Int32Id
    418    length: Int32Id
    419 
    420 - name: StringReplaceStringResult
    421  shared: true
    422  transpile: true
    423  cost_estimate: 5
    424  args:
    425    str: StringId
    426    pattern: StringId
    427    replacement: StringId
    428 
    429 - name: StringSplitStringResult
    430  shared: true
    431  transpile: true
    432  cost_estimate: 5
    433  args:
    434    str: StringId
    435    separator: StringId
    436 
    437 - name: GetFirstDollarIndexResult
    438  shared: true
    439  transpile: true
    440  cost_estimate: 5
    441  args:
    442    str: StringId
    443 
    444 # Add a reference to a global in the compartment to keep it alive.
    445 - name: GuardCompartment
    446  shared: false
    447  transpile: false
    448  cost_estimate: 2
    449  args:
    450    obj: ObjId
    451    global: ObjectField
    452    compartment: RawPointerField
    453 
    454 - name: GuardIsExtensible
    455  shared: true
    456  transpile: true
    457  cost_estimate: 1
    458  args:
    459    obj: ObjId
    460 
    461 - name: GuardIsNativeObject
    462  shared: true
    463  transpile: true
    464  cost_estimate: 1
    465  args:
    466    obj: ObjId
    467 
    468 - name: GuardIsProxy
    469  shared: true
    470  transpile: true
    471  cost_estimate: 1
    472  args:
    473    obj: ObjId
    474 
    475 - name: GuardIsNotProxy
    476  shared: true
    477  transpile: true
    478  cost_estimate: 1
    479  args:
    480    obj: ObjId
    481 
    482 - name: GuardToArrayBuffer
    483  shared: true
    484  transpile: true
    485  cost_estimate: 1
    486  args:
    487    obj: ObjId
    488 
    489 - name: GuardToSharedArrayBuffer
    490  shared: true
    491  transpile: true
    492  cost_estimate: 1
    493  args:
    494    obj: ObjId
    495 
    496 - name: GuardIsNotArrayBufferMaybeShared
    497  shared: true
    498  transpile: true
    499  cost_estimate: 1
    500  args:
    501    obj: ObjId
    502 
    503 - name: GuardIsTypedArray
    504  shared: true
    505  transpile: true
    506  cost_estimate: 1
    507  args:
    508    obj: ObjId
    509 
    510 - name: GuardIsNonResizableTypedArray
    511  shared: true
    512  transpile: true
    513  cost_estimate: 1
    514  args:
    515    obj: ObjId
    516 
    517 - name: GuardIsResizableTypedArray
    518  shared: true
    519  transpile: true
    520  cost_estimate: 1
    521  args:
    522    obj: ObjId
    523 
    524 - name: GuardHasProxyHandler
    525  shared: false
    526  transpile: true
    527  cost_estimate: 1
    528  args:
    529    obj: ObjId
    530    handler: RawPointerField
    531 
    532 - name: GuardIsNotDOMProxy
    533  shared: true
    534  transpile: true
    535  cost_estimate: 1
    536  args:
    537    obj: ObjId
    538 
    539 - name: GuardSpecificObject
    540  shared: false
    541  transpile: true
    542  cost_estimate: 1
    543  args:
    544    obj: ObjId
    545    expected: WeakObjectField
    546 
    547 - name: GuardObjectIdentity
    548  shared: true
    549  transpile: true
    550  cost_estimate: 1
    551  args:
    552    obj1: ObjId
    553    obj2: ObjId
    554 
    555 - name: GuardSpecificFunction
    556  shared: false
    557  transpile: true
    558  cost_estimate: 1
    559  custom_writer: true
    560  args:
    561    fun: ObjId
    562    expected: WeakObjectField
    563    nargsAndFlags: RawInt32Field
    564 
    565 - name: GuardFunctionScript
    566  shared: false
    567  transpile: true
    568  cost_estimate: 1
    569  custom_writer: true
    570  args:
    571    obj: ObjId
    572    expected: WeakBaseScriptField
    573    nargsAndFlags: RawInt32Field
    574 
    575 - name: GuardSpecificAtom
    576  shared: false
    577  transpile: true
    578  cost_estimate: 4
    579  args:
    580    str: StringId
    581    expected: AtomField
    582 
    583 - name: GuardSpecificSymbol
    584  shared: false
    585  transpile: true
    586  cost_estimate: 1
    587  args:
    588    sym: SymbolId
    589    expected: SymbolField
    590 
    591 - name: GuardSpecificInt32
    592  shared: true
    593  transpile: true
    594  cost_estimate: 1
    595  args:
    596    num: Int32Id
    597    expected: Int32Imm
    598 
    599 - name: GuardSpecificValue
    600  shared: false
    601  transpile: true
    602  cost_estimate: 1
    603  args:
    604    val: ValId
    605    expected: ValueField
    606 
    607 - name: GuardNoDenseElements
    608  shared: true
    609  transpile: true
    610  cost_estimate: 1
    611  args:
    612    obj: ObjId
    613 
    614 - name: GuardStringToIndex
    615  shared: true
    616  transpile: true
    617  cost_estimate: 4
    618  args:
    619    str: StringId
    620    result: Int32Id
    621 
    622 - name: GuardStringToInt32
    623  shared: true
    624  transpile: true
    625  cost_estimate: 4
    626  args:
    627    str: StringId
    628    result: Int32Id
    629 
    630 - name: GuardStringToNumber
    631  shared: true
    632  transpile: true
    633  cost_estimate: 4
    634  args:
    635    str: StringId
    636    result: NumberId
    637 
    638 - name: StringToAtom
    639  shared: true
    640  transpile: true
    641  custom_writer: true
    642  cost_estimate: 4
    643  args:
    644    str: StringId
    645 
    646 - name: BooleanToNumber
    647  shared: true
    648  transpile: true
    649  cost_estimate: 1
    650  args:
    651    boolean: BooleanId
    652    result: NumberId
    653 
    654 # Load the getter or setter out of a GetterSetter.
    655 # Fails if it is null.
    656 - name: LoadGetterSetterFunction
    657  shared: true
    658  transpile: true
    659  cost_estimate: 1
    660  args:
    661    getterSetter: ValId
    662    isGetter: BoolImm
    663    needsClassGuard: BoolImm
    664    result: ObjId
    665 
    666 - name: GuardHasGetterSetter
    667  shared: true
    668  transpile: true
    669  cost_estimate: 4
    670  args:
    671    obj: ObjId
    672    id: IdField
    673    # The expected GetterSetter* stored as PrivateGCThingValue.
    674    getterSetter: WeakValueField
    675 
    676 - name: GuardInt32IsNonNegative
    677  shared: true
    678  transpile: true
    679  cost_estimate: 1
    680  args:
    681    index: Int32Id
    682 
    683 - name: GuardIntPtrIsNonNegative
    684  shared: true
    685  transpile: true
    686  cost_estimate: 1
    687  args:
    688    index: IntPtrId
    689 
    690 - name: GuardIndexIsValidUpdateOrAdd
    691  shared: true
    692  transpile: true
    693  cost_estimate: 1
    694  args:
    695    obj: ObjId
    696    index: Int32Id
    697 
    698 - name: GuardIndexIsNotDenseElement
    699  shared: true
    700  transpile: true
    701  cost_estimate: 1
    702  args:
    703    obj: ObjId
    704    index: Int32Id
    705 
    706 - name: GuardTagNotEqual
    707  shared: true
    708  transpile: true
    709  cost_estimate: 1
    710  args:
    711    lhs: ValueTagId
    712    rhs: ValueTagId
    713 
    714 - name: GuardXrayExpandoShapeAndDefaultProto
    715  shared: true
    716  transpile: false
    717  cost_estimate: 2
    718  args:
    719    obj: ObjId
    720    shapeWrapper: ObjectField
    721 
    722 - name: GuardXrayNoExpando
    723  shared: true
    724  transpile: false
    725  cost_estimate: 2
    726  args:
    727    obj: ObjId
    728 
    729 # Guard obj[slot] == expected.
    730 - name: GuardDynamicSlotIsSpecificObject
    731  shared: true
    732  transpile: true
    733  cost_estimate: 1
    734  args:
    735    obj: ObjId
    736    expected: ObjId
    737    slot: RawInt32Field
    738 
    739 # Guard obj[slot] is not an object.
    740 - name: GuardDynamicSlotIsNotObject
    741  shared: true
    742  transpile: true
    743  cost_estimate: 1
    744  args:
    745    obj: ObjId
    746    slot: RawInt32Field
    747 
    748 - name: GuardFixedSlotValue
    749  shared: true
    750  transpile: true
    751  cost_estimate: 1
    752  args:
    753    obj: ObjId
    754    offset: RawInt32Field
    755    val: ValueField
    756 
    757 - name: GuardDynamicSlotValue
    758  shared: true
    759  transpile: true
    760  cost_estimate: 1
    761  args:
    762    obj: ObjId
    763    offset: RawInt32Field
    764    val: ValueField
    765 
    766 - name: CheckWeakValueResultForFixedSlot
    767  shared: true
    768  transpile: true
    769  cost_estimate: 1
    770  args:
    771    obj: ObjId
    772    offset: RawInt32Field
    773    val: WeakValueField
    774 
    775 - name: CheckWeakValueResultForDynamicSlot
    776  shared: true
    777  transpile: true
    778  cost_estimate: 1
    779  args:
    780    obj: ObjId
    781    offset: RawInt32Field
    782    val: WeakValueField
    783 
    784 - name: LoadScriptedProxyHandler
    785  shared: true
    786  transpile: true
    787  cost_estimate: 1
    788  args:
    789    result: ObjId
    790    obj: ObjId
    791 
    792 - name: IdToStringOrSymbol
    793  shared: true
    794  transpile: true
    795  cost_estimate: 2
    796  args:
    797    result: ValId
    798    id: ValId
    799 
    800 - name: LoadFixedSlot
    801  shared: true
    802  transpile: true
    803  cost_estimate: 1
    804  args:
    805    result: ValId
    806    obj: ObjId
    807    offset: RawInt32Field
    808 
    809 - name: LoadFixedSlotFromOffsetResult
    810  shared: true
    811  transpile: true
    812  cost_estimate: 2
    813  args:
    814    obj: ObjId
    815    offset: Int32Id
    816 
    817 - name: StoreFixedSlotFromOffset
    818  shared: true
    819  transpile: true
    820  cost_estimate: 6
    821  args:
    822    obj: ObjId
    823    offset: Int32Id
    824    rhs: ValId
    825 
    826 - name: StoreDynamicSlotFromOffset
    827  shared: true
    828  transpile: true
    829  cost_estimate: 6
    830  args:
    831    obj: ObjId
    832    offset: Int32Id
    833    rhs: ValId
    834 
    835 - name: LoadDynamicSlot
    836  shared: true
    837  transpile: true
    838  cost_estimate: 1
    839  args:
    840    result: ValId
    841    obj: ObjId
    842    slot: RawInt32Field
    843 
    844 - name: LoadDynamicSlotFromOffsetResult
    845  shared: true
    846  transpile: true
    847  cost_estimate: 2
    848  args:
    849    obj: ObjId
    850    offset: Int32Id
    851 
    852 - name: GuardNoAllocationMetadataBuilder
    853  shared: true
    854  transpile: true
    855  cost_estimate: 1
    856  args:
    857    builderAddr: RawPointerField
    858 
    859 - name: GuardFunctionHasJitEntry
    860  shared: true
    861  transpile: true
    862  cost_estimate: 1
    863  args:
    864    fun: ObjId
    865 
    866 - name: GuardFunctionHasNoJitEntry
    867  shared: true
    868  transpile: true
    869  cost_estimate: 1
    870  args:
    871    fun: ObjId
    872 
    873 - name: GuardFunctionIsNonBuiltinCtor
    874  shared: true
    875  transpile: true
    876  cost_estimate: 1
    877  args:
    878    fun: ObjId
    879 
    880 - name: GuardFunctionIsConstructor
    881  shared: true
    882  transpile: true
    883  cost_estimate: 1
    884  args:
    885    fun: ObjId
    886 
    887 - name: GuardNotClassConstructor
    888  shared: true
    889  transpile: true
    890  cost_estimate: 1
    891  args:
    892    fun: ObjId
    893 
    894 - name: GuardArrayIsPacked
    895  shared: true
    896  transpile: true
    897  cost_estimate: 1
    898  args:
    899    array: ObjId
    900 
    901 - name: GuardArgumentsObjectFlags
    902  shared: true
    903  transpile: true
    904  cost_estimate: 1
    905  args:
    906    obj: ObjId
    907    flags: ByteImm
    908 
    909 # Guard cx->realm() == obj->realm().
    910 - name: GuardObjectHasSameRealm
    911  shared: true
    912  transpile: true
    913  cost_estimate: 1
    914  args:
    915    obj: ObjId
    916 
    917 - name: LoadObject
    918  shared: true
    919  transpile: true
    920  cost_estimate: 1
    921  args:
    922    result: ObjId
    923    obj: ObjectField
    924 
    925 # This is just LoadObject with extra information for the purpose of optimizing
    926 # out shape guards if we're just storing to slots of the receiver object.
    927 - name: LoadProtoObject
    928  shared: true
    929  transpile: true
    930  cost_estimate: 1
    931  args:
    932    result: ObjId
    933    protoObj: ObjectField
    934    receiverObj: ObjId
    935 
    936 - name: LoadProto
    937  shared: true
    938  transpile: true
    939  cost_estimate: 1
    940  args:
    941    obj: ObjId
    942    result: ObjId
    943 
    944 - name: LoadEnclosingEnvironment
    945  shared: true
    946  transpile: true
    947  cost_estimate: 1
    948  args:
    949    obj: ObjId
    950    result: ObjId
    951 
    952 - name: LoadWrapperTarget
    953  shared: true
    954  transpile: true
    955  cost_estimate: 1
    956  args:
    957    obj: ObjId
    958    result: ObjId
    959    fallible: BoolImm
    960 
    961 - name: LoadValueTag
    962  shared: true
    963  transpile: true
    964  cost_estimate: 1
    965  args:
    966    val: ValId
    967    result: ValueTagId
    968 
    969 - name: LoadArgumentFixedSlot
    970  shared: false
    971  transpile: true
    972  cost_estimate: 1
    973  custom_writer: true
    974  args:
    975    result: ValId
    976    slotIndex: ByteImm
    977 
    978 - name: LoadArgumentDynamicSlot
    979  shared: false
    980  transpile: true
    981  cost_estimate: 1
    982  custom_writer: true
    983  args:
    984    result: ValId
    985    argc: Int32Id
    986    slotIndex: ByteImm
    987 
    988 - name: TruncateDoubleToUInt32
    989  shared: true
    990  transpile: true
    991  cost_estimate: 4
    992  args:
    993    input: NumberId
    994    result: Int32Id
    995 
    996 - name: DoubleToUint8Clamped
    997  shared: true
    998  transpile: true
    999  cost_estimate: 2
   1000  args:
   1001    input: NumberId
   1002    result: Int32Id
   1003 
   1004 - name: MegamorphicLoadSlotResult
   1005  shared: true
   1006  transpile: true
   1007  cost_estimate: 4
   1008  args:
   1009    obj: ObjId
   1010    name: IdField
   1011 
   1012 - name: MegamorphicLoadSlotByValueResult
   1013  shared: true
   1014  transpile: true
   1015  cost_estimate: 4
   1016  args:
   1017    obj: ObjId
   1018    id: ValId
   1019 
   1020 - name: MegamorphicLoadSlotPermissiveResult
   1021  shared: true
   1022  transpile: true
   1023  cost_estimate: 4
   1024  args:
   1025    obj: ObjId
   1026    name: IdField
   1027 
   1028 - name: MegamorphicLoadSlotByValuePermissiveResult
   1029  shared: true
   1030  transpile: true
   1031  cost_estimate: 4
   1032  args:
   1033    obj: ObjId
   1034    id: ValId
   1035 
   1036 - name: MegamorphicStoreSlot
   1037  shared: true
   1038  transpile: true
   1039  cost_estimate: 5
   1040  args:
   1041    obj: ObjId
   1042    name: IdField
   1043    rhs: ValId
   1044    strict: BoolImm
   1045 
   1046 - name: MegamorphicSetElement
   1047  shared: false
   1048  transpile: true
   1049  cost_estimate: 5
   1050  args:
   1051    obj: ObjId
   1052    id: ValId
   1053    rhs: ValId
   1054    strict: BoolImm
   1055 
   1056 - name: MegamorphicHasPropResult
   1057  shared: true
   1058  transpile: true
   1059  cost_estimate: 4
   1060  args:
   1061    obj: ObjId
   1062    id: ValId
   1063    hasOwn: BoolImm
   1064 
   1065 # For the case where we have an object with a small number of properties,
   1066 # we can do better than a megamorphic hasprop if we just run through those
   1067 # IDs and check for atom pointer equality.
   1068 - name: SmallObjectVariableKeyHasOwnResult
   1069  shared: true
   1070  transpile: true
   1071  cost_estimate: 4
   1072  args:
   1073    # We don't actually need the object, because we only care about the shape,
   1074    # which was guarded before this
   1075    id: StringId
   1076    # We include the prop names to speed up and simplify the Baseline case,
   1077    # but only the shape is used from Ion to achieve an unrolled loop with
   1078    # comparisons to known atoms
   1079    propNames: ObjectField
   1080    shape: ShapeField
   1081 
   1082 - name: ObjectToIteratorResult
   1083  shared: true
   1084  transpile: true
   1085  cost_estimate: 5
   1086  args:
   1087    obj: ObjId
   1088    enumeratorsAddr: RawPointerField
   1089 
   1090 - name: ValueToIteratorResult
   1091  shared: true
   1092  transpile: true
   1093  cost_estimate: 5
   1094  args:
   1095    val: ValId
   1096 
   1097 # See CacheIR.cpp 'DOM proxies' comment.
   1098 - name: LoadDOMExpandoValue
   1099  shared: true
   1100  transpile: true
   1101  cost_estimate: 1
   1102  args:
   1103    obj: ObjId
   1104    result: ValId
   1105 
   1106 - name: LoadDOMExpandoValueGuardGeneration
   1107  shared: false
   1108  transpile: true
   1109  cost_estimate: 2
   1110  args:
   1111    obj: ObjId
   1112    expandoAndGeneration: RawPointerField
   1113    generation: RawInt64Field
   1114    result: ValId
   1115 
   1116 - name: LoadDOMExpandoValueIgnoreGeneration
   1117  shared: true
   1118  transpile: true
   1119  cost_estimate: 1
   1120  args:
   1121    obj: ObjId
   1122    result: ValId
   1123 
   1124 - name: GuardDOMExpandoMissingOrGuardShape
   1125  shared: false
   1126  transpile: true
   1127  cost_estimate: 2
   1128  args:
   1129    expando: ValId
   1130    shape: ShapeField
   1131 
   1132 - name: StoreFixedSlot
   1133  shared: false
   1134  transpile: true
   1135  cost_estimate: 6
   1136  args:
   1137    obj: ObjId
   1138    offset: RawInt32Field
   1139    rhs: ValId
   1140 
   1141 - name: StoreDynamicSlot
   1142  shared: false
   1143  transpile: true
   1144  cost_estimate: 6
   1145  args:
   1146    obj: ObjId
   1147    offset: RawInt32Field
   1148    rhs: ValId
   1149 
   1150 - name: AddAndStoreFixedSlot
   1151  shared: false
   1152  transpile: true
   1153  cost_estimate: 6
   1154  args:
   1155    obj: ObjId
   1156    offset: RawInt32Field
   1157    rhs: ValId
   1158    newShape: ShapeField
   1159    preserveWrapper: BoolImm
   1160 
   1161 - name: AddAndStoreDynamicSlot
   1162  shared: false
   1163  transpile: true
   1164  cost_estimate: 6
   1165  args:
   1166    obj: ObjId
   1167    offset: RawInt32Field
   1168    rhs: ValId
   1169    newShape: ShapeField
   1170    preserveWrapper: BoolImm
   1171 
   1172 - name: AllocateAndStoreDynamicSlot
   1173  shared: false
   1174  transpile: true
   1175  cost_estimate: 6
   1176  args:
   1177    obj: ObjId
   1178    offset: RawInt32Field
   1179    rhs: ValId
   1180    newShape: ShapeField
   1181    numNewSlots: RawInt32Field
   1182    preserveWrapper: BoolImm
   1183 
   1184 - name: AddSlotAndCallAddPropHook
   1185  shared: true
   1186  transpile: true
   1187  cost_estimate: 6
   1188  args:
   1189    obj: ObjId
   1190    rhs: ValId
   1191    newShape: ShapeField
   1192 
   1193 - name: StoreDenseElement
   1194  shared: true
   1195  transpile: true
   1196  cost_estimate: 6
   1197  args:
   1198    obj: ObjId
   1199    index: Int32Id
   1200    rhs: ValId
   1201    expectPackedElements: BoolImm
   1202 
   1203 - name: StoreDenseElementHole
   1204  shared: true
   1205  transpile: true
   1206  cost_estimate: 6
   1207  args:
   1208    obj: ObjId
   1209    index: Int32Id
   1210    rhs: ValId
   1211    handleAdd: BoolImm
   1212 
   1213 - name: ArrayPush
   1214  shared: true
   1215  transpile: true
   1216  cost_estimate: 6
   1217  args:
   1218    obj: ObjId
   1219    rhs: ValId
   1220 
   1221 - name: ArrayJoinResult
   1222  shared: true
   1223  transpile: true
   1224  cost_estimate: 5
   1225  args:
   1226    obj: ObjId
   1227    sep: StringId
   1228 
   1229 - name: ObjectKeysResult
   1230  shared: true
   1231  transpile: true
   1232  cost_estimate: 6
   1233  args:
   1234    obj: ObjId
   1235    resultShape: ShapeField
   1236 
   1237 - name: PackedArrayPopResult
   1238  shared: true
   1239  transpile: true
   1240  cost_estimate: 2
   1241  args:
   1242    array: ObjId
   1243 
   1244 - name: PackedArrayShiftResult
   1245  shared: true
   1246  transpile: true
   1247  cost_estimate: 4
   1248  args:
   1249    array: ObjId
   1250 
   1251 - name: PackedArraySliceResult
   1252  shared: true
   1253  transpile: true
   1254  cost_estimate: 5
   1255  args:
   1256    templateObject: ObjectField
   1257    array: ObjId
   1258    begin: Int32Id
   1259    end: Int32Id
   1260 
   1261 - name: ArgumentsSliceResult
   1262  shared: true
   1263  transpile: true
   1264  cost_estimate: 5
   1265  args:
   1266    templateObject: ObjectField
   1267    args: ObjId
   1268    begin: Int32Id
   1269    end: Int32Id
   1270 
   1271 - name: IsArrayResult
   1272  shared: false
   1273  transpile: true
   1274  cost_estimate: 5
   1275  args:
   1276    input: ValId
   1277 
   1278 - name: StoreFixedSlotUndefinedResult
   1279  shared: true
   1280  transpile: true
   1281  args:
   1282    obj: ObjId
   1283    offset: RawInt32Field
   1284    rhs: ValId
   1285 
   1286 - name: IsObjectResult
   1287  shared: true
   1288  transpile: true
   1289  cost_estimate: 1
   1290  args:
   1291    input: ValId
   1292 
   1293 - name: IsPackedArrayResult
   1294  shared: true
   1295  transpile: true
   1296  cost_estimate: 2
   1297  args:
   1298    obj: ObjId
   1299 
   1300 - name: IsCallableResult
   1301  shared: true
   1302  transpile: true
   1303  cost_estimate: 4
   1304  args:
   1305    input: ValId
   1306 
   1307 - name: IsConstructorResult
   1308  shared: true
   1309  transpile: true
   1310  cost_estimate: 4
   1311  args:
   1312    obj: ObjId
   1313 
   1314 - name: IsCrossRealmArrayConstructorResult
   1315  shared: true
   1316  transpile: true
   1317  cost_estimate: 2
   1318  args:
   1319    obj: ObjId
   1320 
   1321 - name: IsTypedArrayResult
   1322  shared: false
   1323  transpile: true
   1324  cost_estimate: 5
   1325  args:
   1326    obj: ObjId
   1327    isPossiblyWrapped: BoolImm
   1328 
   1329 - name: IsTypedArrayConstructorResult
   1330  shared: true
   1331  transpile: true
   1332  cost_estimate: 2
   1333  args:
   1334    obj: ObjId
   1335 
   1336 - name: ArrayBufferViewByteOffsetInt32Result
   1337  shared: true
   1338  transpile: true
   1339  cost_estimate: 1
   1340  args:
   1341    obj: ObjId
   1342 
   1343 - name: ArrayBufferViewByteOffsetDoubleResult
   1344  shared: true
   1345  transpile: true
   1346  cost_estimate: 1
   1347  args:
   1348    obj: ObjId
   1349 
   1350 - name: TypedArrayByteLengthInt32Result
   1351  shared: true
   1352  transpile: true
   1353  cost_estimate: 2
   1354  args:
   1355    obj: ObjId
   1356 
   1357 - name: TypedArrayByteLengthDoubleResult
   1358  shared: true
   1359  transpile: true
   1360  cost_estimate: 2
   1361  args:
   1362    obj: ObjId
   1363 
   1364 - name: ResizableTypedArrayByteLengthInt32Result
   1365  shared: true
   1366  transpile: true
   1367  cost_estimate: 2
   1368  args:
   1369    obj: ObjId
   1370 
   1371 - name: ResizableTypedArrayByteLengthDoubleResult
   1372  shared: true
   1373  transpile: true
   1374  cost_estimate: 2
   1375  args:
   1376    obj: ObjId
   1377 
   1378 - name: ResizableTypedArrayLengthInt32Result
   1379  shared: true
   1380  transpile: true
   1381  cost_estimate: 2
   1382  args:
   1383    obj: ObjId
   1384 
   1385 - name: ResizableTypedArrayLengthDoubleResult
   1386  shared: true
   1387  transpile: true
   1388  cost_estimate: 2
   1389  args:
   1390    obj: ObjId
   1391 
   1392 - name: ResizableDataViewByteLengthInt32Result
   1393  shared: true
   1394  transpile: true
   1395  cost_estimate: 2
   1396  args:
   1397    obj: ObjId
   1398 
   1399 - name: ResizableDataViewByteLengthDoubleResult
   1400  shared: true
   1401  transpile: true
   1402  cost_estimate: 2
   1403  args:
   1404    obj: ObjId
   1405 
   1406 - name: GrowableSharedArrayBufferByteLengthInt32Result
   1407  shared: true
   1408  transpile: true
   1409  cost_estimate: 2
   1410  args:
   1411    obj: ObjId
   1412 
   1413 - name: GrowableSharedArrayBufferByteLengthDoubleResult
   1414  shared: true
   1415  transpile: true
   1416  cost_estimate: 2
   1417  args:
   1418    obj: ObjId
   1419 
   1420 - name: GuardHasAttachedArrayBuffer
   1421  shared: true
   1422  transpile: true
   1423  cost_estimate: 2
   1424  args:
   1425    obj: ObjId
   1426 
   1427 - name: GuardResizableArrayBufferViewInBounds
   1428  shared: true
   1429  transpile: true
   1430  cost_estimate: 2
   1431  args:
   1432    obj: ObjId
   1433 
   1434 - name: GuardResizableArrayBufferViewInBoundsOrDetached
   1435  shared: true
   1436  transpile: true
   1437  cost_estimate: 2
   1438  args:
   1439    obj: ObjId
   1440 
   1441 - name: TypedArrayFillResult
   1442  shared: true
   1443  transpile: true
   1444  cost_estimate: 4
   1445  args:
   1446    obj: ObjId
   1447    fillValue: RawId
   1448    start: IntPtrId
   1449    end: IntPtrId
   1450    elementType: ScalarTypeImm
   1451 
   1452 - name: TypedArraySetResult
   1453  shared: true
   1454  transpile: true
   1455  cost_estimate: 4
   1456  args:
   1457    target: ObjId
   1458    source: ObjId
   1459    offset: IntPtrId
   1460    canUseBitwiseCopy: BoolImm
   1461 
   1462 - name: TypedArraySubarrayResult
   1463  shared: true
   1464  transpile: true
   1465  cost_estimate: 5
   1466  args:
   1467    templateObject: ObjectField
   1468    obj: ObjId
   1469    start: IntPtrId
   1470    end: IntPtrId
   1471 
   1472 - name: NewArrayIteratorResult
   1473  shared: true
   1474  transpile: true
   1475  cost_estimate: 5
   1476  args:
   1477    templateObject: ObjectField
   1478 
   1479 - name: NewStringIteratorResult
   1480  shared: true
   1481  transpile: true
   1482  cost_estimate: 5
   1483  args:
   1484    templateObject: ObjectField
   1485 
   1486 - name: NewRegExpStringIteratorResult
   1487  shared: true
   1488  transpile: true
   1489  cost_estimate: 5
   1490  args:
   1491    templateObject: ObjectField
   1492 
   1493 - name: ObjectCreateResult
   1494  shared: true
   1495  transpile: true
   1496  cost_estimate: 5
   1497  args:
   1498    templateObject: ObjectField
   1499 
   1500 - name: NewArrayFromLengthResult
   1501  shared: true
   1502  transpile: true
   1503  cost_estimate: 5
   1504  args:
   1505    templateObject: ObjectField
   1506    length: Int32Id
   1507    site: AllocSiteField
   1508 
   1509 - name: NewTypedArrayFromLengthResult
   1510  shared: true
   1511  transpile: true
   1512  cost_estimate: 5
   1513  args:
   1514    templateObject: ObjectField
   1515    length: Int32Id
   1516 
   1517 - name: NewTypedArrayFromArrayBufferResult
   1518  shared: true
   1519  transpile: true
   1520  cost_estimate: 5
   1521  args:
   1522    templateObject: ObjectField
   1523    buffer: ObjId
   1524    byteOffset: ValId
   1525    length: ValId
   1526 
   1527 - name: NewTypedArrayFromArrayResult
   1528  shared: true
   1529  transpile: true
   1530  cost_estimate: 5
   1531  args:
   1532    templateObject: ObjectField
   1533    array: ObjId
   1534 
   1535 - name: NewMapObjectResult
   1536  shared: true
   1537  transpile: true
   1538  cost_estimate: 5
   1539  args:
   1540    templateObject: ObjectField
   1541 
   1542 - name: NewSetObjectResult
   1543  shared: true
   1544  transpile: true
   1545  cost_estimate: 5
   1546  args:
   1547    templateObject: ObjectField
   1548 
   1549 - name: NewMapObjectFromIterableResult
   1550  shared: true
   1551  transpile: true
   1552  cost_estimate: 5
   1553  args:
   1554    templateObject: ObjectField
   1555    iterable: ValId
   1556 
   1557 - name: NewSetObjectFromIterableResult
   1558  shared: true
   1559  transpile: true
   1560  cost_estimate: 5
   1561  args:
   1562    templateObject: ObjectField
   1563    iterable: ValId
   1564 
   1565 - name: NewStringObjectResult
   1566  shared: true
   1567  transpile: true
   1568  cost_estimate: 5
   1569  args:
   1570    templateObject: ObjectField
   1571    str: StringId
   1572 
   1573 - name: StringFromCharCodeResult
   1574  shared: false
   1575  transpile: true
   1576  cost_estimate: 5
   1577  args:
   1578    code: Int32Id
   1579 
   1580 - name: StringFromCodePointResult
   1581  shared: false
   1582  transpile: true
   1583  cost_estimate: 5
   1584  args:
   1585    code: Int32Id
   1586 
   1587 - name: StringIncludesResult
   1588  shared: true
   1589  transpile: true
   1590  cost_estimate: 5
   1591  args:
   1592    str: StringId
   1593    searchStr: StringId
   1594 
   1595 - name: StringIndexOfResult
   1596  shared: true
   1597  transpile: true
   1598  cost_estimate: 5
   1599  args:
   1600    str: StringId
   1601    searchStr: StringId
   1602 
   1603 - name: StringLastIndexOfResult
   1604  shared: true
   1605  transpile: true
   1606  cost_estimate: 5
   1607  args:
   1608    str: StringId
   1609    searchStr: StringId
   1610 
   1611 - name: StringStartsWithResult
   1612  shared: true
   1613  transpile: true
   1614  cost_estimate: 5
   1615  args:
   1616    str: StringId
   1617    searchStr: StringId
   1618 
   1619 - name: StringEndsWithResult
   1620  shared: true
   1621  transpile: true
   1622  cost_estimate: 5
   1623  args:
   1624    str: StringId
   1625    searchStr: StringId
   1626 
   1627 - name: StringToLowerCaseResult
   1628  shared: true
   1629  transpile: true
   1630  cost_estimate: 5
   1631  args:
   1632    str: StringId
   1633 
   1634 - name: StringToUpperCaseResult
   1635  shared: true
   1636  transpile: true
   1637  cost_estimate: 5
   1638  args:
   1639    str: StringId
   1640 
   1641 - name: StringTrimResult
   1642  shared: true
   1643  transpile: true
   1644  cost_estimate: 5
   1645  args:
   1646    str: StringId
   1647 
   1648 - name: StringTrimStartResult
   1649  shared: true
   1650  transpile: true
   1651  cost_estimate: 5
   1652  args:
   1653    str: StringId
   1654 
   1655 - name: StringTrimEndResult
   1656  shared: true
   1657  transpile: true
   1658  cost_estimate: 5
   1659  args:
   1660    str: StringId
   1661 
   1662 - name: MathAbsInt32Result
   1663  shared: true
   1664  transpile: true
   1665  cost_estimate: 2
   1666  args:
   1667    input: Int32Id
   1668 
   1669 - name: MathAbsNumberResult
   1670  shared: true
   1671  transpile: true
   1672  cost_estimate: 1
   1673  args:
   1674    input: NumberId
   1675 
   1676 - name: MathClz32Result
   1677  shared: true
   1678  transpile: true
   1679  cost_estimate: 1
   1680  args:
   1681    input: Int32Id
   1682 
   1683 - name: MathSignInt32Result
   1684  shared: true
   1685  transpile: true
   1686  cost_estimate: 1
   1687  args:
   1688    input: Int32Id
   1689 
   1690 - name: MathSignNumberResult
   1691  shared: true
   1692  transpile: true
   1693  cost_estimate: 2
   1694  args:
   1695    input: NumberId
   1696 
   1697 - name: MathSignNumberToInt32Result
   1698  shared: true
   1699  transpile: true
   1700  cost_estimate: 2
   1701  args:
   1702    input: NumberId
   1703 
   1704 - name: MathImulResult
   1705  shared: true
   1706  transpile: true
   1707  cost_estimate: 1
   1708  args:
   1709    lhs: Int32Id
   1710    rhs: Int32Id
   1711 
   1712 - name: MathSqrtNumberResult
   1713  shared: true
   1714  transpile: true
   1715  cost_estimate: 1
   1716  args:
   1717    input: NumberId
   1718 
   1719 - name: MathFRoundNumberResult
   1720  shared: true
   1721  transpile: true
   1722  cost_estimate: 1
   1723  args:
   1724    input: NumberId
   1725 
   1726 - name: MathF16RoundNumberResult
   1727  shared: true
   1728  transpile: true
   1729  cost_estimate: 4
   1730  args:
   1731    input: NumberId
   1732 
   1733 # Because Baseline stub code is shared by all realms in the Zone, this
   1734 # instruction loads a pointer to the RNG from a stub field.
   1735 - name: MathRandomResult
   1736  shared: true
   1737  transpile: true
   1738  cost_estimate: 3
   1739  args:
   1740    rng: RawPointerField
   1741 
   1742 - name: MathHypot2NumberResult
   1743  shared: true
   1744  transpile: true
   1745  cost_estimate: 4
   1746  args:
   1747    first: NumberId
   1748    second: NumberId
   1749 
   1750 - name: MathHypot3NumberResult
   1751  shared: true
   1752  transpile: true
   1753  cost_estimate: 4
   1754  args:
   1755    first: NumberId
   1756    second: NumberId
   1757    third: NumberId
   1758 
   1759 - name: MathHypot4NumberResult
   1760  shared: true
   1761  transpile: true
   1762  cost_estimate: 4
   1763  args:
   1764    first: NumberId
   1765    second: NumberId
   1766    third: NumberId
   1767    fourth: NumberId
   1768 
   1769 - name: MathAtan2NumberResult
   1770  shared: true
   1771  transpile: true
   1772  cost_estimate: 4
   1773  args:
   1774    lhs: NumberId
   1775    rhs: NumberId
   1776 
   1777 - name: MathFloorNumberResult
   1778  shared: true
   1779  transpile: true
   1780  cost_estimate: 4
   1781  args:
   1782    input: NumberId
   1783 
   1784 - name: MathCeilNumberResult
   1785  shared: true
   1786  transpile: true
   1787  cost_estimate: 4
   1788  args:
   1789    input: NumberId
   1790 
   1791 - name: MathTruncNumberResult
   1792  shared: true
   1793  transpile: true
   1794  cost_estimate: 4
   1795  args:
   1796    input: NumberId
   1797 
   1798 - name: MathRoundNumberResult
   1799  shared: true
   1800  transpile: true
   1801  cost_estimate: 4
   1802  args:
   1803    input: NumberId
   1804 
   1805 - name: MathFloorToInt32Result
   1806  shared: true
   1807  transpile: true
   1808  cost_estimate: 3
   1809  args:
   1810    input: NumberId
   1811 
   1812 - name: MathCeilToInt32Result
   1813  shared: true
   1814  transpile: true
   1815  cost_estimate: 1
   1816  args:
   1817    input: NumberId
   1818 
   1819 - name: MathTruncToInt32Result
   1820  shared: true
   1821  transpile: true
   1822  args:
   1823    input: NumberId
   1824 
   1825 - name: MathRoundToInt32Result
   1826  shared: true
   1827  transpile: true
   1828  cost_estimate: 1
   1829  args:
   1830    input: NumberId
   1831 
   1832 - name: Int32MinMax
   1833  shared: true
   1834  transpile: true
   1835  cost_estimate: 1
   1836  args:
   1837    isMax: BoolImm
   1838    first: Int32Id
   1839    second: Int32Id
   1840    result: Int32Id
   1841 
   1842 - name: NumberMinMax
   1843  shared: true
   1844  transpile: true
   1845  cost_estimate: 1
   1846  args:
   1847    isMax: BoolImm
   1848    first: NumberId
   1849    second: NumberId
   1850    result: NumberId
   1851 
   1852 - name: Int32MinMaxArrayResult
   1853  shared: true
   1854  transpile: true
   1855  cost_estimate: 3
   1856  args:
   1857    array: ObjId
   1858    isMax: BoolImm
   1859 
   1860 - name: NumberMinMaxArrayResult
   1861  shared: true
   1862  transpile: true
   1863  cost_estimate: 3
   1864  args:
   1865    array: ObjId
   1866    isMax: BoolImm
   1867 
   1868 - name: MathFunctionNumberResult
   1869  shared: true
   1870  transpile: true
   1871  cost_estimate: 4
   1872  args:
   1873    input: NumberId
   1874    fun: UnaryMathFunctionImm
   1875 
   1876 - name: NumberParseIntResult
   1877  shared: true
   1878  transpile: true
   1879  cost_estimate: 5
   1880  args:
   1881    str: StringId
   1882    radix: Int32Id
   1883 
   1884 - name: DoubleParseIntResult
   1885  shared: true
   1886  transpile: true
   1887  cost_estimate: 2
   1888  args:
   1889    num: NumberId
   1890 
   1891 - name: ObjectToStringResult
   1892  shared: true
   1893  transpile: true
   1894  cost_estimate: 4
   1895  args:
   1896    obj: ObjId
   1897 
   1898 - name: ReflectGetPrototypeOfResult
   1899  shared: false
   1900  transpile: true
   1901  cost_estimate: 5
   1902  args:
   1903    obj: ObjId
   1904 
   1905 - name: StoreTypedArrayElement
   1906  shared: true
   1907  transpile: true
   1908  cost_estimate: 3
   1909  args:
   1910    obj: ObjId
   1911    elementType: ScalarTypeImm
   1912    index: IntPtrId
   1913    rhs: RawId
   1914    handleOOB: BoolImm
   1915    viewKind: ArrayBufferViewKindImm
   1916 
   1917 - name: AtomicsCompareExchangeResult
   1918  shared: true
   1919  transpile: true
   1920  cost_estimate: 4
   1921  args:
   1922    obj: ObjId
   1923    index: IntPtrId
   1924    expected: RawId
   1925    replacement: RawId
   1926    elementType: ScalarTypeImm
   1927    viewKind: ArrayBufferViewKindImm
   1928 
   1929 - name: AtomicsExchangeResult
   1930  shared: true
   1931  transpile: true
   1932  cost_estimate: 4
   1933  args:
   1934    obj: ObjId
   1935    index: IntPtrId
   1936    value: RawId
   1937    elementType: ScalarTypeImm
   1938    viewKind: ArrayBufferViewKindImm
   1939 
   1940 - name: AtomicsAddResult
   1941  shared: true
   1942  transpile: true
   1943  cost_estimate: 4
   1944  args:
   1945    obj: ObjId
   1946    index: IntPtrId
   1947    value: RawId
   1948    elementType: ScalarTypeImm
   1949    forEffect: BoolImm
   1950    viewKind: ArrayBufferViewKindImm
   1951 
   1952 - name: AtomicsSubResult
   1953  shared: true
   1954  transpile: true
   1955  cost_estimate: 4
   1956  args:
   1957    obj: ObjId
   1958    index: IntPtrId
   1959    value: RawId
   1960    elementType: ScalarTypeImm
   1961    forEffect: BoolImm
   1962    viewKind: ArrayBufferViewKindImm
   1963 
   1964 - name: AtomicsAndResult
   1965  shared: true
   1966  transpile: true
   1967  cost_estimate: 4
   1968  args:
   1969    obj: ObjId
   1970    index: IntPtrId
   1971    value: RawId
   1972    elementType: ScalarTypeImm
   1973    forEffect: BoolImm
   1974    viewKind: ArrayBufferViewKindImm
   1975 
   1976 - name: AtomicsOrResult
   1977  shared: true
   1978  transpile: true
   1979  cost_estimate: 4
   1980  args:
   1981    obj: ObjId
   1982    index: IntPtrId
   1983    value: RawId
   1984    elementType: ScalarTypeImm
   1985    forEffect: BoolImm
   1986    viewKind: ArrayBufferViewKindImm
   1987 
   1988 - name: AtomicsXorResult
   1989  shared: true
   1990  transpile: true
   1991  cost_estimate: 4
   1992  args:
   1993    obj: ObjId
   1994    index: IntPtrId
   1995    value: RawId
   1996    elementType: ScalarTypeImm
   1997    forEffect: BoolImm
   1998    viewKind: ArrayBufferViewKindImm
   1999 
   2000 - name: AtomicsLoadResult
   2001  shared: true
   2002  transpile: true
   2003  cost_estimate: 2
   2004  args:
   2005    obj: ObjId
   2006    index: IntPtrId
   2007    elementType: ScalarTypeImm
   2008    viewKind: ArrayBufferViewKindImm
   2009 
   2010 - name: AtomicsStoreResult
   2011  shared: true
   2012  transpile: true
   2013  cost_estimate: 2
   2014  args:
   2015    obj: ObjId
   2016    index: IntPtrId
   2017    value: RawId
   2018    elementType: ScalarTypeImm
   2019    viewKind: ArrayBufferViewKindImm
   2020 
   2021 - name: AtomicsIsLockFreeResult
   2022  shared: true
   2023  transpile: true
   2024  cost_estimate: 1
   2025  args:
   2026    value: Int32Id
   2027 
   2028 - name: AtomicsPauseResult
   2029  shared: true
   2030  transpile: true
   2031  cost_estimate: 1
   2032  args:
   2033 
   2034 - name: CallNativeSetter
   2035  shared: false
   2036  transpile: true
   2037  cost_estimate: 5
   2038  custom_writer: true
   2039  args:
   2040    receiver: ObjId
   2041    setter: ObjectField
   2042    rhs: ValId
   2043    sameRealm: BoolImm
   2044    nargsAndFlags: RawInt32Field
   2045 
   2046 - name: CallScriptedSetter
   2047  shared: false
   2048  transpile: true
   2049  cost_estimate: 3
   2050  custom_writer: true
   2051  args:
   2052    receiver: ObjId
   2053    callee: ObjId
   2054    rhs: ValId
   2055    sameRealm: BoolImm
   2056    nargsAndFlags: RawInt32Field
   2057 
   2058 - name: CallInlinedSetter
   2059  shared: false
   2060  transpile: true
   2061  cost_estimate: 3
   2062  custom_writer: true
   2063  args:
   2064    receiver: ObjId
   2065    callee: ObjId
   2066    rhs: ValId
   2067    icScript: RawPointerField
   2068    sameRealm: BoolImm
   2069    nargsAndFlags: RawInt32Field
   2070 
   2071 - name: CallDOMSetter
   2072  shared: false
   2073  transpile: true
   2074  cost_estimate: 4
   2075  args:
   2076    obj: ObjId
   2077    jitInfo: RawPointerField
   2078    rhs: ValId
   2079 
   2080 - name: CallSetArrayLength
   2081  shared: false
   2082  transpile: true
   2083  cost_estimate: 5
   2084  args:
   2085    obj: ObjId
   2086    strict: BoolImm
   2087    rhs: ValId
   2088 
   2089 - name: ProxySet
   2090  shared: false
   2091  transpile: true
   2092  cost_estimate: 5
   2093  args:
   2094    obj: ObjId
   2095    id: IdField
   2096    rhs: ValId
   2097    strict: BoolImm
   2098 
   2099 - name: ProxySetByValue
   2100  shared: false
   2101  transpile: true
   2102  cost_estimate: 5
   2103  args:
   2104    obj: ObjId
   2105    id: ValId
   2106    rhs: ValId
   2107    strict: BoolImm
   2108 
   2109 - name: CallAddOrUpdateSparseElementHelper
   2110  shared: false
   2111  transpile: true
   2112  cost_estimate: 5
   2113  args:
   2114    obj: ObjId
   2115    id: Int32Id
   2116    rhs: ValId
   2117    strict: BoolImm
   2118 
   2119 - name: CallInt32ToString
   2120  shared: true
   2121  transpile: true
   2122  cost_estimate: 4
   2123  args:
   2124    input: Int32Id
   2125    result: StringId
   2126 
   2127 - name: CallNumberToString
   2128  shared: true
   2129  transpile: true
   2130  cost_estimate: 4
   2131  args:
   2132    input: NumberId
   2133    result: StringId
   2134 
   2135 - name: Int32ToStringWithBaseResult
   2136  shared: true
   2137  transpile: true
   2138  cost_estimate: 3
   2139  args:
   2140    input: Int32Id
   2141    base: Int32Id
   2142 
   2143 - name: BooleanToString
   2144  shared: true
   2145  transpile: true
   2146  cost_estimate: 2
   2147  args:
   2148    input: BooleanId
   2149    result: StringId
   2150 
   2151 - name: CallScriptedFunction
   2152  shared: false
   2153  transpile: true
   2154  cost_estimate: 3
   2155  custom_writer: true
   2156  args:
   2157    callee: ObjId
   2158    argc: Int32Id
   2159    flags: CallFlagsImm
   2160    argcFixed: UInt32Imm
   2161 
   2162 - name: CallBoundScriptedFunction
   2163  shared: false
   2164  transpile: true
   2165  cost_estimate: 3
   2166  args:
   2167    callee: ObjId
   2168    target: ObjId
   2169    argc: Int32Id
   2170    flags: CallFlagsImm
   2171    numBoundArgs: UInt32Imm
   2172 
   2173 - name: CallWasmFunction
   2174  shared: false
   2175  transpile: true
   2176  cost_estimate: 3
   2177  args:
   2178    callee: ObjId
   2179    argc: Int32Id
   2180    flags: CallFlagsImm
   2181    argcFixed: UInt32Imm
   2182    funcType: RawPointerField
   2183    instance: ObjectField
   2184 
   2185 - name: GuardWasmArg
   2186  shared: true
   2187  transpile: true
   2188  cost_estimate: 2
   2189  args:
   2190    arg: ValId
   2191    type: WasmValTypeImm
   2192 
   2193 - name: CallNativeFunction
   2194  shared: false
   2195  transpile: true
   2196  cost_estimate: 4
   2197  custom_writer: true
   2198  args:
   2199    callee: ObjId
   2200    argc: Int32Id
   2201    flags: CallFlagsImm
   2202    argcFixed: UInt32Imm
   2203 #ifdef JS_SIMULATOR
   2204    target: RawPointerField
   2205 #else
   2206    ignoresReturnValue: BoolImm
   2207 #endif
   2208 
   2209 - name: CallDOMFunction
   2210  shared: false
   2211  transpile: true
   2212  cost_estimate: 4
   2213  custom_writer: true
   2214  args:
   2215    callee: ObjId
   2216    argc: Int32Id
   2217    thisObj: ObjId
   2218    flags: CallFlagsImm
   2219    argcFixed: UInt32Imm
   2220 #ifdef JS_SIMULATOR
   2221    target: RawPointerField
   2222 #endif
   2223 
   2224 - name: CallDOMFunctionWithAllocSite
   2225  shared: false
   2226  transpile: true
   2227  cost_estimate: 4
   2228  custom_writer: true
   2229  args:
   2230    callee: ObjId
   2231    argc: Int32Id
   2232    thisObj: ObjId
   2233    flags: CallFlagsImm
   2234    argcFixed: UInt32Imm
   2235    site: AllocSiteField
   2236 #ifdef JS_SIMULATOR
   2237    target: RawPointerField
   2238 #endif
   2239 
   2240 - name: CallClassHook
   2241  shared: false
   2242  transpile: true
   2243  cost_estimate: 4
   2244  custom_writer: true
   2245  args:
   2246    callee: ObjId
   2247    argc: Int32Id
   2248    flags: CallFlagsImm
   2249    argcFixed: UInt32Imm
   2250    target: RawPointerField
   2251 
   2252 - name: CallInlinedFunction
   2253  shared: false
   2254  transpile: true
   2255  cost_estimate: 4
   2256  custom_writer: true
   2257  args:
   2258    callee: ObjId
   2259    argc: Int32Id
   2260    icScript: RawPointerField
   2261    flags: CallFlagsImm
   2262    argcFixed: UInt32Imm
   2263 
   2264 #ifdef JS_PUNBOX64
   2265 - name: CallScriptedProxyGetResult
   2266  shared: false
   2267  transpile: true
   2268  cost_estimate: 4
   2269  custom_writer: true
   2270  args:
   2271    target: ValId
   2272    receiver: ObjId
   2273    handler: ObjId
   2274    trap: ObjId
   2275    property: IdField
   2276    nargsAndFlags: UInt32Imm
   2277 
   2278 - name: CallScriptedProxyGetByValueResult
   2279  shared: false
   2280  transpile: true
   2281  cost_estimate: 4
   2282  custom_writer: true
   2283  args:
   2284    target: ValId
   2285    receiver: ObjId
   2286    handler: ObjId
   2287    property: ValId
   2288    trap: ObjId
   2289    nargsAndFlags: UInt32Imm
   2290  #endif
   2291 
   2292 # Meta ops generate no code, but contain data for the Warp Transpiler.
   2293 - name: MetaScriptedThisShape
   2294  shared: true
   2295  transpile: true
   2296  cost_estimate: 0
   2297  custom_writer: true
   2298  args:
   2299    thisShape: ShapeField
   2300 
   2301 - name: BindFunctionResult
   2302  shared: true
   2303  transpile: true
   2304  cost_estimate: 5
   2305  args:
   2306    target: ObjId
   2307    argc: UInt32Imm
   2308    templateObject: ObjectField
   2309 
   2310 - name: SpecializedBindFunctionResult
   2311  shared: true
   2312  transpile: true
   2313  cost_estimate: 4
   2314  args:
   2315    target: ObjId
   2316    argc: UInt32Imm
   2317    templateObject: ObjectField
   2318 
   2319 - name: LoadFixedSlotResult
   2320  shared: false
   2321  transpile: true
   2322  cost_estimate: 1
   2323  args:
   2324    obj: ObjId
   2325    offset: RawInt32Field
   2326 
   2327 - name: LoadFixedSlotTypedResult
   2328  shared: false
   2329  transpile: true
   2330  cost_estimate: 1
   2331  args:
   2332    obj: ObjId
   2333    offset: RawInt32Field
   2334    type: ValueTypeImm
   2335 
   2336 - name: LoadDynamicSlotResult
   2337  shared: false
   2338  transpile: true
   2339  cost_estimate: 1
   2340  args:
   2341    obj: ObjId
   2342    offset: RawInt32Field
   2343 
   2344 - name: LoadDenseElementResult
   2345  shared: true
   2346  transpile: true
   2347  cost_estimate: 2
   2348  args:
   2349    obj: ObjId
   2350    index: Int32Id
   2351    expectPackedElements: BoolImm
   2352 
   2353 - name: LoadDenseElementHoleResult
   2354  shared: true
   2355  transpile: true
   2356  cost_estimate: 2
   2357  args:
   2358    obj: ObjId
   2359    index: Int32Id
   2360 
   2361 - name: CallGetSparseElementResult
   2362  shared: true
   2363  transpile: true
   2364  cost_estimate: 5
   2365  args:
   2366    obj: ObjId
   2367    index: Int32Id
   2368 
   2369 - name: LoadDenseElementExistsResult
   2370  shared: true
   2371  transpile: true
   2372  cost_estimate: 1
   2373  args:
   2374    obj: ObjId
   2375    index: Int32Id
   2376 
   2377 - name: LoadTypedArrayElementExistsResult
   2378  shared: true
   2379  transpile: true
   2380  cost_estimate: 2
   2381  args:
   2382    obj: ObjId
   2383    index: IntPtrId
   2384    viewKind: ArrayBufferViewKindImm
   2385 
   2386 - name: LoadDenseElementHoleExistsResult
   2387  shared: true
   2388  transpile: true
   2389  cost_estimate: 2
   2390  args:
   2391    obj: ObjId
   2392    index: Int32Id
   2393 
   2394 - name: LoadTypedArrayElementResult
   2395  shared: true
   2396  transpile: true
   2397  cost_estimate: 4
   2398  args:
   2399    obj: ObjId
   2400    index: IntPtrId
   2401    elementType: ScalarTypeImm
   2402    handleOOB: BoolImm
   2403    forceDoubleForUint32: BoolImm
   2404    viewKind: ArrayBufferViewKindImm
   2405 
   2406 - name: LoadDataViewValueResult
   2407  shared: true
   2408  transpile: true
   2409  cost_estimate: 4
   2410  args:
   2411    obj: ObjId
   2412    offset: IntPtrId
   2413    littleEndian: BooleanId
   2414    elementType: ScalarTypeImm
   2415    forceDoubleForUint32: BoolImm
   2416    viewKind: ArrayBufferViewKindImm
   2417 
   2418 - name: StoreDataViewValueResult
   2419  shared: true
   2420  transpile: true
   2421  cost_estimate: 4
   2422  args:
   2423    obj: ObjId
   2424    offset: IntPtrId
   2425    value: RawId
   2426    littleEndian: BooleanId
   2427    elementType: ScalarTypeImm
   2428    viewKind: ArrayBufferViewKindImm
   2429 
   2430 - name: LoadInt32ArrayLengthResult
   2431  shared: true
   2432  transpile: true
   2433  cost_estimate: 1
   2434  args:
   2435    obj: ObjId
   2436 
   2437 - name: LoadInt32ArrayLength
   2438  shared: true
   2439  transpile: true
   2440  cost_estimate: 1
   2441  args:
   2442    obj: ObjId
   2443    result: Int32Id
   2444 
   2445 - name: LoadArgumentsObjectArgResult
   2446  shared: true
   2447  transpile: true
   2448  cost_estimate: 2
   2449  args:
   2450    obj: ObjId
   2451    index: Int32Id
   2452 
   2453 - name: LoadArgumentsObjectArgHoleResult
   2454  shared: true
   2455  transpile: true
   2456  cost_estimate: 2
   2457  args:
   2458    obj: ObjId
   2459    index: Int32Id
   2460 
   2461 - name: LoadArgumentsObjectArgExistsResult
   2462  shared: true
   2463  transpile: true
   2464  cost_estimate: 2
   2465  args:
   2466    obj: ObjId
   2467    index: Int32Id
   2468 
   2469 - name: LoadArgumentsObjectLengthResult
   2470  shared: true
   2471  transpile: true
   2472  cost_estimate: 1
   2473  args:
   2474    obj: ObjId
   2475 
   2476 - name: LoadArgumentsObjectLength
   2477  shared: true
   2478  transpile: true
   2479  cost_estimate: 1
   2480  args:
   2481    obj: ObjId
   2482    result: Int32Id
   2483 
   2484 - name: LoadFunctionLengthResult
   2485  shared: true
   2486  transpile: true
   2487  cost_estimate: 2
   2488  args:
   2489    obj: ObjId
   2490 
   2491 - name: LoadFunctionNameResult
   2492  shared: true
   2493  transpile: true
   2494  cost_estimate: 2
   2495  args:
   2496    obj: ObjId
   2497 
   2498 - name: LoadBoundFunctionNumArgs
   2499  shared: true
   2500  transpile: true
   2501  cost_estimate: 1
   2502  args:
   2503    obj: ObjId
   2504    result: Int32Id
   2505 
   2506 - name: LoadBoundFunctionTarget
   2507  shared: true
   2508  transpile: true
   2509  cost_estimate: 1
   2510  args:
   2511    obj: ObjId
   2512    result: ObjId
   2513 
   2514 - name: LoadBoundFunctionArgument
   2515  shared: true
   2516  transpile: true
   2517  cost_estimate: 2
   2518  args:
   2519    obj: ObjId
   2520    index: UInt32Imm
   2521    result: ValId
   2522 
   2523 - name: GuardBoundFunctionIsConstructor
   2524  shared: true
   2525  transpile: true
   2526  cost_estimate: 1
   2527  args:
   2528    obj: ObjId
   2529 
   2530 - name: LoadArrayBufferByteLengthInt32Result
   2531  shared: true
   2532  transpile: true
   2533  cost_estimate: 1
   2534  args:
   2535    obj: ObjId
   2536 
   2537 - name: LoadArrayBufferByteLengthDoubleResult
   2538  shared: true
   2539  transpile: true
   2540  cost_estimate: 1
   2541  args:
   2542    obj: ObjId
   2543 
   2544 - name: LoadArrayBufferViewLengthInt32Result
   2545  shared: true
   2546  transpile: true
   2547  cost_estimate: 1
   2548  args:
   2549    obj: ObjId
   2550 
   2551 - name: LoadArrayBufferViewLengthDoubleResult
   2552  shared: true
   2553  transpile: true
   2554  cost_estimate: 1
   2555  args:
   2556    obj: ObjId
   2557 
   2558 - name: LoadArrayBufferViewLength
   2559  shared: true
   2560  transpile: true
   2561  cost_estimate: 1
   2562  args:
   2563    obj: ObjId
   2564    result: IntPtrId
   2565 
   2566 - name: LinearizeForCharAccess
   2567  shared: true
   2568  transpile: true
   2569  cost_estimate: 4
   2570  args:
   2571    str: StringId
   2572    index: Int32Id
   2573    result: StringId
   2574 
   2575 - name: LinearizeForCodePointAccess
   2576  shared: true
   2577  transpile: true
   2578  cost_estimate: 4
   2579  args:
   2580    str: StringId
   2581    index: Int32Id
   2582    result: StringId
   2583 
   2584 - name: ToRelativeStringIndex
   2585  shared: true
   2586  transpile: true
   2587  cost_estimate: 1
   2588  args:
   2589    index: Int32Id
   2590    str: StringId
   2591    result: Int32Id
   2592 
   2593 - name: LoadStringCharResult
   2594  shared: false
   2595  transpile: true
   2596  cost_estimate: 5
   2597  args:
   2598    str: StringId
   2599    index: Int32Id
   2600    handleOOB: BoolImm
   2601 
   2602 - name: LoadStringAtResult
   2603  shared: false
   2604  transpile: true
   2605  cost_estimate: 5
   2606  args:
   2607    str: StringId
   2608    index: Int32Id
   2609    handleOOB: BoolImm
   2610 
   2611 - name: LoadStringCharCodeResult
   2612  shared: true
   2613  transpile: true
   2614  cost_estimate: 3
   2615  args:
   2616    str: StringId
   2617    index: Int32Id
   2618    handleOOB: BoolImm
   2619 
   2620 - name: LoadStringCodePointResult
   2621  shared: true
   2622  transpile: true
   2623  cost_estimate: 3
   2624  args:
   2625    str: StringId
   2626    index: Int32Id
   2627    handleOOB: BoolImm
   2628 
   2629 - name: LoadStringLengthResult
   2630  shared: true
   2631  transpile: true
   2632  cost_estimate: 1
   2633  args:
   2634    str: StringId
   2635 
   2636 - name: FrameIsConstructingResult
   2637  shared: false
   2638  transpile: true
   2639  cost_estimate: 1
   2640  args:
   2641 
   2642 - name: LoadObjectResult
   2643  shared: true
   2644  transpile: true
   2645  cost_estimate: 1
   2646  args:
   2647    obj: ObjId
   2648 
   2649 - name: LoadStringResult
   2650  shared: true
   2651  transpile: true
   2652  cost_estimate: 1
   2653  args:
   2654    str: StringId
   2655 
   2656 - name: LoadSymbolResult
   2657  shared: true
   2658  transpile: true
   2659  cost_estimate: 1
   2660  args:
   2661    sym: SymbolId
   2662 
   2663 - name: LoadInt32Result
   2664  shared: true
   2665  transpile: true
   2666  cost_estimate: 1
   2667  args:
   2668    val: Int32Id
   2669 
   2670 - name: LoadDoubleResult
   2671  shared: true
   2672  transpile: true
   2673  cost_estimate: 2
   2674  args:
   2675    val: NumberId
   2676 
   2677 - name: LoadBigIntResult
   2678  shared: true
   2679  transpile: true
   2680  cost_estimate: 1
   2681  args:
   2682    val: BigIntId
   2683 
   2684 - name: CallScriptedGetterResult
   2685  shared: false
   2686  transpile: true
   2687  cost_estimate: 5
   2688  custom_writer: true
   2689  args:
   2690    receiver: ValId
   2691    callee: ObjId
   2692    sameRealm: BoolImm
   2693    nargsAndFlags: RawInt32Field
   2694 
   2695 - name: CallInlinedGetterResult
   2696  shared: false
   2697  transpile: true
   2698  cost_estimate: 5
   2699  custom_writer: true
   2700  args:
   2701    receiver: ValId
   2702    callee: ObjId
   2703    icScript: RawPointerField
   2704    sameRealm: BoolImm
   2705    nargsAndFlags: RawInt32Field
   2706 
   2707 - name: CallNativeGetterResult
   2708  shared: false
   2709  transpile: true
   2710  cost_estimate: 5
   2711  custom_writer: true
   2712  args:
   2713    receiver: ValId
   2714    getter: ObjectField
   2715    sameRealm: BoolImm
   2716    nargsAndFlags: RawInt32Field
   2717 
   2718 - name: CallDOMGetterResult
   2719  shared: false
   2720  transpile: true
   2721  cost_estimate: 4
   2722  args:
   2723    obj: ObjId
   2724    jitInfo: RawPointerField
   2725 
   2726 - name: ProxyGetResult
   2727  shared: false
   2728  transpile: true
   2729  cost_estimate: 5
   2730  args:
   2731    obj: ObjId
   2732    id: IdField
   2733 
   2734 - name: ProxyGetByValueResult
   2735  shared: true
   2736  transpile: true
   2737  cost_estimate: 5
   2738  args:
   2739    obj: ObjId
   2740    id: ValId
   2741 
   2742 - name: ProxyHasPropResult
   2743  shared: true
   2744  transpile: true
   2745  cost_estimate: 5
   2746  args:
   2747    obj: ObjId
   2748    id: ValId
   2749    hasOwn: BoolImm
   2750 
   2751 - name: CallObjectHasSparseElementResult
   2752  shared: true
   2753  transpile: true
   2754  cost_estimate: 4
   2755  args:
   2756    obj: ObjId
   2757    index: Int32Id
   2758 
   2759 - name: CallNativeGetElementResult
   2760  shared: true
   2761  transpile: true
   2762  cost_estimate: 5
   2763  args:
   2764    obj: ObjId
   2765    index: Int32Id
   2766 
   2767 - name: CallNativeGetElementSuperResult
   2768  shared: true
   2769  transpile: true
   2770  cost_estimate: 5
   2771  args:
   2772    obj: ObjId
   2773    index: Int32Id
   2774    receiver: ValId
   2775 
   2776 - name: GetNextMapSetEntryForIteratorResult
   2777  shared: true
   2778  transpile: true
   2779  cost_estimate: 4
   2780  args:
   2781    iter: ObjId
   2782    resultArr: ObjId
   2783    isMap: BoolImm
   2784 
   2785 - name: LoadUndefinedResult
   2786  shared: true
   2787  transpile: true
   2788  cost_estimate: 1
   2789  args:
   2790 
   2791 - name: LoadBooleanResult
   2792  shared: true
   2793  transpile: true
   2794  cost_estimate: 1
   2795  args:
   2796    val: BoolImm
   2797 
   2798 - name: LoadInt32Constant
   2799  shared: true
   2800  transpile: true
   2801  cost_estimate: 1
   2802  args:
   2803    val: RawInt32Field
   2804    result: Int32Id
   2805 
   2806 - name: LoadInt32AsIntPtrConstant
   2807  shared: true
   2808  transpile: true
   2809  cost_estimate: 1
   2810  args:
   2811    val: RawInt32Field
   2812    result: IntPtrId
   2813 
   2814 - name: LoadDoubleConstant
   2815  shared: true
   2816  transpile: true
   2817  cost_estimate: 1
   2818  args:
   2819    val: DoubleField
   2820    result: NumberId
   2821 
   2822 - name: LoadBooleanConstant
   2823  shared: true
   2824  transpile: true
   2825  cost_estimate: 1
   2826  args:
   2827    val: BoolImm
   2828    result: BooleanId
   2829 
   2830 - name: LoadUndefined
   2831  shared: true
   2832  transpile: true
   2833  cost_estimate: 1
   2834  args:
   2835    result: ValId
   2836 
   2837 - name: LoadConstantString
   2838  shared: true
   2839  transpile: true
   2840  cost_estimate: 1
   2841  args:
   2842    str: StringField
   2843    result: StringId
   2844 
   2845 - name: LoadConstantStringResult
   2846  shared: false
   2847  transpile: true
   2848  cost_estimate: 1
   2849  args:
   2850    str: StringField
   2851 
   2852 - name: LoadInstanceOfObjectResult
   2853  shared: true
   2854  transpile: true
   2855  cost_estimate: 3
   2856  args:
   2857    lhs: ValId
   2858    proto: ObjId
   2859 
   2860 - name: LoadTypeOfObjectResult
   2861  shared: true
   2862  transpile: true
   2863  cost_estimate: 4
   2864  args:
   2865    obj: ObjId
   2866 
   2867 - name: LoadTypeOfEqObjectResult
   2868  shared: true
   2869  transpile: true
   2870  cost_estimate: 4
   2871  args:
   2872    obj: ObjId
   2873    operand: TypeofEqOperandImm
   2874 
   2875 - name: DoubleAddResult
   2876  shared: true
   2877  transpile: true
   2878  cost_estimate: 2
   2879  args:
   2880    lhs: NumberId
   2881    rhs: NumberId
   2882 
   2883 - name: DoubleSubResult
   2884  shared: true
   2885  transpile: true
   2886  cost_estimate: 2
   2887  args:
   2888    lhs: NumberId
   2889    rhs: NumberId
   2890 
   2891 - name: DoubleMulResult
   2892  shared: true
   2893  transpile: true
   2894  cost_estimate: 2
   2895  args:
   2896    lhs: NumberId
   2897    rhs: NumberId
   2898 
   2899 - name: DoubleDivResult
   2900  shared: true
   2901  transpile: true
   2902  cost_estimate: 2
   2903  args:
   2904    lhs: NumberId
   2905    rhs: NumberId
   2906 
   2907 - name: DoubleModResult
   2908  shared: true
   2909  transpile: true
   2910  cost_estimate: 4
   2911  args:
   2912    lhs: NumberId
   2913    rhs: NumberId
   2914 
   2915 - name: DoublePowResult
   2916  shared: true
   2917  transpile: true
   2918  cost_estimate: 4
   2919  args:
   2920    lhs: NumberId
   2921    rhs: NumberId
   2922 
   2923 - name: Int32AddResult
   2924  shared: true
   2925  transpile: true
   2926  cost_estimate: 1
   2927  args:
   2928    lhs: Int32Id
   2929    rhs: Int32Id
   2930 
   2931 - name: Int32SubResult
   2932  shared: true
   2933  transpile: true
   2934  cost_estimate: 1
   2935  args:
   2936    lhs: Int32Id
   2937    rhs: Int32Id
   2938 
   2939 - name: Int32MulResult
   2940  shared: true
   2941  transpile: true
   2942  cost_estimate: 2
   2943  args:
   2944    lhs: Int32Id
   2945    rhs: Int32Id
   2946 
   2947 - name: Int32DivResult
   2948  shared: true
   2949  transpile: true
   2950  cost_estimate: 2
   2951  args:
   2952    lhs: Int32Id
   2953    rhs: Int32Id
   2954 
   2955 - name: Int32ModResult
   2956  shared: true
   2957  transpile: true
   2958  cost_estimate: 2
   2959  args:
   2960    lhs: Int32Id
   2961    rhs: Int32Id
   2962 
   2963 - name: Int32PowResult
   2964  shared: true
   2965  transpile: true
   2966  cost_estimate: 1
   2967  args:
   2968    lhs: Int32Id
   2969    rhs: Int32Id
   2970 
   2971 - name: BigIntAddResult
   2972  shared: true
   2973  transpile: true
   2974  cost_estimate: 5
   2975  args:
   2976    lhs: BigIntId
   2977    rhs: BigIntId
   2978 
   2979 - name: BigIntSubResult
   2980  shared: true
   2981  transpile: true
   2982  cost_estimate: 5
   2983  args:
   2984    lhs: BigIntId
   2985    rhs: BigIntId
   2986 
   2987 - name: BigIntMulResult
   2988  shared: true
   2989  transpile: true
   2990  cost_estimate: 5
   2991  args:
   2992    lhs: BigIntId
   2993    rhs: BigIntId
   2994 
   2995 - name: BigIntDivResult
   2996  shared: true
   2997  transpile: true
   2998  cost_estimate: 5
   2999  args:
   3000    lhs: BigIntId
   3001    rhs: BigIntId
   3002 
   3003 - name: BigIntModResult
   3004  shared: true
   3005  transpile: true
   3006  cost_estimate: 5
   3007  args:
   3008    lhs: BigIntId
   3009    rhs: BigIntId
   3010 
   3011 - name: BigIntPowResult
   3012  shared: true
   3013  transpile: true
   3014  cost_estimate: 5
   3015  args:
   3016    lhs: BigIntId
   3017    rhs: BigIntId
   3018 
   3019 - name: BigIntToIntPtr
   3020  shared: true
   3021  transpile: true
   3022  cost_estimate: 1
   3023  args:
   3024    input: BigIntId
   3025    result: IntPtrId
   3026 
   3027 - name: IntPtrToBigIntResult
   3028  shared: true
   3029  transpile: true
   3030  cost_estimate: 5
   3031  args:
   3032    input: IntPtrId
   3033 
   3034 - name: BigIntPtrAdd
   3035  shared: true
   3036  transpile: true
   3037  cost_estimate: 1
   3038  args:
   3039    lhs: IntPtrId
   3040    rhs: IntPtrId
   3041    result: IntPtrId
   3042 
   3043 - name: BigIntPtrSub
   3044  shared: true
   3045  transpile: true
   3046  cost_estimate: 1
   3047  args:
   3048    lhs: IntPtrId
   3049    rhs: IntPtrId
   3050    result: IntPtrId
   3051 
   3052 - name: BigIntPtrMul
   3053  shared: true
   3054  transpile: true
   3055  cost_estimate: 1
   3056  args:
   3057    lhs: IntPtrId
   3058    rhs: IntPtrId
   3059    result: IntPtrId
   3060 
   3061 - name: BigIntPtrDiv
   3062  shared: true
   3063  transpile: true
   3064  cost_estimate: 1
   3065  args:
   3066    lhs: IntPtrId
   3067    rhs: IntPtrId
   3068    result: IntPtrId
   3069 
   3070 - name: BigIntPtrMod
   3071  shared: true
   3072  transpile: true
   3073  cost_estimate: 1
   3074  args:
   3075    lhs: IntPtrId
   3076    rhs: IntPtrId
   3077    result: IntPtrId
   3078 
   3079 - name: BigIntPtrPow
   3080  shared: true
   3081  transpile: true
   3082  cost_estimate: 2
   3083  args:
   3084    lhs: IntPtrId
   3085    rhs: IntPtrId
   3086    result: IntPtrId
   3087 
   3088 - name: Int32BitOrResult
   3089  shared: true
   3090  transpile: true
   3091  cost_estimate: 1
   3092  args:
   3093    lhs: Int32Id
   3094    rhs: Int32Id
   3095 
   3096 - name: Int32BitXorResult
   3097  shared: true
   3098  transpile: true
   3099  cost_estimate: 1
   3100  args:
   3101    lhs: Int32Id
   3102    rhs: Int32Id
   3103 
   3104 - name: Int32BitAndResult
   3105  shared: true
   3106  transpile: true
   3107  cost_estimate: 1
   3108  args:
   3109    lhs: Int32Id
   3110    rhs: Int32Id
   3111 
   3112 - name: Int32LeftShiftResult
   3113  shared: true
   3114  transpile: true
   3115  cost_estimate: 1
   3116  args:
   3117    lhs: Int32Id
   3118    rhs: Int32Id
   3119 
   3120 - name: Int32RightShiftResult
   3121  shared: true
   3122  transpile: true
   3123  cost_estimate: 1
   3124  args:
   3125    lhs: Int32Id
   3126    rhs: Int32Id
   3127 
   3128 - name: Int32URightShiftResult
   3129  shared: true
   3130  transpile: true
   3131  cost_estimate: 2
   3132  args:
   3133    lhs: Int32Id
   3134    rhs: Int32Id
   3135    forceDouble: BoolImm
   3136 
   3137 - name: Int32NotResult
   3138  shared: true
   3139  transpile: true
   3140  cost_estimate: 1
   3141  args:
   3142    input: Int32Id
   3143 
   3144 - name: BigIntBitOrResult
   3145  shared: true
   3146  transpile: true
   3147  cost_estimate: 5
   3148  args:
   3149    lhs: BigIntId
   3150    rhs: BigIntId
   3151 
   3152 - name: BigIntBitXorResult
   3153  shared: true
   3154  transpile: true
   3155  cost_estimate: 5
   3156  args:
   3157    lhs: BigIntId
   3158    rhs: BigIntId
   3159 
   3160 - name: BigIntBitAndResult
   3161  shared: true
   3162  transpile: true
   3163  cost_estimate: 5
   3164  args:
   3165    lhs: BigIntId
   3166    rhs: BigIntId
   3167 
   3168 - name: BigIntLeftShiftResult
   3169  shared: true
   3170  transpile: true
   3171  cost_estimate: 5
   3172  args:
   3173    lhs: BigIntId
   3174    rhs: BigIntId
   3175 
   3176 - name: BigIntRightShiftResult
   3177  shared: true
   3178  transpile: true
   3179  cost_estimate: 5
   3180  args:
   3181    lhs: BigIntId
   3182    rhs: BigIntId
   3183 
   3184 - name: BigIntNotResult
   3185  shared: true
   3186  transpile: true
   3187  cost_estimate: 5
   3188  args:
   3189    input: BigIntId
   3190 
   3191 - name: BigIntPtrBitOr
   3192  shared: true
   3193  transpile: true
   3194  cost_estimate: 1
   3195  args:
   3196    lhs: IntPtrId
   3197    rhs: IntPtrId
   3198    result: IntPtrId
   3199 
   3200 - name: BigIntPtrBitXor
   3201  shared: true
   3202  transpile: true
   3203  cost_estimate: 1
   3204  args:
   3205    lhs: IntPtrId
   3206    rhs: IntPtrId
   3207    result: IntPtrId
   3208 
   3209 - name: BigIntPtrBitAnd
   3210  shared: true
   3211  transpile: true
   3212  cost_estimate: 1
   3213  args:
   3214    lhs: IntPtrId
   3215    rhs: IntPtrId
   3216    result: IntPtrId
   3217 
   3218 - name: BigIntPtrLeftShift
   3219  shared: true
   3220  transpile: true
   3221  cost_estimate: 3
   3222  args:
   3223    lhs: IntPtrId
   3224    rhs: IntPtrId
   3225    result: IntPtrId
   3226 
   3227 - name: BigIntPtrRightShift
   3228  shared: true
   3229  transpile: true
   3230  cost_estimate: 3
   3231  args:
   3232    lhs: IntPtrId
   3233    rhs: IntPtrId
   3234    result: IntPtrId
   3235 
   3236 - name: BigIntPtrNot
   3237  shared: true
   3238  transpile: true
   3239  cost_estimate: 1
   3240  args:
   3241    input: IntPtrId
   3242    result: IntPtrId
   3243 
   3244 - name: Int32NegationResult
   3245  shared: true
   3246  transpile: true
   3247  cost_estimate: 1
   3248  args:
   3249    input: Int32Id
   3250 
   3251 - name: DoubleNegationResult
   3252  shared: true
   3253  transpile: true
   3254  cost_estimate: 1
   3255  args:
   3256    input: NumberId
   3257 
   3258 - name: BigIntNegationResult
   3259  shared: true
   3260  transpile: true
   3261  cost_estimate: 5
   3262  args:
   3263    input: BigIntId
   3264 
   3265 - name: BigIntPtrNegation
   3266  shared: true
   3267  transpile: true
   3268  cost_estimate: 1
   3269  args:
   3270    input: IntPtrId
   3271    result: IntPtrId
   3272 
   3273 - name: Int32IncResult
   3274  shared: true
   3275  transpile: true
   3276  cost_estimate: 1
   3277  args:
   3278    input: Int32Id
   3279 
   3280 - name: Int32DecResult
   3281  shared: true
   3282  transpile: true
   3283  cost_estimate: 1
   3284  args:
   3285    input: Int32Id
   3286 
   3287 - name: DoubleIncResult
   3288  shared: true
   3289  transpile: true
   3290  cost_estimate: 1
   3291  args:
   3292    input: NumberId
   3293 
   3294 - name: DoubleDecResult
   3295  shared: true
   3296  transpile: true
   3297  cost_estimate: 1
   3298  args:
   3299    input: NumberId
   3300 
   3301 - name: BigIntIncResult
   3302  shared: true
   3303  transpile: true
   3304  cost_estimate: 5
   3305  args:
   3306    input: BigIntId
   3307 
   3308 - name: BigIntDecResult
   3309  shared: true
   3310  transpile: true
   3311  cost_estimate: 5
   3312  args:
   3313    input: BigIntId
   3314 
   3315 - name: BigIntPtrInc
   3316  shared: true
   3317  transpile: true
   3318  cost_estimate: 1
   3319  args:
   3320    input: IntPtrId
   3321    result: IntPtrId
   3322 
   3323 - name: BigIntPtrDec
   3324  shared: true
   3325  transpile: true
   3326  cost_estimate: 1
   3327  args:
   3328    input: IntPtrId
   3329    result: IntPtrId
   3330 
   3331 - name: LoadInt32TruthyResult
   3332  shared: true
   3333  transpile: true
   3334  cost_estimate: 2
   3335  args:
   3336    input: ValId
   3337 
   3338 - name: LoadDoubleTruthyResult
   3339  shared: true
   3340  transpile: true
   3341  cost_estimate: 2
   3342  args:
   3343    input: NumberId
   3344 
   3345 - name: LoadStringTruthyResult
   3346  shared: true
   3347  transpile: true
   3348  cost_estimate: 2
   3349  args:
   3350    str: StringId
   3351 
   3352 - name: LoadObjectTruthyResult
   3353  shared: true
   3354  transpile: true
   3355  cost_estimate: 4
   3356  args:
   3357    obj: ObjId
   3358 
   3359 - name: LoadBigIntTruthyResult
   3360  shared: true
   3361  transpile: true
   3362  cost_estimate: 2
   3363  args:
   3364    bigInt: BigIntId
   3365 
   3366 - name: LoadValueTruthyResult
   3367  shared: true
   3368  transpile: true
   3369  cost_estimate: 4
   3370  args:
   3371    input: ValId
   3372 
   3373 - name: LoadValueResult
   3374  shared: false
   3375  transpile: true
   3376  cost_estimate: 1
   3377  args:
   3378    val: ValueField
   3379 
   3380 # This instruction returns a Value stored in a WeakValueField to JS code. Weak
   3381 # references normally require a weak barrier but this instruction doesn't have
   3382 # any barriers in Baseline IC code. Only use this instruction if you know what
   3383 # you're doing!
   3384 - name: UncheckedLoadWeakValueResult
   3385  shared: false
   3386  transpile: true
   3387  cost_estimate: 1
   3388  args:
   3389    val: WeakValueField
   3390 
   3391 # See the warning for UncheckedLoadWeakValueResult above.
   3392 - name: UncheckedLoadWeakObjectResult
   3393  shared: false
   3394  transpile: true
   3395  cost_estimate: 1
   3396  args:
   3397    obj: WeakObjectField
   3398 
   3399 - name: LoadOperandResult
   3400  shared: true
   3401  transpile: true
   3402  cost_estimate: 1
   3403  args:
   3404    input: ValId
   3405 
   3406 - name: NewPlainObjectResult
   3407  shared: false
   3408  transpile: true
   3409  cost_estimate: 4
   3410  args:
   3411    numFixedSlots: UInt32Imm
   3412    numDynamicSlots: UInt32Imm
   3413    allocKind: AllocKindImm
   3414    shape: ShapeField
   3415    site: AllocSiteField
   3416 
   3417 - name: NewArrayObjectResult
   3418  shared: false
   3419  transpile: true
   3420  cost_estimate: 4
   3421  args:
   3422    arrayLength: UInt32Imm
   3423    shape: ShapeField
   3424    site: AllocSiteField
   3425 
   3426 - name: NewFunctionCloneResult
   3427  shared: false
   3428  transpile: true
   3429  cost_estimate: 4
   3430  args:
   3431    canonical: ObjectField
   3432    allocKind: AllocKindImm
   3433    site: AllocSiteField
   3434 
   3435 - name: ConcatStringsResult
   3436  shared: true
   3437  transpile: true
   3438  cost_estimate: 5
   3439  args:
   3440    lhs: StringId
   3441    rhs: StringId
   3442    stub: JitCodeField
   3443 
   3444 - name: CallStringObjectConcatResult
   3445  shared: false
   3446  transpile: false
   3447  cost_estimate: 5
   3448  args:
   3449    lhs: ValId
   3450    rhs: ValId
   3451 
   3452 - name: CallIsSuspendedGeneratorResult
   3453  shared: true
   3454  transpile: false
   3455  cost_estimate: 2
   3456  args:
   3457    val: ValId
   3458 
   3459 - name: CompareStringResult
   3460  shared: false
   3461  transpile: true
   3462  cost_estimate: 5
   3463  args:
   3464    op: JSOpImm
   3465    lhs: StringId
   3466    rhs: StringId
   3467 
   3468 - name: CompareObjectResult
   3469  shared: true
   3470  transpile: true
   3471  cost_estimate: 2
   3472  args:
   3473    op: JSOpImm
   3474    lhs: ObjId
   3475    rhs: ObjId
   3476 
   3477 - name: CompareSymbolResult
   3478  shared: true
   3479  transpile: true
   3480  cost_estimate: 2
   3481  args:
   3482    op: JSOpImm
   3483    lhs: SymbolId
   3484    rhs: SymbolId
   3485 
   3486 - name: CompareInt32Result
   3487  shared: true
   3488  transpile: true
   3489  cost_estimate: 2
   3490  args:
   3491    op: JSOpImm
   3492    lhs: Int32Id
   3493    rhs: Int32Id
   3494 
   3495 - name: CompareDoubleResult
   3496  shared: true
   3497  transpile: true
   3498  cost_estimate: 2
   3499  args:
   3500    op: JSOpImm
   3501    lhs: NumberId
   3502    rhs: NumberId
   3503 
   3504 - name: CompareBigIntResult
   3505  shared: true
   3506  transpile: true
   3507  cost_estimate: 4
   3508  args:
   3509    op: JSOpImm
   3510    lhs: BigIntId
   3511    rhs: BigIntId
   3512 
   3513 - name: CompareBigIntInt32Result
   3514  shared: true
   3515  transpile: true
   3516  cost_estimate: 3
   3517  args:
   3518    op: JSOpImm
   3519    lhs: BigIntId
   3520    rhs: Int32Id
   3521 
   3522 - name: CompareBigIntNumberResult
   3523  shared: true
   3524  transpile: true
   3525  cost_estimate: 4
   3526  args:
   3527    op: JSOpImm
   3528    lhs: BigIntId
   3529    rhs: NumberId
   3530 
   3531 - name: CompareBigIntStringResult
   3532  shared: true
   3533  transpile: true
   3534  cost_estimate: 5
   3535  args:
   3536    op: JSOpImm
   3537    lhs: BigIntId
   3538    rhs: StringId
   3539 
   3540 - name: CompareNullUndefinedResult
   3541  shared: true
   3542  transpile: true
   3543  cost_estimate: 2
   3544  args:
   3545    op: JSOpImm
   3546    isUndefined: BoolImm
   3547    input: ValId
   3548 
   3549 - name: CompareDoubleSameValueResult
   3550  shared: true
   3551  transpile: true
   3552  cost_estimate: 3
   3553  args:
   3554    lhs: NumberId
   3555    rhs: NumberId
   3556 
   3557 - name: SameValueResult
   3558  shared: false
   3559  transpile: true
   3560  cost_estimate: 4
   3561  args:
   3562    lhs: ValId
   3563    rhs: ValId
   3564 
   3565 - name: IndirectTruncateInt32Result
   3566  shared: true
   3567  transpile: true
   3568  cost_estimate: 1
   3569  args:
   3570    val: Int32Id
   3571 
   3572 - name: BigIntAsIntNResult
   3573  shared: true
   3574  transpile: true
   3575  cost_estimate: 5
   3576  args:
   3577    bits: Int32Id
   3578    bigInt: BigIntId
   3579 
   3580 - name: BigIntAsUintNResult
   3581  shared: true
   3582  transpile: true
   3583  cost_estimate: 5
   3584  args:
   3585    bits: Int32Id
   3586    bigInt: BigIntId
   3587 
   3588 - name: SetHasResult
   3589  shared: true
   3590  transpile: true
   3591  cost_estimate: 5
   3592  args:
   3593    set: ObjId
   3594    val: ValId
   3595 
   3596 - name: SetHasNonGCThingResult
   3597  shared: true
   3598  transpile: true
   3599  cost_estimate: 3
   3600  args:
   3601    set: ObjId
   3602    val: ValId
   3603 
   3604 - name: SetHasStringResult
   3605  shared: false
   3606  transpile: true
   3607  cost_estimate: 5
   3608  args:
   3609    set: ObjId
   3610    str: StringId
   3611 
   3612 - name: SetHasSymbolResult
   3613  shared: true
   3614  transpile: true
   3615  cost_estimate: 3
   3616  args:
   3617    set: ObjId
   3618    sym: SymbolId
   3619 
   3620 - name: SetHasBigIntResult
   3621  shared: true
   3622  transpile: true
   3623  cost_estimate: 3
   3624  args:
   3625    set: ObjId
   3626    bigInt: BigIntId
   3627 
   3628 - name: SetHasObjectResult
   3629  shared: true
   3630  transpile: true
   3631  cost_estimate: 3
   3632  args:
   3633    set: ObjId
   3634    obj: ObjId
   3635 
   3636 - name: SetDeleteResult
   3637  shared: true
   3638  transpile: true
   3639  cost_estimate: 5
   3640  args:
   3641    set: ObjId
   3642    val: ValId
   3643 
   3644 - name: SetAddResult
   3645  shared: true
   3646  transpile: true
   3647  cost_estimate: 5
   3648  args:
   3649    set: ObjId
   3650    key: ValId
   3651 
   3652 - name: SetSizeResult
   3653  shared: true
   3654  transpile: true
   3655  cost_estimate: 1
   3656  args:
   3657    set: ObjId
   3658 
   3659 - name: MapHasResult
   3660  shared: true
   3661  transpile: true
   3662  cost_estimate: 5
   3663  args:
   3664    map: ObjId
   3665    val: ValId
   3666 
   3667 - name: MapHasNonGCThingResult
   3668  shared: true
   3669  transpile: true
   3670  cost_estimate: 3
   3671  args:
   3672    map: ObjId
   3673    val: ValId
   3674 
   3675 - name: MapHasStringResult
   3676  shared: false
   3677  transpile: true
   3678  cost_estimate: 5
   3679  args:
   3680    map: ObjId
   3681    str: StringId
   3682 
   3683 - name: MapHasSymbolResult
   3684  shared: true
   3685  transpile: true
   3686  cost_estimate: 3
   3687  args:
   3688    map: ObjId
   3689    sym: SymbolId
   3690 
   3691 - name: MapHasBigIntResult
   3692  shared: true
   3693  transpile: true
   3694  cost_estimate: 3
   3695  args:
   3696    map: ObjId
   3697    bigInt: BigIntId
   3698 
   3699 - name: MapHasObjectResult
   3700  shared: true
   3701  transpile: true
   3702  cost_estimate: 3
   3703  args:
   3704    map: ObjId
   3705    obj: ObjId
   3706 
   3707 - name: MapGetResult
   3708  shared: true
   3709  transpile: true
   3710  cost_estimate: 5
   3711  args:
   3712    map: ObjId
   3713    val: ValId
   3714 
   3715 - name: MapGetNonGCThingResult
   3716  shared: true
   3717  transpile: true
   3718  cost_estimate: 3
   3719  args:
   3720    map: ObjId
   3721    val: ValId
   3722 
   3723 - name: MapGetStringResult
   3724  shared: false
   3725  transpile: true
   3726  cost_estimate: 5
   3727  args:
   3728    map: ObjId
   3729    str: StringId
   3730 
   3731 - name: MapGetSymbolResult
   3732  shared: true
   3733  transpile: true
   3734  cost_estimate: 3
   3735  args:
   3736    map: ObjId
   3737    sym: SymbolId
   3738 
   3739 - name: MapGetBigIntResult
   3740  shared: true
   3741  transpile: true
   3742  cost_estimate: 3
   3743  args:
   3744    map: ObjId
   3745    bigInt: BigIntId
   3746 
   3747 - name: MapGetObjectResult
   3748  shared: true
   3749  transpile: true
   3750  cost_estimate: 3
   3751  args:
   3752    map: ObjId
   3753    obj: ObjId
   3754 
   3755 - name: MapDeleteResult
   3756  shared: true
   3757  transpile: true
   3758  cost_estimate: 5
   3759  args:
   3760    map: ObjId
   3761    val: ValId
   3762 
   3763 - name: MapSetResult
   3764  shared: true
   3765  transpile: true
   3766  cost_estimate: 5
   3767  args:
   3768    map: ObjId
   3769    key: ValId
   3770    val: ValId
   3771 
   3772 - name: MapSizeResult
   3773  shared: true
   3774  transpile: true
   3775  cost_estimate: 1
   3776  args:
   3777    map: ObjId
   3778 
   3779 - name: WeakMapGetObjectResult
   3780  shared: true
   3781  transpile: true
   3782  cost_estimate: 3
   3783  args:
   3784    weakMap: ObjId
   3785    obj: ObjId
   3786 
   3787 - name: WeakMapHasObjectResult
   3788  shared: true
   3789  transpile: true
   3790  cost_estimate: 3
   3791  args:
   3792    weakMap: ObjId
   3793    obj: ObjId
   3794 
   3795 - name: WeakSetHasObjectResult
   3796  shared: true
   3797  transpile: true
   3798  cost_estimate: 3
   3799  args:
   3800    weakSet: ObjId
   3801    obj: ObjId
   3802 
   3803 - name: DateFillLocalTimeSlots
   3804  shared: true
   3805  transpile: true
   3806  cost_estimate: 4
   3807  args:
   3808    date: ObjId
   3809 
   3810 - name: DateHoursFromSecondsIntoYearResult
   3811  shared: true
   3812  transpile: true
   3813  cost_estimate: 2
   3814  args:
   3815    secondsIntoYear: ValId
   3816 
   3817 - name: DateMinutesFromSecondsIntoYearResult
   3818  shared: true
   3819  transpile: true
   3820  cost_estimate: 2
   3821  args:
   3822    secondsIntoYear: ValId
   3823 
   3824 - name: DateSecondsFromSecondsIntoYearResult
   3825  shared: true
   3826  transpile: true
   3827  cost_estimate: 2
   3828  args:
   3829    secondsIntoYear: ValId
   3830 
   3831 - name: ArrayFromArgumentsObjectResult
   3832  shared: true
   3833  transpile: true
   3834  cost_estimate: 5
   3835  args:
   3836    obj: ObjId
   3837    shape: ShapeField
   3838 
   3839 - name: CloseIterScriptedResult
   3840  shared: false
   3841  transpile: true
   3842  cost_estimate: 5
   3843  args:
   3844    iter: ObjId
   3845    callee: ObjId
   3846    targetNargs: UInt32Imm
   3847 
   3848 - name: CallPrintString
   3849  shared: true
   3850  transpile: false
   3851  cost_estimate: 1
   3852  args:
   3853    str: StaticStringImm
   3854 
   3855 - name: Breakpoint
   3856  shared: true
   3857  transpile: false
   3858  cost_estimate: 1
   3859  args:
   3860 
   3861 - name: WrapResult
   3862  shared: true
   3863  transpile: false
   3864  cost_estimate: 4
   3865  args:
   3866 
   3867 - name: Bailout
   3868  shared: true
   3869  transpile: true
   3870  cost_estimate: 0
   3871  args:
   3872 
   3873 - name: AssertFloat32Result
   3874  shared: true
   3875  transpile: true
   3876  cost_estimate: 1
   3877  args:
   3878    val: ValId
   3879    mustBeFloat32: BoolImm
   3880 
   3881 - name: AssertRecoveredOnBailoutResult
   3882  shared: true
   3883  transpile: true
   3884  cost_estimate: 1
   3885  args:
   3886    val: ValId
   3887    mustBeRecovered: BoolImm
   3888 
   3889 - name: AssertPropertyLookup
   3890  shared: true
   3891  transpile: true
   3892  cost_estimate: 4
   3893  args:
   3894    obj: ObjId
   3895    id: IdField
   3896    slot: RawInt32Field
   3897 
   3898 #ifdef FUZZING_JS_FUZZILLI
   3899 - name: FuzzilliHashResult
   3900  shared: true
   3901  transpile: true
   3902  cost_estimate: 4
   3903  args:
   3904    val: ValId
   3905 #endif