Bug 1885489 - Part 5: Add SnapshotIterator::readInt32(). r=iain
[gecko.git] / js / src / jit / CacheIROps.yaml
blob2f3097dfd816e98cea4a602c4e0703b4e4fe2827
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/.
5 # [SMDOC] CacheIR Opcodes
6 # =======================
7 # This file defines all CacheIR opcodes and their arguments.
9 # Each op has the following attributes:
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.
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.
22 # transpile
23 # =========
24 # Whether this op can be transpiled to MIR by WarpCacheIRTranspiler.
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.
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
41 # In the case of the op not being shared, default to counting the Baseline
42 # implementation.
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.
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.
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.
57 # args
58 # ====
59 # List of arguments encoded in the bytecode stream. There are three argument
60 # kinds:
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.
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.
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.
74 # If there's an argument named 'result', the generated CacheIRWriter method will
75 # return a new OperandId of this type.
77 - name: ReturnFromIC
78   shared: false
79   transpile: true
80   cost_estimate: 1
81   args:
83 - name: GuardToObject
84   shared: true
85   transpile: true
86   cost_estimate: 1
87   custom_writer: true
88   args:
89     input: ValId
91 - name: GuardIsNullOrUndefined
92   shared: true
93   transpile: true
94   cost_estimate: 1
95   args:
96     input: ValId
98 - name: GuardIsNull
99   shared: true
100   transpile: true
101   cost_estimate: 1
102   args:
103     input: ValId
105 - name: GuardIsUndefined
106   shared: true
107   transpile: true
108   cost_estimate: 1
109   args:
110     input: ValId
112 - name: GuardIsNotUninitializedLexical
113   shared: true
114   transpile: true
115   cost_estimate: 1
116   args:
117     val: ValId
119 - name: GuardToBoolean
120   shared: true
121   transpile: true
122   cost_estimate: 1
123   custom_writer: true
124   args:
125     input: ValId
127 - name: GuardToString
128   shared: true
129   transpile: true
130   cost_estimate: 1
131   custom_writer: true
132   args:
133     input: ValId
135 - name: GuardToSymbol
136   shared: true
137   transpile: true
138   cost_estimate: 1
139   custom_writer: true
140   args:
141     input: ValId
143 - name: GuardToBigInt
144   shared: true
145   transpile: true
146   cost_estimate: 1
147   custom_writer: true
148   args:
149     input: ValId
151 - name: GuardIsNumber
152   shared: true
153   transpile: true
154   cost_estimate: 1
155   custom_writer: true
156   args:
157     input: ValId
159 - name: GuardToInt32
160   shared: true
161   transpile: true
162   cost_estimate: 1
163   custom_writer: true
164   args:
165     input: ValId
167 - name: GuardToNonGCThing
168   shared: true
169   transpile: true
170   cost_estimate: 1
171   args:
172     input: ValId
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
183 - name: GuardToInt32Index
184   shared: true
185   transpile: true
186   cost_estimate: 1
187   args:
188     input: ValId
189     result: Int32Id
191 - name: Int32ToIntPtr
192   shared: true
193   transpile: true
194   cost_estimate: 1
195   args:
196     input: Int32Id
197     result: IntPtrId
199 - name: GuardNumberToIntPtrIndex
200   shared: true
201   transpile: true
202   cost_estimate: 2
203   args:
204     input: NumberId
205     supportOOB: BoolImm
206     result: IntPtrId
208 - name: GuardToInt32ModUint32
209   shared: true
210   transpile: true
211   cost_estimate: 2
212   args:
213     input: ValId
214     result: Int32Id
216 - name: GuardToUint8Clamped
217   shared: true
218   transpile: true
219   cost_estimate: 2
220   args:
221     input: ValId
222     result: Int32Id
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
234 - name: GuardShape
235   shared: false
236   transpile: true
237   cost_estimate: 1
238   args:
239     obj: ObjId
240     shape: WeakShapeField
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
251 - name: GuardProto
252   shared: false
253   transpile: true
254   cost_estimate: 1
255   args:
256     obj: ObjId
257     proto: WeakObjectField
259 - name: GuardNullProto
260   shared: true
261   transpile: true
262   cost_estimate: 1
263   args:
264     obj: ObjId
266 # Guard per GuardClassKind.
267 - name: GuardClass
268   shared: true
269   transpile: true
270   cost_estimate: 1
271   args:
272     obj: ObjId
273     kind: GuardClassKindImm
275 # Guard per GuardClassKind.
276 - name: GuardEitherClass
277   shared: true
278   transpile: true
279   cost_estimate: 1
280   args:
281     obj: ObjId
282     kind1: GuardClassKindImm
283     kind2: GuardClassKindImm
285 # Guard on a realm fuse.
286 - name: GuardFuse
287   shared: true
288   transpile: true
289   cost_estimate: 1
290   args:
291     fuseWord: RealmFuseIndexImm
293 # Guard on an arbitrary JSClass.
294 - name: GuardAnyClass
295   shared: false
296   transpile: true
297   cost_estimate: 1
298   args:
299     obj: ObjId
300     clasp: RawPointerField
302 - name: GuardGlobalGeneration
303   shared: true
304   transpile: true
305   cost_estimate: 1
306   args:
307     expected: RawInt32Field
308     generationAddr: RawPointerField
310 - name: HasClassResult
311   shared: false
312   transpile: true
313   cost_estimate: 1
314   args:
315     obj: ObjId
316     clasp: RawPointerField
318 - name: CallRegExpMatcherResult
319   shared: false
320   transpile: true
321   cost_estimate: 5
322   args:
323     regexp: ObjId
324     input: StringId
325     lastIndex: Int32Id
326     stub: JitCodeField
328 - name: CallRegExpSearcherResult
329   shared: false
330   transpile: true
331   cost_estimate: 5
332   args:
333     regexp: ObjId
334     input: StringId
335     lastIndex: Int32Id
336     stub: JitCodeField
338 - name: RegExpSearcherLastLimitResult
339   shared: true
340   transpile: true
341   cost_estimate: 1
342   args:
344 - name: RegExpHasCaptureGroupsResult
345   shared: false
346   transpile: true
347   cost_estimate: 1
348   args:
349     regexp: ObjId
350     input: StringId
352 - name: RegExpBuiltinExecMatchResult
353   shared: false
354   transpile: true
355   cost_estimate: 5
356   args:
357     regexp: ObjId
358     input: StringId
359     stub: JitCodeField
361 - name: RegExpBuiltinExecTestResult
362   shared: false
363   transpile: true
364   cost_estimate: 5
365   args:
366     regexp: ObjId
367     input: StringId
368     stub: JitCodeField
370 - name: RegExpFlagResult
371   shared: true
372   transpile: true
373   cost_estimate: 2
374   args:
375     regexp: ObjId
376     flagsMask: Int32Imm
378 - name: CallSubstringKernelResult
379   shared: true
380   transpile: true
381   cost_estimate: 5
382   args:
383     str: StringId
384     begin: Int32Id
385     length: Int32Id
387 - name: StringReplaceStringResult
388   shared: true
389   transpile: true
390   cost_estimate: 5
391   args:
392     str: StringId
393     pattern: StringId
394     replacement: StringId
396 - name: StringSplitStringResult
397   shared: true
398   transpile: true
399   cost_estimate: 5
400   args:
401     str: StringId
402     separator: StringId
404 - name: RegExpPrototypeOptimizableResult
405   shared: true
406   transpile: true
407   cost_estimate: 4
408   args:
409     proto: ObjId
411 - name: RegExpInstanceOptimizableResult
412   shared: true
413   transpile: true
414   cost_estimate: 4
415   args:
416     regexp: ObjId
417     proto: ObjId
419 - name: GetFirstDollarIndexResult
420   shared: true
421   transpile: true
422   cost_estimate: 5
423   args:
424     str: StringId
426 # Add a reference to a global in the compartment to keep it alive.
427 - name: GuardCompartment
428   shared: false
429   transpile: false
430   cost_estimate: 2
431   args:
432     obj: ObjId
433     global: ObjectField
434     compartment: RawPointerField
436 - name: GuardIsExtensible
437   shared: true
438   transpile: true
439   cost_estimate: 1
440   args:
441     obj: ObjId
443 - name: GuardIsNativeObject
444   shared: true
445   transpile: true
446   cost_estimate: 1
447   args:
448     obj: ObjId
450 - name: GuardIsProxy
451   shared: true
452   transpile: true
453   cost_estimate: 1
454   args:
455     obj: ObjId
457 - name: GuardIsNotProxy
458   shared: true
459   transpile: true
460   cost_estimate: 1
461   args:
462     obj: ObjId
464 - name: GuardIsNotArrayBufferMaybeShared
465   shared: true
466   transpile: true
467   cost_estimate: 1
468   args:
469     obj: ObjId
471 - name: GuardIsTypedArray
472   shared: true
473   transpile: true
474   cost_estimate: 1
475   args:
476     obj: ObjId
478 - name: GuardIsFixedLengthTypedArray
479   shared: true
480   transpile: true
481   cost_estimate: 1
482   args:
483     obj: ObjId
485 - name: GuardIsResizableTypedArray
486   shared: true
487   transpile: true
488   cost_estimate: 1
489   args:
490     obj: ObjId
492 - name: GuardHasProxyHandler
493   shared: false
494   transpile: true
495   cost_estimate: 1
496   args:
497     obj: ObjId
498     handler: RawPointerField
500 - name: GuardIsNotDOMProxy
501   shared: true
502   transpile: true
503   cost_estimate: 1
504   args:
505     obj: ObjId
507 - name: GuardSpecificObject
508   shared: false
509   transpile: true
510   cost_estimate: 1
511   args:
512     obj: ObjId
513     expected: WeakObjectField
515 - name: GuardObjectIdentity
516   shared: true
517   transpile: true
518   cost_estimate: 1
519   args:
520     obj1: ObjId
521     obj2: ObjId
523 - name: GuardSpecificFunction
524   shared: false
525   transpile: true
526   cost_estimate: 1
527   custom_writer: true
528   args:
529     fun: ObjId
530     expected: WeakObjectField
531     nargsAndFlags: RawInt32Field
533 - name: GuardFunctionScript
534   shared: false
535   transpile: true
536   cost_estimate: 1
537   custom_writer: true
538   args:
539     obj: ObjId
540     expected: WeakBaseScriptField
541     nargsAndFlags: RawInt32Field
543 - name: GuardSpecificAtom
544   shared: false
545   transpile: true
546   cost_estimate: 4
547   args:
548     str: StringId
549     expected: AtomField
551 - name: GuardSpecificSymbol
552   shared: false
553   transpile: true
554   cost_estimate: 1
555   args:
556     sym: SymbolId
557     expected: SymbolField
559 - name: GuardSpecificInt32
560   shared: true
561   transpile: true
562   cost_estimate: 1
563   args:
564     num: Int32Id
565     expected: Int32Imm
567 - name: GuardNoDenseElements
568   shared: true
569   transpile: true
570   cost_estimate: 1
571   args:
572     obj: ObjId
574 - name: GuardStringToIndex
575   shared: true
576   transpile: true
577   cost_estimate: 4
578   args:
579     str: StringId
580     result: Int32Id
582 - name: GuardStringToInt32
583   shared: true
584   transpile: true
585   cost_estimate: 4
586   args:
587     str: StringId
588     result: Int32Id
590 - name: GuardStringToNumber
591   shared: true
592   transpile: true
593   cost_estimate: 4
594   args:
595     str: StringId
596     result: NumberId
598 - name: StringToAtom
599   shared: true
600   transpile: true
601   custom_writer: true
602   cost_estimate: 4
603   args:
604     str: StringId
606 - name: BooleanToNumber
607   shared: true
608   transpile: true
609   cost_estimate: 1
610   args:
611     boolean: BooleanId
612     result: NumberId
614 - name: GuardHasGetterSetter
615   shared: true
616   transpile: true
617   cost_estimate: 4
618   args:
619     obj: ObjId
620     id: IdField
621     getterSetter: WeakGetterSetterField
623 - name: GuardInt32IsNonNegative
624   shared: true
625   transpile: true
626   cost_estimate: 1
627   args:
628     index: Int32Id
630 - name: GuardIndexIsValidUpdateOrAdd
631   shared: true
632   transpile: true
633   cost_estimate: 1
634   args:
635     obj: ObjId
636     index: Int32Id
638 - name: GuardIndexIsNotDenseElement
639   shared: true
640   transpile: true
641   cost_estimate: 1
642   args:
643     obj: ObjId
644     index: Int32Id
646 - name: GuardTagNotEqual
647   shared: true
648   transpile: true
649   cost_estimate: 1
650   args:
651     lhs: ValueTagId
652     rhs: ValueTagId
654 - name: GuardXrayExpandoShapeAndDefaultProto
655   shared: true
656   transpile: false
657   cost_estimate: 2
658   args:
659     obj: ObjId
660     shapeWrapper: ObjectField
662 - name: GuardXrayNoExpando
663   shared: true
664   transpile: false
665   cost_estimate: 2
666   args:
667     obj: ObjId
669 # Guard obj[slot] == expected.
670 - name: GuardDynamicSlotIsSpecificObject
671   shared: true
672   transpile: true
673   cost_estimate: 1
674   args:
675     obj: ObjId
676     expected: ObjId
677     slot: RawInt32Field
679 # Guard obj[slot] is not an object.
680 - name: GuardDynamicSlotIsNotObject
681   shared: true
682   transpile: true
683   cost_estimate: 1
684   args:
685     obj: ObjId
686     slot: RawInt32Field
688 - name: GuardFixedSlotValue
689   shared: true
690   transpile: true
691   cost_estimate: 1
692   args:
693     obj: ObjId
694     offset: RawInt32Field
695     val: ValueField
697 - name: GuardDynamicSlotValue
698   shared: true
699   transpile: true
700   cost_estimate: 1
701   args:
702     obj: ObjId
703     offset: RawInt32Field
704     val: ValueField
706 - name: LoadScriptedProxyHandler
707   shared: true
708   transpile: true
709   cost_estimate: 1
710   args:
711     result: ObjId
712     obj: ObjId
714 - name: IdToStringOrSymbol
715   shared: true
716   transpile: true
717   cost_estimate: 2
718   args:
719     result: ValId
720     id: ValId
722 - name: LoadFixedSlot
723   shared: true
724   transpile: true
725   cost_estimate: 1
726   args:
727     result: ValId
728     obj: ObjId
729     offset: RawInt32Field
731 - name: LoadDynamicSlot
732   shared: true
733   transpile: true
734   cost_estimate: 1
735   args:
736     result: ValId
737     obj: ObjId
738     slot: RawInt32Field
740 - name: GuardNoAllocationMetadataBuilder
741   shared: true
742   transpile: true
743   cost_estimate: 1
744   args:
745     builderAddr: RawPointerField
747 - name: GuardFunctionHasJitEntry
748   shared: true
749   transpile: true
750   cost_estimate: 1
751   args:
752     fun: ObjId
753     constructing: BoolImm
755 - name: GuardFunctionHasNoJitEntry
756   shared: true
757   transpile: true
758   cost_estimate: 1
759   args:
760     fun: ObjId
762 - name: GuardFunctionIsNonBuiltinCtor
763   shared: true
764   transpile: true
765   cost_estimate: 1
766   args:
767     fun: ObjId
769 - name: GuardFunctionIsConstructor
770   shared: true
771   transpile: true
772   cost_estimate: 1
773   args:
774     fun: ObjId
776 - name: GuardNotClassConstructor
777   shared: true
778   transpile: true
779   cost_estimate: 1
780   args:
781     fun: ObjId
783 - name: GuardArrayIsPacked
784   shared: true
785   transpile: true
786   cost_estimate: 1
787   args:
788     array: ObjId
790 - name: GuardArgumentsObjectFlags
791   shared: true
792   transpile: true
793   cost_estimate: 1
794   args:
795     obj: ObjId
796     flags: ByteImm
798 - name: LoadObject
799   shared: true
800   transpile: true
801   cost_estimate: 1
802   args:
803     result: ObjId
804     obj: ObjectField
806 # This is just LoadObject with extra information for the purpose of optimizing
807 # out shape guards if we're just storing to slots of the receiver object.
808 - name: LoadProtoObject
809   shared: true
810   transpile: true
811   cost_estimate: 1
812   args:
813     result: ObjId
814     protoObj: ObjectField
815     receiverObj: ObjId
817 - name: LoadProto
818   shared: true
819   transpile: true
820   cost_estimate: 1
821   args:
822     obj: ObjId
823     result: ObjId
825 - name: LoadEnclosingEnvironment
826   shared: true
827   transpile: true
828   cost_estimate: 1
829   args:
830     obj: ObjId
831     result: ObjId
833 - name: LoadWrapperTarget
834   shared: true
835   transpile: true
836   cost_estimate: 1
837   args:
838     obj: ObjId
839     result: ObjId
840     fallible: BoolImm
842 - name: LoadValueTag
843   shared: true
844   transpile: true
845   cost_estimate: 1
846   args:
847     val: ValId
848     result: ValueTagId
850 - name: LoadArgumentFixedSlot
851   shared: false
852   transpile: true
853   cost_estimate: 1
854   custom_writer: true
855   args:
856     result: ValId
857     slotIndex: ByteImm
859 - name: LoadArgumentDynamicSlot
860   shared: false
861   transpile: true
862   cost_estimate: 1
863   custom_writer: true
864   args:
865     result: ValId
866     argc: Int32Id
867     slotIndex: ByteImm
869 - name: TruncateDoubleToUInt32
870   shared: true
871   transpile: true
872   cost_estimate: 4
873   args:
874     input: NumberId
875     result: Int32Id
877 - name: DoubleToUint8Clamped
878   shared: true
879   transpile: true
880   cost_estimate: 2
881   args:
882     input: NumberId
883     result: Int32Id
885 - name: MegamorphicLoadSlotResult
886   shared: true
887   transpile: true
888   cost_estimate: 4
889   args:
890     obj: ObjId
891     name: IdField
893 - name: MegamorphicLoadSlotByValueResult
894   shared: true
895   transpile: true
896   cost_estimate: 4
897   args:
898     obj: ObjId
899     id: ValId
901 - name: MegamorphicStoreSlot
902   shared: true
903   transpile: true
904   cost_estimate: 5
905   args:
906     obj: ObjId
907     name: IdField
908     rhs: ValId
909     strict: BoolImm
911 - name: MegamorphicSetElement
912   shared: false
913   transpile: true
914   cost_estimate: 5
915   args:
916     obj: ObjId
917     id: ValId
918     rhs: ValId
919     strict: BoolImm
921 - name: MegamorphicHasPropResult
922   shared: true
923   transpile: true
924   cost_estimate: 4
925   args:
926     obj: ObjId
927     id: ValId
928     hasOwn: BoolImm
930 # For the case where we have an object with a small number of properties,
931 # we can do better than a megamorphic hasprop if we just run through those
932 # IDs and check for atom pointer equality.
933 - name: SmallObjectVariableKeyHasOwnResult
934   shared: true
935   transpile: true
936   cost_estimate: 4
937   args:
938     # We don't actually need the object, because we only care about the shape,
939     # which was guarded before this
940     id: StringId
941     # We include the prop names to speed up and simplify the Baseline case,
942     # but only the shape is used from Ion to achieve an unrolled loop with
943     # comparisons to known atoms
944     propNames: ObjectField
945     shape: ShapeField
947 - name: ObjectToIteratorResult
948   shared: true
949   transpile: true
950   cost_estimate: 5
951   args:
952     obj: ObjId
953     enumeratorsAddr: RawPointerField
955 - name: ValueToIteratorResult
956   shared: true
957   transpile: true
958   cost_estimate: 5
959   args:
960     val: ValId
962 # See CacheIR.cpp 'DOM proxies' comment.
963 - name: LoadDOMExpandoValue
964   shared: true
965   transpile: true
966   cost_estimate: 1
967   args:
968     obj: ObjId
969     result: ValId
971 - name: LoadDOMExpandoValueGuardGeneration
972   shared: false
973   transpile: true
974   cost_estimate: 2
975   args:
976     obj: ObjId
977     expandoAndGeneration: RawPointerField
978     generation: RawInt64Field
979     result: ValId
981 - name: LoadDOMExpandoValueIgnoreGeneration
982   shared: true
983   transpile: true
984   cost_estimate: 1
985   args:
986     obj: ObjId
987     result: ValId
989 - name: GuardDOMExpandoMissingOrGuardShape
990   shared: false
991   transpile: true
992   cost_estimate: 2
993   args:
994     expando: ValId
995     shape: ShapeField
997 - name: StoreFixedSlot
998   shared: false
999   transpile: true
1000   cost_estimate: 6
1001   args:
1002     obj: ObjId
1003     offset: RawInt32Field
1004     rhs: ValId
1006 - name: StoreDynamicSlot
1007   shared: false
1008   transpile: true
1009   cost_estimate: 6
1010   args:
1011     obj: ObjId
1012     offset: RawInt32Field
1013     rhs: ValId
1015 - name: AddAndStoreFixedSlot
1016   shared: false
1017   transpile: true
1018   cost_estimate: 6
1019   args:
1020     obj: ObjId
1021     offset: RawInt32Field
1022     rhs: ValId
1023     newShape: ShapeField
1025 - name: AddAndStoreDynamicSlot
1026   shared: false
1027   transpile: true
1028   cost_estimate: 6
1029   args:
1030     obj: ObjId
1031     offset: RawInt32Field
1032     rhs: ValId
1033     newShape: ShapeField
1035 - name: AllocateAndStoreDynamicSlot
1036   shared: false
1037   transpile: true
1038   cost_estimate: 6
1039   args:
1040     obj: ObjId
1041     offset: RawInt32Field
1042     rhs: ValId
1043     newShape: ShapeField
1044     numNewSlots: RawInt32Field
1046 - name: AddSlotAndCallAddPropHook
1047   shared: true
1048   transpile: true
1049   cost_estimate: 6
1050   args:
1051     obj: ObjId
1052     rhs: ValId
1053     newShape: ShapeField
1055 - name: StoreDenseElement
1056   shared: true
1057   transpile: true
1058   cost_estimate: 6
1059   args:
1060     obj: ObjId
1061     index: Int32Id
1062     rhs: ValId
1064 - name: StoreDenseElementHole
1065   shared: true
1066   transpile: true
1067   cost_estimate: 6
1068   args:
1069     obj: ObjId
1070     index: Int32Id
1071     rhs: ValId
1072     handleAdd: BoolImm
1074 - name: ArrayPush
1075   shared: true
1076   transpile: true
1077   cost_estimate: 6
1078   args:
1079     obj: ObjId
1080     rhs: ValId
1082 - name: ArrayJoinResult
1083   shared: false
1084   transpile: true
1085   cost_estimate: 5
1086   args:
1087     obj: ObjId
1088     sep: StringId
1090 - name: ObjectKeysResult
1091   shared: true
1092   transpile: true
1093   cost_estimate: 6
1094   args:
1095     obj: ObjId
1097 - name: PackedArrayPopResult
1098   shared: true
1099   transpile: true
1100   cost_estimate: 2
1101   args:
1102     array: ObjId
1104 - name: PackedArrayShiftResult
1105   shared: true
1106   transpile: true
1107   cost_estimate: 4
1108   args:
1109     array: ObjId
1111 - name: PackedArraySliceResult
1112   shared: false
1113   transpile: true
1114   cost_estimate: 5
1115   args:
1116     templateObject: ObjectField
1117     array: ObjId
1118     begin: Int32Id
1119     end: Int32Id
1121 - name: ArgumentsSliceResult
1122   shared: false
1123   transpile: true
1124   cost_estimate: 5
1125   args:
1126     templateObject: ObjectField
1127     args: ObjId
1128     begin: Int32Id
1129     end: Int32Id
1131 - name: IsArrayResult
1132   shared: false
1133   transpile: true
1134   cost_estimate: 5
1135   args:
1136     input: ValId
1138 - name: StoreFixedSlotUndefinedResult
1139   shared: true
1140   transpile: true
1141   args:
1142     obj: ObjId
1143     offset: RawInt32Field
1144     rhs: ValId
1146 - name: IsObjectResult
1147   shared: true
1148   transpile: true
1149   cost_estimate: 1
1150   args:
1151     input: ValId
1153 - name: IsPackedArrayResult
1154   shared: true
1155   transpile: true
1156   cost_estimate: 2
1157   args:
1158     obj: ObjId
1160 - name: IsCallableResult
1161   shared: true
1162   transpile: true
1163   cost_estimate: 4
1164   args:
1165     input: ValId
1167 - name: IsConstructorResult
1168   shared: true
1169   transpile: true
1170   cost_estimate: 4
1171   args:
1172     obj: ObjId
1174 - name: IsCrossRealmArrayConstructorResult
1175   shared: true
1176   transpile: true
1177   cost_estimate: 2
1178   args:
1179     obj: ObjId
1181 - name: IsTypedArrayResult
1182   shared: false
1183   transpile: true
1184   cost_estimate: 5
1185   args:
1186     obj: ObjId
1187     isPossiblyWrapped: BoolImm
1189 - name: IsTypedArrayConstructorResult
1190   shared: true
1191   transpile: true
1192   cost_estimate: 2
1193   args:
1194     obj: ObjId
1196 - name: ArrayBufferViewByteOffsetInt32Result
1197   shared: true
1198   transpile: true
1199   cost_estimate: 1
1200   args:
1201     obj: ObjId
1203 - name: ArrayBufferViewByteOffsetDoubleResult
1204   shared: true
1205   transpile: true
1206   cost_estimate: 1
1207   args:
1208     obj: ObjId
1210 - name: ResizableTypedArrayByteOffsetMaybeOutOfBoundsInt32Result
1211   shared: true
1212   transpile: true
1213   cost_estimate: 2
1214   args:
1215     obj: ObjId
1217 - name: ResizableTypedArrayByteOffsetMaybeOutOfBoundsDoubleResult
1218   shared: true
1219   transpile: true
1220   cost_estimate: 2
1221   args:
1222     obj: ObjId
1224 - name: TypedArrayByteLengthInt32Result
1225   shared: true
1226   transpile: true
1227   cost_estimate: 2
1228   args:
1229     obj: ObjId
1231 - name: TypedArrayByteLengthDoubleResult
1232   shared: true
1233   transpile: true
1234   cost_estimate: 2
1235   args:
1236     obj: ObjId
1238 - name: ResizableTypedArrayByteLengthInt32Result
1239   shared: true
1240   transpile: true
1241   cost_estimate: 2
1242   args:
1243     obj: ObjId
1245 - name: ResizableTypedArrayByteLengthDoubleResult
1246   shared: true
1247   transpile: true
1248   cost_estimate: 2
1249   args:
1250     obj: ObjId
1252 - name: ResizableTypedArrayLengthInt32Result
1253   shared: true
1254   transpile: true
1255   cost_estimate: 2
1256   args:
1257     obj: ObjId
1259 - name: ResizableTypedArrayLengthDoubleResult
1260   shared: true
1261   transpile: true
1262   cost_estimate: 2
1263   args:
1264     obj: ObjId
1266 - name: TypedArrayElementSizeResult
1267   shared: true
1268   transpile: true
1269   cost_estimate: 2
1270   args:
1271     obj: ObjId
1273 - name: ResizableDataViewByteLengthInt32Result
1274   shared: true
1275   transpile: true
1276   cost_estimate: 2
1277   args:
1278     obj: ObjId
1280 - name: ResizableDataViewByteLengthDoubleResult
1281   shared: true
1282   transpile: true
1283   cost_estimate: 2
1284   args:
1285     obj: ObjId
1287 - name: GrowableSharedArrayBufferByteLengthInt32Result
1288   shared: true
1289   transpile: true
1290   cost_estimate: 2
1291   args:
1292     obj: ObjId
1294 - name: GrowableSharedArrayBufferByteLengthDoubleResult
1295   shared: true
1296   transpile: true
1297   cost_estimate: 2
1298   args:
1299     obj: ObjId
1301 - name: GuardHasAttachedArrayBuffer
1302   shared: true
1303   transpile: true
1304   cost_estimate: 2
1305   args:
1306     obj: ObjId
1308 - name: GuardResizableArrayBufferViewInBounds
1309   shared: true
1310   transpile: true
1311   cost_estimate: 2
1312   args:
1313     obj: ObjId
1315 - name: GuardResizableArrayBufferViewInBoundsOrDetached
1316   shared: true
1317   transpile: true
1318   cost_estimate: 2
1319   args:
1320     obj: ObjId
1322 - name: NewArrayIteratorResult
1323   shared: true
1324   transpile: true
1325   cost_estimate: 5
1326   args:
1327     templateObject: ObjectField
1329 - name: NewStringIteratorResult
1330   shared: true
1331   transpile: true
1332   cost_estimate: 5
1333   args:
1334     templateObject: ObjectField
1336 - name: NewRegExpStringIteratorResult
1337   shared: true
1338   transpile: true
1339   cost_estimate: 5
1340   args:
1341     templateObject: ObjectField
1343 - name: ObjectCreateResult
1344   shared: true
1345   transpile: true
1346   cost_estimate: 5
1347   args:
1348     templateObject: ObjectField
1350 - name: NewArrayFromLengthResult
1351   shared: true
1352   transpile: true
1353   cost_estimate: 5
1354   args:
1355     templateObject: ObjectField
1356     length: Int32Id
1358 - name: NewTypedArrayFromLengthResult
1359   shared: true
1360   transpile: true
1361   cost_estimate: 5
1362   args:
1363     templateObject: ObjectField
1364     length: Int32Id
1366 - name: NewTypedArrayFromArrayBufferResult
1367   shared: true
1368   transpile: true
1369   cost_estimate: 5
1370   args:
1371     templateObject: ObjectField
1372     buffer: ObjId
1373     byteOffset: ValId
1374     length: ValId
1376 - name: NewTypedArrayFromArrayResult
1377   shared: true
1378   transpile: true
1379   cost_estimate: 5
1380   args:
1381     templateObject: ObjectField
1382     array: ObjId
1384 - name: NewStringObjectResult
1385   shared: true
1386   transpile: true
1387   cost_estimate: 5
1388   args:
1389     templateObject: ObjectField
1390     str: StringId
1392 - name: StringFromCharCodeResult
1393   shared: false
1394   transpile: true
1395   cost_estimate: 5
1396   args:
1397     code: Int32Id
1399 - name: StringFromCodePointResult
1400   shared: false
1401   transpile: true
1402   cost_estimate: 5
1403   args:
1404     code: Int32Id
1406 - name: StringIncludesResult
1407   shared: true
1408   transpile: true
1409   cost_estimate: 5
1410   args:
1411     str: StringId
1412     searchStr: StringId
1414 - name: StringIndexOfResult
1415   shared: true
1416   transpile: true
1417   cost_estimate: 5
1418   args:
1419     str: StringId
1420     searchStr: StringId
1422 - name: StringLastIndexOfResult
1423   shared: true
1424   transpile: true
1425   cost_estimate: 5
1426   args:
1427     str: StringId
1428     searchStr: StringId
1430 - name: StringStartsWithResult
1431   shared: true
1432   transpile: true
1433   cost_estimate: 5
1434   args:
1435     str: StringId
1436     searchStr: StringId
1438 - name: StringEndsWithResult
1439   shared: true
1440   transpile: true
1441   cost_estimate: 5
1442   args:
1443     str: StringId
1444     searchStr: StringId
1446 - name: StringToLowerCaseResult
1447   shared: true
1448   transpile: true
1449   cost_estimate: 5
1450   args:
1451     str: StringId
1453 - name: StringToUpperCaseResult
1454   shared: true
1455   transpile: true
1456   cost_estimate: 5
1457   args:
1458     str: StringId
1460 - name: StringTrimResult
1461   shared: true
1462   transpile: true
1463   cost_estimate: 5
1464   args:
1465     str: StringId
1467 - name: StringTrimStartResult
1468   shared: true
1469   transpile: true
1470   cost_estimate: 5
1471   args:
1472     str: StringId
1474 - name: StringTrimEndResult
1475   shared: true
1476   transpile: true
1477   cost_estimate: 5
1478   args:
1479     str: StringId
1481 - name: MathAbsInt32Result
1482   shared: true
1483   transpile: true
1484   cost_estimate: 2
1485   args:
1486     input: Int32Id
1488 - name: MathAbsNumberResult
1489   shared: true
1490   transpile: true
1491   cost_estimate: 1
1492   args:
1493     input: NumberId
1495 - name: MathClz32Result
1496   shared: true
1497   transpile: true
1498   cost_estimate: 1
1499   args:
1500     input: Int32Id
1502 - name: MathSignInt32Result
1503   shared: true
1504   transpile: true
1505   cost_estimate: 1
1506   args:
1507     input: Int32Id
1509 - name: MathSignNumberResult
1510   shared: true
1511   transpile: true
1512   cost_estimate: 2
1513   args:
1514     input: NumberId
1516 - name: MathSignNumberToInt32Result
1517   shared: true
1518   transpile: true
1519   cost_estimate: 2
1520   args:
1521     input: NumberId
1523 - name: MathImulResult
1524   shared: true
1525   transpile: true
1526   cost_estimate: 1
1527   args:
1528     lhs: Int32Id
1529     rhs: Int32Id
1531 - name: MathSqrtNumberResult
1532   shared: true
1533   transpile: true
1534   cost_estimate: 1
1535   args:
1536     input: NumberId
1538 - name: MathFRoundNumberResult
1539   shared: true
1540   transpile: true
1541   cost_estimate: 1
1542   args:
1543     input: NumberId
1545 # Because Baseline stub code is shared by all realms in the Zone, this
1546 # instruction loads a pointer to the RNG from a stub field.
1547 - name: MathRandomResult
1548   shared: false
1549   transpile: true
1550   cost_estimate: 3
1551   args:
1552     rng: RawPointerField
1554 - name: MathHypot2NumberResult
1555   shared: true
1556   transpile: true
1557   cost_estimate: 4
1558   args:
1559     first: NumberId
1560     second: NumberId
1562 - name: MathHypot3NumberResult
1563   shared: true
1564   transpile: true
1565   cost_estimate: 4
1566   args:
1567     first: NumberId
1568     second: NumberId
1569     third: NumberId
1571 - name: MathHypot4NumberResult
1572   shared: true
1573   transpile: true
1574   cost_estimate: 4
1575   args:
1576     first: NumberId
1577     second: NumberId
1578     third: NumberId
1579     fourth: NumberId
1581 - name: MathAtan2NumberResult
1582   shared: true
1583   transpile: true
1584   cost_estimate: 4
1585   args:
1586     lhs: NumberId
1587     rhs: NumberId
1589 - name: MathFloorNumberResult
1590   shared: true
1591   transpile: true
1592   cost_estimate: 4
1593   args:
1594     input: NumberId
1596 - name: MathCeilNumberResult
1597   shared: true
1598   transpile: true
1599   cost_estimate: 4
1600   args:
1601     input: NumberId
1603 - name: MathTruncNumberResult
1604   shared: true
1605   transpile: true
1606   cost_estimate: 4
1607   args:
1608     input: NumberId
1610 - name: MathFloorToInt32Result
1611   shared: true
1612   transpile: true
1613   cost_estimate: 3
1614   args:
1615     input: NumberId
1617 - name: MathCeilToInt32Result
1618   shared: true
1619   transpile: true
1620   cost_estimate: 1
1621   args:
1622     input: NumberId
1624 - name: MathTruncToInt32Result
1625   shared: true
1626   transpile: true
1627   args:
1628     input: NumberId
1630 - name: MathRoundToInt32Result
1631   shared: true
1632   transpile: true
1633   cost_estimate: 1
1634   args:
1635     input: NumberId
1637 - name: Int32MinMax
1638   shared: true
1639   transpile: true
1640   cost_estimate: 1
1641   args:
1642     isMax: BoolImm
1643     first: Int32Id
1644     second: Int32Id
1645     result: Int32Id
1647 - name: NumberMinMax
1648   shared: true
1649   transpile: true
1650   cost_estimate: 1
1651   args:
1652     isMax: BoolImm
1653     first: NumberId
1654     second: NumberId
1655     result: NumberId
1657 - name: Int32MinMaxArrayResult
1658   shared: true
1659   transpile: true
1660   cost_estimate: 3
1661   args:
1662     array: ObjId
1663     isMax: BoolImm
1665 - name: NumberMinMaxArrayResult
1666   shared: true
1667   transpile: true
1668   cost_estimate: 3
1669   args:
1670     array: ObjId
1671     isMax: BoolImm
1673 - name: MathFunctionNumberResult
1674   shared: true
1675   transpile: true
1676   cost_estimate: 4
1677   args:
1678     input: NumberId
1679     fun: UnaryMathFunctionImm
1681 - name: NumberParseIntResult
1682   shared: true
1683   transpile: true
1684   cost_estimate: 5
1685   args:
1686     str: StringId
1687     radix: Int32Id
1689 - name: DoubleParseIntResult
1690   shared: true
1691   transpile: true
1692   cost_estimate: 2
1693   args:
1694     num: NumberId
1696 - name: ObjectToStringResult
1697   shared: true
1698   transpile: true
1699   cost_estimate: 4
1700   args:
1701     obj: ObjId
1703 - name: ReflectGetPrototypeOfResult
1704   shared: false
1705   transpile: true
1706   cost_estimate: 5
1707   args:
1708     obj: ObjId
1710 - name: StoreTypedArrayElement
1711   shared: true
1712   transpile: true
1713   cost_estimate: 3
1714   args:
1715     obj: ObjId
1716     elementType: ScalarTypeImm
1717     index: IntPtrId
1718     rhs: RawId
1719     handleOOB: BoolImm
1720     viewKind: ArrayBufferViewKindImm
1722 - name: AtomicsCompareExchangeResult
1723   shared: true
1724   transpile: true
1725   cost_estimate: 4
1726   args:
1727     obj: ObjId
1728     index: IntPtrId
1729     expected: RawId
1730     replacement: RawId
1731     elementType: ScalarTypeImm
1732     viewKind: ArrayBufferViewKindImm
1734 - name: AtomicsExchangeResult
1735   shared: true
1736   transpile: true
1737   cost_estimate: 4
1738   args:
1739     obj: ObjId
1740     index: IntPtrId
1741     value: RawId
1742     elementType: ScalarTypeImm
1743     viewKind: ArrayBufferViewKindImm
1745 - name: AtomicsAddResult
1746   shared: true
1747   transpile: true
1748   cost_estimate: 4
1749   args:
1750     obj: ObjId
1751     index: IntPtrId
1752     value: RawId
1753     elementType: ScalarTypeImm
1754     forEffect: BoolImm
1755     viewKind: ArrayBufferViewKindImm
1757 - name: AtomicsSubResult
1758   shared: true
1759   transpile: true
1760   cost_estimate: 4
1761   args:
1762     obj: ObjId
1763     index: IntPtrId
1764     value: RawId
1765     elementType: ScalarTypeImm
1766     forEffect: BoolImm
1767     viewKind: ArrayBufferViewKindImm
1769 - name: AtomicsAndResult
1770   shared: true
1771   transpile: true
1772   cost_estimate: 4
1773   args:
1774     obj: ObjId
1775     index: IntPtrId
1776     value: RawId
1777     elementType: ScalarTypeImm
1778     forEffect: BoolImm
1779     viewKind: ArrayBufferViewKindImm
1781 - name: AtomicsOrResult
1782   shared: true
1783   transpile: true
1784   cost_estimate: 4
1785   args:
1786     obj: ObjId
1787     index: IntPtrId
1788     value: RawId
1789     elementType: ScalarTypeImm
1790     forEffect: BoolImm
1791     viewKind: ArrayBufferViewKindImm
1793 - name: AtomicsXorResult
1794   shared: true
1795   transpile: true
1796   cost_estimate: 4
1797   args:
1798     obj: ObjId
1799     index: IntPtrId
1800     value: RawId
1801     elementType: ScalarTypeImm
1802     forEffect: BoolImm
1803     viewKind: ArrayBufferViewKindImm
1805 - name: AtomicsLoadResult
1806   shared: true
1807   transpile: true
1808   cost_estimate: 2
1809   args:
1810     obj: ObjId
1811     index: IntPtrId
1812     elementType: ScalarTypeImm
1813     viewKind: ArrayBufferViewKindImm
1815 - name: AtomicsStoreResult
1816   shared: true
1817   transpile: true
1818   cost_estimate: 2
1819   args:
1820     obj: ObjId
1821     index: IntPtrId
1822     value: RawId
1823     elementType: ScalarTypeImm
1824     viewKind: ArrayBufferViewKindImm
1826 - name: AtomicsIsLockFreeResult
1827   shared: true
1828   transpile: true
1829   cost_estimate: 1
1830   args:
1831     value: Int32Id
1833 - name: CallNativeSetter
1834   shared: false
1835   transpile: true
1836   cost_estimate: 5
1837   custom_writer: true
1838   args:
1839     receiver: ObjId
1840     setter: ObjectField
1841     rhs: ValId
1842     sameRealm: BoolImm
1843     nargsAndFlags: RawInt32Field
1845 - name: CallScriptedSetter
1846   shared: false
1847   transpile: true
1848   cost_estimate: 3
1849   custom_writer: true
1850   args:
1851     receiver: ObjId
1852     setter: ObjectField
1853     rhs: ValId
1854     sameRealm: BoolImm
1855     nargsAndFlags: RawInt32Field
1857 - name: CallInlinedSetter
1858   shared: false
1859   transpile: true
1860   cost_estimate: 3
1861   custom_writer: true
1862   args:
1863     receiver: ObjId
1864     setter: ObjectField
1865     rhs: ValId
1866     icScript: RawPointerField
1867     sameRealm: BoolImm
1868     nargsAndFlags: RawInt32Field
1870 - name: CallDOMSetter
1871   shared: false
1872   transpile: true
1873   cost_estimate: 4
1874   args:
1875     obj: ObjId
1876     jitInfo: RawPointerField
1877     rhs: ValId
1879 - name: CallSetArrayLength
1880   shared: false
1881   transpile: true
1882   cost_estimate: 5
1883   args:
1884     obj: ObjId
1885     strict: BoolImm
1886     rhs: ValId
1888 - name: ProxySet
1889   shared: false
1890   transpile: true
1891   cost_estimate: 5
1892   args:
1893     obj: ObjId
1894     id: IdField
1895     rhs: ValId
1896     strict: BoolImm
1898 - name: ProxySetByValue
1899   shared: false
1900   transpile: true
1901   cost_estimate: 5
1902   args:
1903     obj: ObjId
1904     id: ValId
1905     rhs: ValId
1906     strict: BoolImm
1908 - name: CallAddOrUpdateSparseElementHelper
1909   shared: false
1910   transpile: true
1911   cost_estimate: 5
1912   args:
1913     obj: ObjId
1914     id: Int32Id
1915     rhs: ValId
1916     strict: BoolImm
1918 - name: CallInt32ToString
1919   shared: true
1920   transpile: true
1921   cost_estimate: 4
1922   args:
1923     input: Int32Id
1924     result: StringId
1926 - name: CallNumberToString
1927   shared: true
1928   transpile: true
1929   cost_estimate: 4
1930   args:
1931     input: NumberId
1932     result: StringId
1934 - name: Int32ToStringWithBaseResult
1935   shared: true
1936   transpile: true
1937   cost_estimate: 3
1938   args:
1939     input: Int32Id
1940     base: Int32Id
1942 - name: BooleanToString
1943   shared: true
1944   transpile: true
1945   cost_estimate: 2
1946   args:
1947     input: BooleanId
1948     result: StringId
1950 - name: CallScriptedFunction
1951   shared: false
1952   transpile: true
1953   cost_estimate: 3
1954   custom_writer: true
1955   args:
1956     callee: ObjId
1957     argc: Int32Id
1958     flags: CallFlagsImm
1959     argcFixed: UInt32Imm
1961 - name: CallBoundScriptedFunction
1962   shared: false
1963   transpile: true
1964   cost_estimate: 3
1965   args:
1966     callee: ObjId
1967     target: ObjId
1968     argc: Int32Id
1969     flags: CallFlagsImm
1970     numBoundArgs: UInt32Imm
1972 - name: CallWasmFunction
1973   shared: false
1974   transpile: true
1975   cost_estimate: 3
1976   args:
1977     callee: ObjId
1978     argc: Int32Id
1979     flags: CallFlagsImm
1980     argcFixed: UInt32Imm
1981     funcExport: RawPointerField
1982     instance: ObjectField
1984 - name: GuardWasmArg
1985   shared: true
1986   transpile: true
1987   cost_estimate: 2
1988   args:
1989     arg: ValId
1990     type: WasmValTypeImm
1992 - name: CallNativeFunction
1993   shared: false
1994   transpile: true
1995   cost_estimate: 4
1996   custom_writer: true
1997   args:
1998     callee: ObjId
1999     argc: Int32Id
2000     flags: CallFlagsImm
2001     argcFixed: UInt32Imm
2002 #ifdef JS_SIMULATOR
2003     target: RawPointerField
2004 #else
2005     ignoresReturnValue: BoolImm
2006 #endif
2008 - name: CallDOMFunction
2009   shared: false
2010   transpile: true
2011   cost_estimate: 4
2012   custom_writer: true
2013   args:
2014     callee: ObjId
2015     argc: Int32Id
2016     thisObj: ObjId
2017     flags: CallFlagsImm
2018     argcFixed: UInt32Imm
2019 #ifdef JS_SIMULATOR
2020     target: RawPointerField
2021 #endif
2023 - name: CallClassHook
2024   shared: false
2025   transpile: true
2026   cost_estimate: 4
2027   custom_writer: true
2028   args:
2029     callee: ObjId
2030     argc: Int32Id
2031     flags: CallFlagsImm
2032     argcFixed: UInt32Imm
2033     target: RawPointerField
2035 - name: CallInlinedFunction
2036   shared: false
2037   transpile: true
2038   cost_estimate: 4
2039   custom_writer: true
2040   args:
2041     callee: ObjId
2042     argc: Int32Id
2043     icScript: RawPointerField
2044     flags: CallFlagsImm
2045     argcFixed: UInt32Imm
2047 #ifdef JS_PUNBOX64
2048 - name: CallScriptedProxyGetResult
2049   shared: false
2050   transpile: true
2051   cost_estimate: 4
2052   custom_writer: true
2053   args:
2054     target: ValId
2055     receiver: ObjId
2056     handler: ObjId
2057     trap: ObjectField
2058     property: IdField
2059     nargsAndFlags: UInt32Imm
2061 - name: CallScriptedProxyGetByValueResult
2062   shared: false
2063   transpile: true
2064   cost_estimate: 4
2065   custom_writer: true
2066   args:
2067     target: ValId
2068     receiver: ObjId
2069     handler: ObjId
2070     property: ValId
2071     trap: ObjectField
2072     nargsAndFlags: UInt32Imm
2073 #endif
2075 # Meta ops generate no code, but contain data for the Warp Transpiler.
2076 - name: MetaScriptedThisShape
2077   shared: true
2078   transpile: true
2079   cost_estimate: 0
2080   custom_writer: true
2081   args:
2082     thisShape: ShapeField
2084 - name: BindFunctionResult
2085   shared: false
2086   transpile: true
2087   cost_estimate: 5
2088   args:
2089     target: ObjId
2090     argc: UInt32Imm
2091     templateObject: ObjectField
2093 - name: SpecializedBindFunctionResult
2094   shared: false
2095   transpile: true
2096   cost_estimate: 4
2097   args:
2098     target: ObjId
2099     argc: UInt32Imm
2100     templateObject: ObjectField
2102 - name: LoadFixedSlotResult
2103   shared: false
2104   transpile: true
2105   cost_estimate: 1
2106   args:
2107     obj: ObjId
2108     offset: RawInt32Field
2110 - name: LoadFixedSlotTypedResult
2111   shared: false
2112   transpile: true
2113   cost_estimate: 1
2114   args:
2115     obj: ObjId
2116     offset: RawInt32Field
2117     type: ValueTypeImm
2119 - name: LoadDynamicSlotResult
2120   shared: false
2121   transpile: true
2122   cost_estimate: 1
2123   args:
2124     obj: ObjId
2125     offset: RawInt32Field
2127 - name: LoadDenseElementResult
2128   shared: true
2129   transpile: true
2130   cost_estimate: 2
2131   args:
2132     obj: ObjId
2133     index: Int32Id
2135 - name: LoadDenseElementHoleResult
2136   shared: true
2137   transpile: true
2138   cost_estimate: 2
2139   args:
2140     obj: ObjId
2141     index: Int32Id
2143 - name: CallGetSparseElementResult
2144   shared: true
2145   transpile: true
2146   cost_estimate: 5
2147   args:
2148     obj: ObjId
2149     index: Int32Id
2151 - name: LoadDenseElementExistsResult
2152   shared: true
2153   transpile: true
2154   cost_estimate: 1
2155   args:
2156     obj: ObjId
2157     index: Int32Id
2159 - name: LoadTypedArrayElementExistsResult
2160   shared: true
2161   transpile: true
2162   cost_estimate: 2
2163   args:
2164     obj: ObjId
2165     index: IntPtrId
2166     viewKind: ArrayBufferViewKindImm
2168 - name: LoadDenseElementHoleExistsResult
2169   shared: true
2170   transpile: true
2171   cost_estimate: 2
2172   args:
2173     obj: ObjId
2174     index: Int32Id
2176 - name: LoadTypedArrayElementResult
2177   shared: true
2178   transpile: true
2179   cost_estimate: 4
2180   args:
2181     obj: ObjId
2182     index: IntPtrId
2183     elementType: ScalarTypeImm
2184     handleOOB: BoolImm
2185     forceDoubleForUint32: BoolImm
2186     viewKind: ArrayBufferViewKindImm
2188 - name: LoadDataViewValueResult
2189   shared: true
2190   transpile: true
2191   cost_estimate: 4
2192   args:
2193     obj: ObjId
2194     offset: IntPtrId
2195     littleEndian: BooleanId
2196     elementType: ScalarTypeImm
2197     forceDoubleForUint32: BoolImm
2198     viewKind: ArrayBufferViewKindImm
2200 - name: StoreDataViewValueResult
2201   shared: true
2202   transpile: true
2203   cost_estimate: 4
2204   args:
2205     obj: ObjId
2206     offset: IntPtrId
2207     value: RawId
2208     littleEndian: BooleanId
2209     elementType: ScalarTypeImm
2210     viewKind: ArrayBufferViewKindImm
2212 - name: LoadInt32ArrayLengthResult
2213   shared: true
2214   transpile: true
2215   cost_estimate: 1
2216   args:
2217     obj: ObjId
2219 - name: LoadInt32ArrayLength
2220   shared: true
2221   transpile: true
2222   cost_estimate: 1
2223   args:
2224     obj: ObjId
2225     result: Int32Id
2227 - name: LoadArgumentsObjectArgResult
2228   shared: true
2229   transpile: true
2230   cost_estimate: 2
2231   args:
2232     obj: ObjId
2233     index: Int32Id
2235 - name: LoadArgumentsObjectArgHoleResult
2236   shared: true
2237   transpile: true
2238   cost_estimate: 2
2239   args:
2240     obj: ObjId
2241     index: Int32Id
2243 - name: LoadArgumentsObjectArgExistsResult
2244   shared: true
2245   transpile: true
2246   cost_estimate: 2
2247   args:
2248     obj: ObjId
2249     index: Int32Id
2251 - name: LoadArgumentsObjectLengthResult
2252   shared: true
2253   transpile: true
2254   cost_estimate: 1
2255   args:
2256     obj: ObjId
2258 - name: LoadArgumentsObjectLength
2259   shared: true
2260   transpile: true
2261   cost_estimate: 1
2262   args:
2263     obj: ObjId
2264     result: Int32Id
2266 - name: LoadFunctionLengthResult
2267   shared: true
2268   transpile: true
2269   cost_estimate: 2
2270   args:
2271     obj: ObjId
2273 - name: LoadFunctionNameResult
2274   shared: true
2275   transpile: true
2276   cost_estimate: 2
2277   args:
2278     obj: ObjId
2280 - name: LoadBoundFunctionNumArgs
2281   shared: true
2282   transpile: true
2283   cost_estimate: 1
2284   args:
2285     obj: ObjId
2286     result: Int32Id
2288 - name: LoadBoundFunctionTarget
2289   shared: true
2290   transpile: true
2291   cost_estimate: 1
2292   args:
2293     obj: ObjId
2294     result: ObjId
2296 - name: GuardBoundFunctionIsConstructor
2297   shared: true
2298   transpile: true
2299   cost_estimate: 1
2300   args:
2301     obj: ObjId
2303 - name: LoadArrayBufferByteLengthInt32Result
2304   shared: true
2305   transpile: true
2306   cost_estimate: 1
2307   args:
2308     obj: ObjId
2310 - name: LoadArrayBufferByteLengthDoubleResult
2311   shared: true
2312   transpile: true
2313   cost_estimate: 1
2314   args:
2315     obj: ObjId
2317 - name: LoadArrayBufferViewLengthInt32Result
2318   shared: true
2319   transpile: true
2320   cost_estimate: 1
2321   args:
2322     obj: ObjId
2324 - name: LoadArrayBufferViewLengthDoubleResult
2325   shared: true
2326   transpile: true
2327   cost_estimate: 1
2328   args:
2329     obj: ObjId
2331 - name: LinearizeForCharAccess
2332   shared: true
2333   transpile: true
2334   cost_estimate: 4
2335   args:
2336     str: StringId
2337     index: Int32Id
2338     result: StringId
2340 - name: LinearizeForCodePointAccess
2341   shared: true
2342   transpile: true
2343   cost_estimate: 4
2344   args:
2345     str: StringId
2346     index: Int32Id
2347     result: StringId
2349 - name: ToRelativeStringIndex
2350   shared: true
2351   transpile: true
2352   cost_estimate: 1
2353   args:
2354     index: Int32Id
2355     str: StringId
2356     result: Int32Id
2358 - name: LoadStringCharResult
2359   shared: false
2360   transpile: true
2361   cost_estimate: 5
2362   args:
2363     str: StringId
2364     index: Int32Id
2365     handleOOB: BoolImm
2367 - name: LoadStringAtResult
2368   shared: false
2369   transpile: true
2370   cost_estimate: 5
2371   args:
2372     str: StringId
2373     index: Int32Id
2374     handleOOB: BoolImm
2376 - name: LoadStringCharCodeResult
2377   shared: true
2378   transpile: true
2379   cost_estimate: 3
2380   args:
2381     str: StringId
2382     index: Int32Id
2383     handleOOB: BoolImm
2385 - name: LoadStringCodePointResult
2386   shared: true
2387   transpile: true
2388   cost_estimate: 3
2389   args:
2390     str: StringId
2391     index: Int32Id
2392     handleOOB: BoolImm
2394 - name: LoadStringLengthResult
2395   shared: true
2396   transpile: true
2397   cost_estimate: 1
2398   args:
2399     str: StringId
2401 - name: FrameIsConstructingResult
2402   shared: false
2403   transpile: true
2404   cost_estimate: 1
2405   args:
2407 - name: LoadObjectResult
2408   shared: true
2409   transpile: true
2410   cost_estimate: 1
2411   args:
2412     obj: ObjId
2414 - name: LoadStringResult
2415   shared: true
2416   transpile: true
2417   cost_estimate: 1
2418   args:
2419     str: StringId
2421 - name: LoadSymbolResult
2422   shared: true
2423   transpile: true
2424   cost_estimate: 1
2425   args:
2426     sym: SymbolId
2428 - name: LoadInt32Result
2429   shared: true
2430   transpile: true
2431   cost_estimate: 1
2432   args:
2433     val: Int32Id
2435 - name: LoadDoubleResult
2436   shared: true
2437   transpile: true
2438   cost_estimate: 2
2439   args:
2440     val: NumberId
2442 - name: LoadBigIntResult
2443   shared: true
2444   transpile: true
2445   cost_estimate: 1
2446   args:
2447     val: BigIntId
2449 - name: CallScriptedGetterResult
2450   shared: false
2451   transpile: true
2452   cost_estimate: 5
2453   custom_writer: true
2454   args:
2455     receiver: ValId
2456     getter: ObjectField
2457     sameRealm: BoolImm
2458     nargsAndFlags: RawInt32Field
2460 - name: CallInlinedGetterResult
2461   shared: false
2462   transpile: true
2463   cost_estimate: 5
2464   custom_writer: true
2465   args:
2466     receiver: ValId
2467     getter: ObjectField
2468     icScript: RawPointerField
2469     sameRealm: BoolImm
2470     nargsAndFlags: RawInt32Field
2472 - name: CallNativeGetterResult
2473   shared: false
2474   transpile: true
2475   cost_estimate: 5
2476   custom_writer: true
2477   args:
2478     receiver: ValId
2479     getter: ObjectField
2480     sameRealm: BoolImm
2481     nargsAndFlags: RawInt32Field
2483 - name: CallDOMGetterResult
2484   shared: false
2485   transpile: true
2486   cost_estimate: 4
2487   args:
2488     obj: ObjId
2489     jitInfo: RawPointerField
2491 - name: ProxyGetResult
2492   shared: false
2493   transpile: true
2494   cost_estimate: 5
2495   args:
2496     obj: ObjId
2497     id: IdField
2499 - name: ProxyGetByValueResult
2500   shared: true
2501   transpile: true
2502   cost_estimate: 5
2503   args:
2504     obj: ObjId
2505     id: ValId
2507 - name: ProxyHasPropResult
2508   shared: true
2509   transpile: true
2510   cost_estimate: 5
2511   args:
2512     obj: ObjId
2513     id: ValId
2514     hasOwn: BoolImm
2516 - name: CallObjectHasSparseElementResult
2517   shared: true
2518   transpile: true
2519   cost_estimate: 4
2520   args:
2521     obj: ObjId
2522     index: Int32Id
2524 - name: CallNativeGetElementResult
2525   shared: true
2526   transpile: true
2527   cost_estimate: 5
2528   args:
2529     obj: ObjId
2530     index: Int32Id
2532 - name: CallNativeGetElementSuperResult
2533   shared: true
2534   transpile: true
2535   cost_estimate: 5
2536   args:
2537     obj: ObjId
2538     index: Int32Id
2539     receiver: ValId
2541 - name: GetNextMapSetEntryForIteratorResult
2542   shared: true
2543   transpile: true
2544   cost_estimate: 4
2545   args:
2546     iter: ObjId
2547     resultArr: ObjId
2548     isMap: BoolImm
2550 - name: LoadUndefinedResult
2551   shared: true
2552   transpile: true
2553   cost_estimate: 1
2554   args:
2556 - name: LoadBooleanResult
2557   shared: true
2558   transpile: true
2559   cost_estimate: 1
2560   args:
2561     val: BoolImm
2563 - name: LoadInt32Constant
2564   shared: true
2565   transpile: true
2566   cost_estimate: 1
2567   args:
2568     val: RawInt32Field
2569     result: Int32Id
2571 - name: LoadDoubleConstant
2572   shared: true
2573   transpile: true
2574   cost_estimate: 1
2575   args:
2576     val: DoubleField
2577     result: NumberId
2579 - name: LoadBooleanConstant
2580   shared: true
2581   transpile: true
2582   cost_estimate: 1
2583   args:
2584     val: BoolImm
2585     result: BooleanId
2587 - name: LoadUndefined
2588   shared: true
2589   transpile: true
2590   cost_estimate: 1
2591   args:
2592     result: ValId
2594 - name: LoadConstantString
2595   shared: true
2596   transpile: true
2597   cost_estimate: 1
2598   args:
2599     str: StringField
2600     result: StringId
2602 - name: LoadConstantStringResult
2603   shared: false
2604   transpile: true
2605   cost_estimate: 1
2606   args:
2607     str: StringField
2609 - name: LoadInstanceOfObjectResult
2610   shared: true
2611   transpile: true
2612   cost_estimate: 3
2613   args:
2614     lhs: ValId
2615     proto: ObjId
2617 - name: LoadTypeOfObjectResult
2618   shared: true
2619   transpile: true
2620   cost_estimate: 4
2621   args:
2622     obj: ObjId
2624 - name: DoubleAddResult
2625   shared: true
2626   transpile: true
2627   cost_estimate: 2
2628   args:
2629     lhs: NumberId
2630     rhs: NumberId
2632 - name: DoubleSubResult
2633   shared: true
2634   transpile: true
2635   cost_estimate: 2
2636   args:
2637     lhs: NumberId
2638     rhs: NumberId
2640 - name: DoubleMulResult
2641   shared: true
2642   transpile: true
2643   cost_estimate: 2
2644   args:
2645     lhs: NumberId
2646     rhs: NumberId
2648 - name: DoubleDivResult
2649   shared: true
2650   transpile: true
2651   cost_estimate: 2
2652   args:
2653     lhs: NumberId
2654     rhs: NumberId
2656 - name: DoubleModResult
2657   shared: true
2658   transpile: true
2659   cost_estimate: 4
2660   args:
2661     lhs: NumberId
2662     rhs: NumberId
2664 - name: DoublePowResult
2665   shared: true
2666   transpile: true
2667   cost_estimate: 4
2668   args:
2669     lhs: NumberId
2670     rhs: NumberId
2672 - name: Int32AddResult
2673   shared: true
2674   transpile: true
2675   cost_estimate: 1
2676   args:
2677     lhs: Int32Id
2678     rhs: Int32Id
2680 - name: Int32SubResult
2681   shared: true
2682   transpile: true
2683   cost_estimate: 1
2684   args:
2685     lhs: Int32Id
2686     rhs: Int32Id
2688 - name: Int32MulResult
2689   shared: true
2690   transpile: true
2691   cost_estimate: 2
2692   args:
2693     lhs: Int32Id
2694     rhs: Int32Id
2696 - name: Int32DivResult
2697   shared: true
2698   transpile: true
2699   cost_estimate: 2
2700   args:
2701     lhs: Int32Id
2702     rhs: Int32Id
2704 - name: Int32ModResult
2705   shared: true
2706   transpile: true
2707   cost_estimate: 2
2708   args:
2709     lhs: Int32Id
2710     rhs: Int32Id
2712 - name: Int32PowResult
2713   shared: true
2714   transpile: true
2715   cost_estimate: 1
2716   args:
2717     lhs: Int32Id
2718     rhs: Int32Id
2720 - name: BigIntAddResult
2721   shared: true
2722   transpile: true
2723   cost_estimate: 5
2724   args:
2725     lhs: BigIntId
2726     rhs: BigIntId
2728 - name: BigIntSubResult
2729   shared: true
2730   transpile: true
2731   cost_estimate: 5
2732   args:
2733     lhs: BigIntId
2734     rhs: BigIntId
2736 - name: BigIntMulResult
2737   shared: true
2738   transpile: true
2739   cost_estimate: 5
2740   args:
2741     lhs: BigIntId
2742     rhs: BigIntId
2744 - name: BigIntDivResult
2745   shared: true
2746   transpile: true
2747   cost_estimate: 5
2748   args:
2749     lhs: BigIntId
2750     rhs: BigIntId
2752 - name: BigIntModResult
2753   shared: true
2754   transpile: true
2755   cost_estimate: 5
2756   args:
2757     lhs: BigIntId
2758     rhs: BigIntId
2760 - name: BigIntPowResult
2761   shared: true
2762   transpile: true
2763   cost_estimate: 5
2764   args:
2765     lhs: BigIntId
2766     rhs: BigIntId
2768 - name: Int32BitOrResult
2769   shared: true
2770   transpile: true
2771   cost_estimate: 1
2772   args:
2773     lhs: Int32Id
2774     rhs: Int32Id
2776 - name: Int32BitXorResult
2777   shared: true
2778   transpile: true
2779   cost_estimate: 1
2780   args:
2781     lhs: Int32Id
2782     rhs: Int32Id
2784 - name: Int32BitAndResult
2785   shared: true
2786   transpile: true
2787   cost_estimate: 1
2788   args:
2789     lhs: Int32Id
2790     rhs: Int32Id
2792 - name: Int32LeftShiftResult
2793   shared: true
2794   transpile: true
2795   cost_estimate: 1
2796   args:
2797     lhs: Int32Id
2798     rhs: Int32Id
2800 - name: Int32RightShiftResult
2801   shared: true
2802   transpile: true
2803   cost_estimate: 1
2804   args:
2805     lhs: Int32Id
2806     rhs: Int32Id
2808 - name: Int32URightShiftResult
2809   shared: true
2810   transpile: true
2811   cost_estimate: 2
2812   args:
2813     lhs: Int32Id
2814     rhs: Int32Id
2815     forceDouble: BoolImm
2817 - name: Int32NotResult
2818   shared: true
2819   transpile: true
2820   cost_estimate: 1
2821   args:
2822     input: Int32Id
2824 - name: BigIntBitOrResult
2825   shared: true
2826   transpile: true
2827   cost_estimate: 5
2828   args:
2829     lhs: BigIntId
2830     rhs: BigIntId
2832 - name: BigIntBitXorResult
2833   shared: true
2834   transpile: true
2835   cost_estimate: 5
2836   args:
2837     lhs: BigIntId
2838     rhs: BigIntId
2840 - name: BigIntBitAndResult
2841   shared: true
2842   transpile: true
2843   cost_estimate: 5
2844   args:
2845     lhs: BigIntId
2846     rhs: BigIntId
2848 - name: BigIntLeftShiftResult
2849   shared: true
2850   transpile: true
2851   cost_estimate: 5
2852   args:
2853     lhs: BigIntId
2854     rhs: BigIntId
2856 - name: BigIntRightShiftResult
2857   shared: true
2858   transpile: true
2859   cost_estimate: 5
2860   args:
2861     lhs: BigIntId
2862     rhs: BigIntId
2864 - name: BigIntNotResult
2865   shared: true
2866   transpile: true
2867   cost_estimate: 5
2868   args:
2869     input: BigIntId
2871 - name: Int32NegationResult
2872   shared: true
2873   transpile: true
2874   cost_estimate: 1
2875   args:
2876     input: Int32Id
2878 - name: DoubleNegationResult
2879   shared: true
2880   transpile: true
2881   cost_estimate: 1
2882   args:
2883     input: NumberId
2885 - name: BigIntNegationResult
2886   shared: true
2887   transpile: true
2888   cost_estimate: 5
2889   args:
2890     input: BigIntId
2892 - name: Int32IncResult
2893   shared: true
2894   transpile: true
2895   cost_estimate: 1
2896   args:
2897     input: Int32Id
2899 - name: Int32DecResult
2900   shared: true
2901   transpile: true
2902   cost_estimate: 1
2903   args:
2904     input: Int32Id
2906 - name: DoubleIncResult
2907   shared: true
2908   transpile: true
2909   cost_estimate: 1
2910   args:
2911     input: NumberId
2913 - name: DoubleDecResult
2914   shared: true
2915   transpile: true
2916   cost_estimate: 1
2917   args:
2918     input: NumberId
2920 - name: BigIntIncResult
2921   shared: true
2922   transpile: true
2923   cost_estimate: 5
2924   args:
2925     input: BigIntId
2927 - name: BigIntDecResult
2928   shared: true
2929   transpile: true
2930   cost_estimate: 5
2931   args:
2932     input: BigIntId
2934 - name: LoadInt32TruthyResult
2935   shared: true
2936   transpile: true
2937   cost_estimate: 2
2938   args:
2939     input: ValId
2941 - name: LoadDoubleTruthyResult
2942   shared: true
2943   transpile: true
2944   cost_estimate: 2
2945   args:
2946     input: NumberId
2948 - name: LoadStringTruthyResult
2949   shared: true
2950   transpile: true
2951   cost_estimate: 2
2952   args:
2953     str: StringId
2955 - name: LoadObjectTruthyResult
2956   shared: true
2957   transpile: true
2958   cost_estimate: 4
2959   args:
2960     obj: ObjId
2962 - name: LoadBigIntTruthyResult
2963   shared: true
2964   transpile: true
2965   cost_estimate: 2
2966   args:
2967     bigInt: BigIntId
2969 - name: LoadValueTruthyResult
2970   shared: true
2971   transpile: true
2972   cost_estimate: 4
2973   args:
2974     input: ValId
2976 - name: LoadValueResult
2977   shared: false
2978   transpile: false
2979   cost_estimate: 1
2980   args:
2981     val: ValueField
2983 - name: LoadOperandResult
2984   shared: true
2985   transpile: true
2986   cost_estimate: 1
2987   args:
2988     input: ValId
2990 - name: NewPlainObjectResult
2991   shared: false
2992   transpile: true
2993   cost_estimate: 4
2994   args:
2995     numFixedSlots: UInt32Imm
2996     numDynamicSlots: UInt32Imm
2997     allocKind: AllocKindImm
2998     shape: ShapeField
2999     site: AllocSiteField
3001 - name: NewArrayObjectResult
3002   shared: false
3003   transpile: true
3004   cost_estimate: 4
3005   args:
3006     arrayLength: UInt32Imm
3007     shape: ShapeField
3008     site: AllocSiteField
3010 - name: CallStringConcatResult
3011   shared: true
3012   transpile: true
3013   cost_estimate: 5
3014   args:
3015     lhs: StringId
3016     rhs: StringId
3018 - name: CallStringObjectConcatResult
3019   shared: false
3020   transpile: false
3021   cost_estimate: 5
3022   args:
3023     lhs: ValId
3024     rhs: ValId
3026 - name: CallIsSuspendedGeneratorResult
3027   shared: true
3028   transpile: false
3029   cost_estimate: 2
3030   args:
3031     val: ValId
3033 - name: CompareStringResult
3034   shared: false
3035   transpile: true
3036   cost_estimate: 5
3037   args:
3038     op: JSOpImm
3039     lhs: StringId
3040     rhs: StringId
3042 - name: CompareObjectResult
3043   shared: true
3044   transpile: true
3045   cost_estimate: 2
3046   args:
3047     op: JSOpImm
3048     lhs: ObjId
3049     rhs: ObjId
3051 - name: CompareSymbolResult
3052   shared: true
3053   transpile: true
3054   cost_estimate: 2
3055   args:
3056     op: JSOpImm
3057     lhs: SymbolId
3058     rhs: SymbolId
3060 - name: CompareInt32Result
3061   shared: true
3062   transpile: true
3063   cost_estimate: 2
3064   args:
3065     op: JSOpImm
3066     lhs: Int32Id
3067     rhs: Int32Id
3069 - name: CompareDoubleResult
3070   shared: true
3071   transpile: true
3072   cost_estimate: 2
3073   args:
3074     op: JSOpImm
3075     lhs: NumberId
3076     rhs: NumberId
3078 - name: CompareBigIntResult
3079   shared: true
3080   transpile: true
3081   cost_estimate: 4
3082   args:
3083     op: JSOpImm
3084     lhs: BigIntId
3085     rhs: BigIntId
3087 - name: CompareBigIntInt32Result
3088   shared: true
3089   transpile: true
3090   cost_estimate: 3
3091   args:
3092     op: JSOpImm
3093     lhs: BigIntId
3094     rhs: Int32Id
3096 - name: CompareBigIntNumberResult
3097   shared: true
3098   transpile: true
3099   cost_estimate: 4
3100   args:
3101     op: JSOpImm
3102     lhs: BigIntId
3103     rhs: NumberId
3105 - name: CompareBigIntStringResult
3106   shared: true
3107   transpile: true
3108   cost_estimate: 5
3109   args:
3110     op: JSOpImm
3111     lhs: BigIntId
3112     rhs: StringId
3114 - name: CompareNullUndefinedResult
3115   shared: true
3116   transpile: true
3117   cost_estimate: 2
3118   args:
3119     op: JSOpImm
3120     isUndefined: BoolImm
3121     input: ValId
3123 - name: CompareDoubleSameValueResult
3124   shared: true
3125   transpile: true
3126   cost_estimate: 3
3127   args:
3128     lhs: NumberId
3129     rhs: NumberId
3131 - name: SameValueResult
3132   shared: false
3133   transpile: true
3134   cost_estimate: 4
3135   args:
3136     lhs: ValId
3137     rhs: ValId
3139 - name: IndirectTruncateInt32Result
3140   shared: true
3141   transpile: true
3142   cost_estimate: 1
3143   args:
3144     val: Int32Id
3146 - name: BigIntAsIntNResult
3147   shared: true
3148   transpile: true
3149   cost_estimate: 5
3150   args:
3151     bits: Int32Id
3152     bigInt: BigIntId
3154 - name: BigIntAsUintNResult
3155   shared: true
3156   transpile: true
3157   cost_estimate: 5
3158   args:
3159     bits: Int32Id
3160     bigInt: BigIntId
3162 - name: SetHasResult
3163   shared: true
3164   transpile: true
3165   cost_estimate: 5
3166   args:
3167     set: ObjId
3168     val: ValId
3170 - name: SetHasNonGCThingResult
3171   shared: true
3172   transpile: true
3173   cost_estimate: 3
3174   args:
3175     set: ObjId
3176     val: ValId
3178 - name: SetHasStringResult
3179   shared: false
3180   transpile: true
3181   cost_estimate: 5
3182   args:
3183     set: ObjId
3184     str: StringId
3186 - name: SetHasSymbolResult
3187   shared: true
3188   transpile: true
3189   cost_estimate: 3
3190   args:
3191     set: ObjId
3192     sym: SymbolId
3194 - name: SetHasBigIntResult
3195   shared: true
3196   transpile: true
3197   cost_estimate: 3
3198   args:
3199     set: ObjId
3200     bigInt: BigIntId
3202 - name: SetHasObjectResult
3203   shared: true
3204   transpile: true
3205   cost_estimate: 3
3206   args:
3207     set: ObjId
3208     obj: ObjId
3210 - name: SetSizeResult
3211   shared: true
3212   transpile: true
3213   cost_estimate: 1
3214   args:
3215     set: ObjId
3217 - name: MapHasResult
3218   shared: true
3219   transpile: true
3220   cost_estimate: 5
3221   args:
3222     map: ObjId
3223     val: ValId
3225 - name: MapHasNonGCThingResult
3226   shared: true
3227   transpile: true
3228   cost_estimate: 3
3229   args:
3230     map: ObjId
3231     val: ValId
3233 - name: MapHasStringResult
3234   shared: false
3235   transpile: true
3236   cost_estimate: 5
3237   args:
3238     map: ObjId
3239     str: StringId
3241 - name: MapHasSymbolResult
3242   shared: true
3243   transpile: true
3244   cost_estimate: 3
3245   args:
3246     map: ObjId
3247     sym: SymbolId
3249 - name: MapHasBigIntResult
3250   shared: true
3251   transpile: true
3252   cost_estimate: 3
3253   args:
3254     map: ObjId
3255     bigInt: BigIntId
3257 - name: MapHasObjectResult
3258   shared: true
3259   transpile: true
3260   cost_estimate: 3
3261   args:
3262     map: ObjId
3263     obj: ObjId
3265 - name: MapGetResult
3266   shared: true
3267   transpile: true
3268   cost_estimate: 5
3269   args:
3270     map: ObjId
3271     val: ValId
3273 - name: MapGetNonGCThingResult
3274   shared: true
3275   transpile: true
3276   cost_estimate: 3
3277   args:
3278     map: ObjId
3279     val: ValId
3281 - name: MapGetStringResult
3282   shared: false
3283   transpile: true
3284   cost_estimate: 5
3285   args:
3286     map: ObjId
3287     str: StringId
3289 - name: MapGetSymbolResult
3290   shared: true
3291   transpile: true
3292   cost_estimate: 3
3293   args:
3294     map: ObjId
3295     sym: SymbolId
3297 - name: MapGetBigIntResult
3298   shared: true
3299   transpile: true
3300   cost_estimate: 3
3301   args:
3302     map: ObjId
3303     bigInt: BigIntId
3305 - name: MapGetObjectResult
3306   shared: true
3307   transpile: true
3308   cost_estimate: 3
3309   args:
3310     map: ObjId
3311     obj: ObjId
3313 - name: MapSizeResult
3314   shared: true
3315   transpile: true
3316   cost_estimate: 1
3317   args:
3318     map: ObjId
3320 - name: ArrayFromArgumentsObjectResult
3321   shared: true
3322   transpile: true
3323   cost_estimate: 5
3324   args:
3325     obj: ObjId
3326     shape: ShapeField
3328 - name: CloseIterScriptedResult
3329   shared: false
3330   transpile: true
3331   cost_estimate: 5
3332   args:
3333     iter: ObjId
3334     callee: ObjId
3335     kind: CompletionKindImm
3336     targetNargs: UInt32Imm
3338 - name: CallPrintString
3339   shared: true
3340   transpile: false
3341   cost_estimate: 1
3342   args:
3343     str: StaticStringImm
3345 - name: Breakpoint
3346   shared: true
3347   transpile: false
3348   cost_estimate: 1
3349   args:
3351 - name: WrapResult
3352   shared: true
3353   transpile: false
3354   cost_estimate: 4
3355   args:
3357 - name: Bailout
3358   shared: true
3359   transpile: true
3360   cost_estimate: 0
3361   args:
3363 - name: AssertRecoveredOnBailoutResult
3364   shared: true
3365   transpile: true
3366   cost_estimate: 1
3367   args:
3368     val: ValId
3369     mustBeRecovered: BoolImm
3371 - name: AssertPropertyLookup
3372   shared: true
3373   transpile: true
3374   cost_estimate: 4
3375   args:
3376     obj: ObjId
3377     id: IdField
3378     slot: RawInt32Field
3380 #ifdef FUZZING_JS_FUZZILLI
3381 - name: FuzzilliHashResult
3382   shared: true
3383   transpile: true
3384   cost_estimate: 4
3385   args:
3386     val: ValId
3387 #endif