Bug 1842773 - Part 19: Add guard instruction for fixed-length typed arrays. r=sfink...
[gecko.git] / js / src / jit / CacheIROps.yaml
blob7e3ba9c9dc113defd2fb9d1afee642016d24a6bd
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 on a realm fuse.
276 - name: GuardFuse
277   shared: true
278   transpile: true
279   cost_estimate: 1
280   args:
281     fuseWord: RealmFuseIndexImm
283 # Guard on an arbitrary JSClass.
284 - name: GuardAnyClass
285   shared: false
286   transpile: true
287   cost_estimate: 1
288   args:
289     obj: ObjId
290     clasp: RawPointerField
292 - name: GuardGlobalGeneration
293   shared: true
294   transpile: true
295   cost_estimate: 1
296   args:
297     expected: RawInt32Field
298     generationAddr: RawPointerField
300 - name: HasClassResult
301   shared: false
302   transpile: true
303   cost_estimate: 1
304   args:
305     obj: ObjId
306     clasp: RawPointerField
308 - name: CallRegExpMatcherResult
309   shared: false
310   transpile: true
311   cost_estimate: 5
312   args:
313     regexp: ObjId
314     input: StringId
315     lastIndex: Int32Id
316     stub: JitCodeField
318 - name: CallRegExpSearcherResult
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: RegExpSearcherLastLimitResult
329   shared: true
330   transpile: true
331   cost_estimate: 1
332   args:
334 - name: RegExpHasCaptureGroupsResult
335   shared: false
336   transpile: true
337   cost_estimate: 1
338   args:
339     regexp: ObjId
340     input: StringId
342 - name: RegExpBuiltinExecMatchResult
343   shared: false
344   transpile: true
345   cost_estimate: 5
346   args:
347     regexp: ObjId
348     input: StringId
349     stub: JitCodeField
351 - name: RegExpBuiltinExecTestResult
352   shared: false
353   transpile: true
354   cost_estimate: 5
355   args:
356     regexp: ObjId
357     input: StringId
358     stub: JitCodeField
360 - name: RegExpFlagResult
361   shared: true
362   transpile: true
363   cost_estimate: 2
364   args:
365     regexp: ObjId
366     flagsMask: Int32Imm
368 - name: CallSubstringKernelResult
369   shared: true
370   transpile: true
371   cost_estimate: 5
372   args:
373     str: StringId
374     begin: Int32Id
375     length: Int32Id
377 - name: StringReplaceStringResult
378   shared: true
379   transpile: true
380   cost_estimate: 5
381   args:
382     str: StringId
383     pattern: StringId
384     replacement: StringId
386 - name: StringSplitStringResult
387   shared: true
388   transpile: true
389   cost_estimate: 5
390   args:
391     str: StringId
392     separator: StringId
394 - name: RegExpPrototypeOptimizableResult
395   shared: true
396   transpile: true
397   cost_estimate: 4
398   args:
399     proto: ObjId
401 - name: RegExpInstanceOptimizableResult
402   shared: true
403   transpile: true
404   cost_estimate: 4
405   args:
406     regexp: ObjId
407     proto: ObjId
409 - name: GetFirstDollarIndexResult
410   shared: true
411   transpile: true
412   cost_estimate: 5
413   args:
414     str: StringId
416 # Add a reference to a global in the compartment to keep it alive.
417 - name: GuardCompartment
418   shared: false
419   transpile: false
420   cost_estimate: 2
421   args:
422     obj: ObjId
423     global: ObjectField
424     compartment: RawPointerField
426 - name: GuardIsExtensible
427   shared: true
428   transpile: true
429   cost_estimate: 1
430   args:
431     obj: ObjId
433 - name: GuardIsNativeObject
434   shared: true
435   transpile: true
436   cost_estimate: 1
437   args:
438     obj: ObjId
440 - name: GuardIsProxy
441   shared: true
442   transpile: true
443   cost_estimate: 1
444   args:
445     obj: ObjId
447 - name: GuardIsNotProxy
448   shared: true
449   transpile: true
450   cost_estimate: 1
451   args:
452     obj: ObjId
454 - name: GuardIsNotArrayBufferMaybeShared
455   shared: true
456   transpile: true
457   cost_estimate: 1
458   args:
459     obj: ObjId
461 - name: GuardIsTypedArray
462   shared: true
463   transpile: true
464   cost_estimate: 1
465   args:
466     obj: ObjId
468 - name: GuardIsFixedLengthTypedArray
469   shared: true
470   transpile: true
471   cost_estimate: 1
472   args:
473     obj: ObjId
475 - name: GuardHasProxyHandler
476   shared: false
477   transpile: true
478   cost_estimate: 1
479   args:
480     obj: ObjId
481     handler: RawPointerField
483 - name: GuardIsNotDOMProxy
484   shared: true
485   transpile: true
486   cost_estimate: 1
487   args:
488     obj: ObjId
490 - name: GuardSpecificObject
491   shared: false
492   transpile: true
493   cost_estimate: 1
494   args:
495     obj: ObjId
496     expected: WeakObjectField
498 - name: GuardObjectIdentity
499   shared: true
500   transpile: true
501   cost_estimate: 1
502   args:
503     obj1: ObjId
504     obj2: ObjId
506 - name: GuardSpecificFunction
507   shared: false
508   transpile: true
509   cost_estimate: 1
510   custom_writer: true
511   args:
512     fun: ObjId
513     expected: WeakObjectField
514     nargsAndFlags: RawInt32Field
516 - name: GuardFunctionScript
517   shared: false
518   transpile: true
519   cost_estimate: 1
520   custom_writer: true
521   args:
522     obj: ObjId
523     expected: WeakBaseScriptField
524     nargsAndFlags: RawInt32Field
526 - name: GuardSpecificAtom
527   shared: false
528   transpile: true
529   cost_estimate: 4
530   args:
531     str: StringId
532     expected: AtomField
534 - name: GuardSpecificSymbol
535   shared: false
536   transpile: true
537   cost_estimate: 1
538   args:
539     sym: SymbolId
540     expected: SymbolField
542 - name: GuardSpecificInt32
543   shared: true
544   transpile: true
545   cost_estimate: 1
546   args:
547     num: Int32Id
548     expected: Int32Imm
550 - name: GuardNoDenseElements
551   shared: true
552   transpile: true
553   cost_estimate: 1
554   args:
555     obj: ObjId
557 - name: GuardStringToIndex
558   shared: true
559   transpile: true
560   cost_estimate: 4
561   args:
562     str: StringId
563     result: Int32Id
565 - name: GuardStringToInt32
566   shared: true
567   transpile: true
568   cost_estimate: 4
569   args:
570     str: StringId
571     result: Int32Id
573 - name: GuardStringToNumber
574   shared: true
575   transpile: true
576   cost_estimate: 4
577   args:
578     str: StringId
579     result: NumberId
581 - name: BooleanToNumber
582   shared: true
583   transpile: true
584   cost_estimate: 1
585   args:
586     boolean: BooleanId
587     result: NumberId
589 - name: GuardHasGetterSetter
590   shared: true
591   transpile: true
592   cost_estimate: 4
593   args:
594     obj: ObjId
595     id: IdField
596     getterSetter: WeakGetterSetterField
598 - name: GuardInt32IsNonNegative
599   shared: true
600   transpile: true
601   cost_estimate: 1
602   args:
603     index: Int32Id
605 - name: GuardIndexIsValidUpdateOrAdd
606   shared: true
607   transpile: true
608   cost_estimate: 1
609   args:
610     obj: ObjId
611     index: Int32Id
613 - name: GuardIndexIsNotDenseElement
614   shared: true
615   transpile: true
616   cost_estimate: 1
617   args:
618     obj: ObjId
619     index: Int32Id
621 - name: GuardTagNotEqual
622   shared: true
623   transpile: true
624   cost_estimate: 1
625   args:
626     lhs: ValueTagId
627     rhs: ValueTagId
629 - name: GuardXrayExpandoShapeAndDefaultProto
630   shared: true
631   transpile: false
632   cost_estimate: 2
633   args:
634     obj: ObjId
635     shapeWrapper: ObjectField
637 - name: GuardXrayNoExpando
638   shared: true
639   transpile: false
640   cost_estimate: 2
641   args:
642     obj: ObjId
644 # Guard obj[slot] == expected.
645 - name: GuardDynamicSlotIsSpecificObject
646   shared: true
647   transpile: true
648   cost_estimate: 1
649   args:
650     obj: ObjId
651     expected: ObjId
652     slot: RawInt32Field
654 # Guard obj[slot] is not an object.
655 - name: GuardDynamicSlotIsNotObject
656   shared: true
657   transpile: true
658   cost_estimate: 1
659   args:
660     obj: ObjId
661     slot: RawInt32Field
663 - name: GuardFixedSlotValue
664   shared: true
665   transpile: true
666   cost_estimate: 1
667   args:
668     obj: ObjId
669     offset: RawInt32Field
670     val: ValueField
672 - name: GuardDynamicSlotValue
673   shared: true
674   transpile: true
675   cost_estimate: 1
676   args:
677     obj: ObjId
678     offset: RawInt32Field
679     val: ValueField
681 - name: LoadScriptedProxyHandler
682   shared: true
683   transpile: true
684   cost_estimate: 1
685   args:
686     result: ValId
687     obj: ObjId
689 - name: IdToStringOrSymbol
690   shared: true
691   transpile: true
692   cost_estimate: 2
693   args:
694     result: ValId
695     id: ValId
697 - name: LoadFixedSlot
698   shared: true
699   transpile: true
700   cost_estimate: 1
701   args:
702     result: ValId
703     obj: ObjId
704     offset: RawInt32Field
706 - name: LoadDynamicSlot
707   shared: true
708   transpile: true
709   cost_estimate: 1
710   args:
711     result: ValId
712     obj: ObjId
713     slot: RawInt32Field
715 - name: GuardNoAllocationMetadataBuilder
716   shared: true
717   transpile: true
718   cost_estimate: 1
719   args:
720     builderAddr: RawPointerField
722 - name: GuardFunctionHasJitEntry
723   shared: true
724   transpile: true
725   cost_estimate: 1
726   args:
727     fun: ObjId
728     constructing: BoolImm
730 - name: GuardFunctionHasNoJitEntry
731   shared: true
732   transpile: true
733   cost_estimate: 1
734   args:
735     fun: ObjId
737 - name: GuardFunctionIsNonBuiltinCtor
738   shared: true
739   transpile: true
740   cost_estimate: 1
741   args:
742     fun: ObjId
744 - name: GuardFunctionIsConstructor
745   shared: true
746   transpile: true
747   cost_estimate: 1
748   args:
749     fun: ObjId
751 - name: GuardNotClassConstructor
752   shared: true
753   transpile: true
754   cost_estimate: 1
755   args:
756     fun: ObjId
758 - name: GuardArrayIsPacked
759   shared: true
760   transpile: true
761   cost_estimate: 1
762   args:
763     array: ObjId
765 - name: GuardArgumentsObjectFlags
766   shared: true
767   transpile: true
768   cost_estimate: 1
769   args:
770     obj: ObjId
771     flags: ByteImm
773 - name: LoadObject
774   shared: true
775   transpile: true
776   cost_estimate: 1
777   args:
778     result: ObjId
779     obj: ObjectField
781 # This is just LoadObject with extra information for the purpose of optimizing
782 # out shape guards if we're just storing to slots of the receiver object.
783 - name: LoadProtoObject
784   shared: true
785   transpile: true
786   cost_estimate: 1
787   args:
788     result: ObjId
789     protoObj: ObjectField
790     receiverObj: ObjId
792 - name: LoadProto
793   shared: true
794   transpile: true
795   cost_estimate: 1
796   args:
797     obj: ObjId
798     result: ObjId
800 - name: LoadEnclosingEnvironment
801   shared: true
802   transpile: true
803   cost_estimate: 1
804   args:
805     obj: ObjId
806     result: ObjId
808 - name: LoadWrapperTarget
809   shared: true
810   transpile: true
811   cost_estimate: 1
812   args:
813     obj: ObjId
814     result: ObjId
816 - name: LoadValueTag
817   shared: true
818   transpile: true
819   cost_estimate: 1
820   args:
821     val: ValId
822     result: ValueTagId
824 - name: LoadArgumentFixedSlot
825   shared: false
826   transpile: true
827   cost_estimate: 1
828   custom_writer: true
829   args:
830     result: ValId
831     slotIndex: ByteImm
833 - name: LoadArgumentDynamicSlot
834   shared: false
835   transpile: true
836   cost_estimate: 1
837   custom_writer: true
838   args:
839     result: ValId
840     argc: Int32Id
841     slotIndex: ByteImm
843 - name: TruncateDoubleToUInt32
844   shared: true
845   transpile: true
846   cost_estimate: 4
847   args:
848     input: NumberId
849     result: Int32Id
851 - name: DoubleToUint8Clamped
852   shared: true
853   transpile: true
854   cost_estimate: 2
855   args:
856     input: NumberId
857     result: Int32Id
859 - name: MegamorphicLoadSlotResult
860   shared: true
861   transpile: true
862   cost_estimate: 4
863   args:
864     obj: ObjId
865     name: IdField
867 - name: MegamorphicLoadSlotByValueResult
868   shared: true
869   transpile: true
870   cost_estimate: 4
871   args:
872     obj: ObjId
873     id: ValId
875 - name: MegamorphicStoreSlot
876   shared: true
877   transpile: true
878   cost_estimate: 5
879   args:
880     obj: ObjId
881     name: IdField
882     rhs: ValId
883     strict: BoolImm
885 - name: MegamorphicSetElement
886   shared: false
887   transpile: true
888   cost_estimate: 5
889   args:
890     obj: ObjId
891     id: ValId
892     rhs: ValId
893     strict: BoolImm
895 - name: MegamorphicHasPropResult
896   shared: true
897   transpile: true
898   cost_estimate: 4
899   args:
900     obj: ObjId
901     id: ValId
902     hasOwn: BoolImm
904 - name: ObjectToIteratorResult
905   shared: true
906   transpile: true
907   cost_estimate: 5
908   args:
909     obj: ObjId
910     enumeratorsAddr: RawPointerField
912 - name: ValueToIteratorResult
913   shared: true
914   transpile: true
915   cost_estimate: 5
916   args:
917     val: ValId
919 # See CacheIR.cpp 'DOM proxies' comment.
920 - name: LoadDOMExpandoValue
921   shared: true
922   transpile: true
923   cost_estimate: 1
924   args:
925     obj: ObjId
926     result: ValId
928 - name: LoadDOMExpandoValueGuardGeneration
929   shared: false
930   transpile: true
931   cost_estimate: 2
932   args:
933     obj: ObjId
934     expandoAndGeneration: RawPointerField
935     generation: RawInt64Field
936     result: ValId
938 - name: LoadDOMExpandoValueIgnoreGeneration
939   shared: true
940   transpile: true
941   cost_estimate: 1
942   args:
943     obj: ObjId
944     result: ValId
946 - name: GuardDOMExpandoMissingOrGuardShape
947   shared: false
948   transpile: true
949   cost_estimate: 2
950   args:
951     expando: ValId
952     shape: ShapeField
954 - name: StoreFixedSlot
955   shared: false
956   transpile: true
957   cost_estimate: 6
958   args:
959     obj: ObjId
960     offset: RawInt32Field
961     rhs: ValId
963 - name: StoreDynamicSlot
964   shared: false
965   transpile: true
966   cost_estimate: 6
967   args:
968     obj: ObjId
969     offset: RawInt32Field
970     rhs: ValId
972 - name: AddAndStoreFixedSlot
973   shared: false
974   transpile: true
975   cost_estimate: 6
976   args:
977     obj: ObjId
978     offset: RawInt32Field
979     rhs: ValId
980     newShape: ShapeField
982 - name: AddAndStoreDynamicSlot
983   shared: false
984   transpile: true
985   cost_estimate: 6
986   args:
987     obj: ObjId
988     offset: RawInt32Field
989     rhs: ValId
990     newShape: ShapeField
992 - name: AllocateAndStoreDynamicSlot
993   shared: false
994   transpile: true
995   cost_estimate: 6
996   args:
997     obj: ObjId
998     offset: RawInt32Field
999     rhs: ValId
1000     newShape: ShapeField
1001     numNewSlots: RawInt32Field
1003 - name: AddSlotAndCallAddPropHook
1004   shared: true
1005   transpile: true
1006   cost_estimate: 6
1007   args:
1008     obj: ObjId
1009     rhs: ValId
1010     newShape: ShapeField
1012 - name: StoreDenseElement
1013   shared: true
1014   transpile: true
1015   cost_estimate: 6
1016   args:
1017     obj: ObjId
1018     index: Int32Id
1019     rhs: ValId
1021 - name: StoreDenseElementHole
1022   shared: true
1023   transpile: true
1024   cost_estimate: 6
1025   args:
1026     obj: ObjId
1027     index: Int32Id
1028     rhs: ValId
1029     handleAdd: BoolImm
1031 - name: ArrayPush
1032   shared: true
1033   transpile: true
1034   cost_estimate: 6
1035   args:
1036     obj: ObjId
1037     rhs: ValId
1039 - name: ArrayJoinResult
1040   shared: false
1041   transpile: true
1042   cost_estimate: 5
1043   args:
1044     obj: ObjId
1045     sep: StringId
1047 - name: ObjectKeysResult
1048   shared: true
1049   transpile: true
1050   cost_estimate: 6
1051   args:
1052     obj: ObjId
1054 - name: PackedArrayPopResult
1055   shared: true
1056   transpile: true
1057   cost_estimate: 2
1058   args:
1059     array: ObjId
1061 - name: PackedArrayShiftResult
1062   shared: true
1063   transpile: true
1064   cost_estimate: 4
1065   args:
1066     array: ObjId
1068 - name: PackedArraySliceResult
1069   shared: false
1070   transpile: true
1071   cost_estimate: 5
1072   args:
1073     templateObject: ObjectField
1074     array: ObjId
1075     begin: Int32Id
1076     end: Int32Id
1078 - name: ArgumentsSliceResult
1079   shared: false
1080   transpile: true
1081   cost_estimate: 5
1082   args:
1083     templateObject: ObjectField
1084     args: ObjId
1085     begin: Int32Id
1086     end: Int32Id
1088 - name: IsArrayResult
1089   shared: false
1090   transpile: true
1091   cost_estimate: 5
1092   args:
1093     input: ValId
1095 - name: StoreFixedSlotUndefinedResult
1096   shared: true
1097   transpile: true
1098   args:
1099     obj: ObjId
1100     offset: RawInt32Field
1101     rhs: ValId
1103 - name: IsObjectResult
1104   shared: true
1105   transpile: true
1106   cost_estimate: 1
1107   args:
1108     input: ValId
1110 - name: IsPackedArrayResult
1111   shared: true
1112   transpile: true
1113   cost_estimate: 2
1114   args:
1115     obj: ObjId
1117 - name: IsCallableResult
1118   shared: true
1119   transpile: true
1120   cost_estimate: 4
1121   args:
1122     input: ValId
1124 - name: IsConstructorResult
1125   shared: true
1126   transpile: true
1127   cost_estimate: 4
1128   args:
1129     obj: ObjId
1131 - name: IsCrossRealmArrayConstructorResult
1132   shared: true
1133   transpile: true
1134   cost_estimate: 2
1135   args:
1136     obj: ObjId
1138 - name: IsTypedArrayResult
1139   shared: false
1140   transpile: true
1141   cost_estimate: 5
1142   args:
1143     obj: ObjId
1144     isPossiblyWrapped: BoolImm
1146 - name: IsTypedArrayConstructorResult
1147   shared: true
1148   transpile: true
1149   cost_estimate: 2
1150   args:
1151     obj: ObjId
1153 - name: ArrayBufferViewByteOffsetInt32Result
1154   shared: true
1155   transpile: true
1156   cost_estimate: 1
1157   args:
1158     obj: ObjId
1160 - name: ArrayBufferViewByteOffsetDoubleResult
1161   shared: true
1162   transpile: true
1163   cost_estimate: 1
1164   args:
1165     obj: ObjId
1167 - name: TypedArrayByteLengthInt32Result
1168   shared: true
1169   transpile: true
1170   cost_estimate: 2
1171   args:
1172     obj: ObjId
1174 - name: TypedArrayByteLengthDoubleResult
1175   shared: true
1176   transpile: true
1177   cost_estimate: 2
1178   args:
1179     obj: ObjId
1181 - name: TypedArrayElementSizeResult
1182   shared: true
1183   transpile: true
1184   cost_estimate: 2
1185   args:
1186     obj: ObjId
1188 - name: GuardHasAttachedArrayBuffer
1189   shared: true
1190   transpile: true
1191   cost_estimate: 2
1192   args:
1193     obj: ObjId
1195 - name: NewArrayIteratorResult
1196   shared: true
1197   transpile: true
1198   cost_estimate: 5
1199   args:
1200     templateObject: ObjectField
1202 - name: NewStringIteratorResult
1203   shared: true
1204   transpile: true
1205   cost_estimate: 5
1206   args:
1207     templateObject: ObjectField
1209 - name: NewRegExpStringIteratorResult
1210   shared: true
1211   transpile: true
1212   cost_estimate: 5
1213   args:
1214     templateObject: ObjectField
1216 - name: ObjectCreateResult
1217   shared: true
1218   transpile: true
1219   cost_estimate: 5
1220   args:
1221     templateObject: ObjectField
1223 - name: NewArrayFromLengthResult
1224   shared: true
1225   transpile: true
1226   cost_estimate: 5
1227   args:
1228     templateObject: ObjectField
1229     length: Int32Id
1231 - name: NewTypedArrayFromLengthResult
1232   shared: true
1233   transpile: true
1234   cost_estimate: 5
1235   args:
1236     templateObject: ObjectField
1237     length: Int32Id
1239 - name: NewTypedArrayFromArrayBufferResult
1240   shared: true
1241   transpile: true
1242   cost_estimate: 5
1243   args:
1244     templateObject: ObjectField
1245     buffer: ObjId
1246     byteOffset: ValId
1247     length: ValId
1249 - name: NewTypedArrayFromArrayResult
1250   shared: true
1251   transpile: true
1252   cost_estimate: 5
1253   args:
1254     templateObject: ObjectField
1255     array: ObjId
1257 - name: NewStringObjectResult
1258   shared: true
1259   transpile: true
1260   cost_estimate: 5
1261   args:
1262     templateObject: ObjectField
1263     str: StringId
1265 - name: StringFromCharCodeResult
1266   shared: false
1267   transpile: true
1268   cost_estimate: 5
1269   args:
1270     code: Int32Id
1272 - name: StringFromCodePointResult
1273   shared: false
1274   transpile: true
1275   cost_estimate: 5
1276   args:
1277     code: Int32Id
1279 - name: StringIncludesResult
1280   shared: true
1281   transpile: true
1282   cost_estimate: 5
1283   args:
1284     str: StringId
1285     searchStr: StringId
1287 - name: StringIndexOfResult
1288   shared: true
1289   transpile: true
1290   cost_estimate: 5
1291   args:
1292     str: StringId
1293     searchStr: StringId
1295 - name: StringLastIndexOfResult
1296   shared: true
1297   transpile: true
1298   cost_estimate: 5
1299   args:
1300     str: StringId
1301     searchStr: StringId
1303 - name: StringStartsWithResult
1304   shared: true
1305   transpile: true
1306   cost_estimate: 5
1307   args:
1308     str: StringId
1309     searchStr: StringId
1311 - name: StringEndsWithResult
1312   shared: true
1313   transpile: true
1314   cost_estimate: 5
1315   args:
1316     str: StringId
1317     searchStr: StringId
1319 - name: StringToLowerCaseResult
1320   shared: true
1321   transpile: true
1322   cost_estimate: 5
1323   args:
1324     str: StringId
1326 - name: StringToUpperCaseResult
1327   shared: true
1328   transpile: true
1329   cost_estimate: 5
1330   args:
1331     str: StringId
1333 - name: StringTrimResult
1334   shared: true
1335   transpile: true
1336   cost_estimate: 5
1337   args:
1338     str: StringId
1340 - name: StringTrimStartResult
1341   shared: true
1342   transpile: true
1343   cost_estimate: 5
1344   args:
1345     str: StringId
1347 - name: StringTrimEndResult
1348   shared: true
1349   transpile: true
1350   cost_estimate: 5
1351   args:
1352     str: StringId
1354 - name: MathAbsInt32Result
1355   shared: true
1356   transpile: true
1357   cost_estimate: 2
1358   args:
1359     input: Int32Id
1361 - name: MathAbsNumberResult
1362   shared: true
1363   transpile: true
1364   cost_estimate: 1
1365   args:
1366     input: NumberId
1368 - name: MathClz32Result
1369   shared: true
1370   transpile: true
1371   cost_estimate: 1
1372   args:
1373     input: Int32Id
1375 - name: MathSignInt32Result
1376   shared: true
1377   transpile: true
1378   cost_estimate: 1
1379   args:
1380     input: Int32Id
1382 - name: MathSignNumberResult
1383   shared: true
1384   transpile: true
1385   cost_estimate: 2
1386   args:
1387     input: NumberId
1389 - name: MathSignNumberToInt32Result
1390   shared: true
1391   transpile: true
1392   cost_estimate: 2
1393   args:
1394     input: NumberId
1396 - name: MathImulResult
1397   shared: true
1398   transpile: true
1399   cost_estimate: 1
1400   args:
1401     lhs: Int32Id
1402     rhs: Int32Id
1404 - name: MathSqrtNumberResult
1405   shared: true
1406   transpile: true
1407   cost_estimate: 1
1408   args:
1409     input: NumberId
1411 - name: MathFRoundNumberResult
1412   shared: true
1413   transpile: true
1414   cost_estimate: 1
1415   args:
1416     input: NumberId
1418 # Because Baseline stub code is shared by all realms in the Zone, this
1419 # instruction loads a pointer to the RNG from a stub field.
1420 - name: MathRandomResult
1421   shared: false
1422   transpile: true
1423   cost_estimate: 3
1424   args:
1425     rng: RawPointerField
1427 - name: MathHypot2NumberResult
1428   shared: true
1429   transpile: true
1430   cost_estimate: 4
1431   args:
1432     first: NumberId
1433     second: NumberId
1435 - name: MathHypot3NumberResult
1436   shared: true
1437   transpile: true
1438   cost_estimate: 4
1439   args:
1440     first: NumberId
1441     second: NumberId
1442     third: NumberId
1444 - name: MathHypot4NumberResult
1445   shared: true
1446   transpile: true
1447   cost_estimate: 4
1448   args:
1449     first: NumberId
1450     second: NumberId
1451     third: NumberId
1452     fourth: NumberId
1454 - name: MathAtan2NumberResult
1455   shared: true
1456   transpile: true
1457   cost_estimate: 4
1458   args:
1459     lhs: NumberId
1460     rhs: NumberId
1462 - name: MathFloorNumberResult
1463   shared: true
1464   transpile: true
1465   cost_estimate: 4
1466   args:
1467     input: NumberId
1469 - name: MathCeilNumberResult
1470   shared: true
1471   transpile: true
1472   cost_estimate: 4
1473   args:
1474     input: NumberId
1476 - name: MathTruncNumberResult
1477   shared: true
1478   transpile: true
1479   cost_estimate: 4
1480   args:
1481     input: NumberId
1483 - name: MathFloorToInt32Result
1484   shared: true
1485   transpile: true
1486   cost_estimate: 3
1487   args:
1488     input: NumberId
1490 - name: MathCeilToInt32Result
1491   shared: true
1492   transpile: true
1493   cost_estimate: 1
1494   args:
1495     input: NumberId
1497 - name: MathTruncToInt32Result
1498   shared: true
1499   transpile: true
1500   args:
1501     input: NumberId
1503 - name: MathRoundToInt32Result
1504   shared: true
1505   transpile: true
1506   cost_estimate: 1
1507   args:
1508     input: NumberId
1510 - name: Int32MinMax
1511   shared: true
1512   transpile: true
1513   cost_estimate: 1
1514   args:
1515     isMax: BoolImm
1516     first: Int32Id
1517     second: Int32Id
1518     result: Int32Id
1520 - name: NumberMinMax
1521   shared: true
1522   transpile: true
1523   cost_estimate: 1
1524   args:
1525     isMax: BoolImm
1526     first: NumberId
1527     second: NumberId
1528     result: NumberId
1530 - name: Int32MinMaxArrayResult
1531   shared: true
1532   transpile: true
1533   cost_estimate: 3
1534   args:
1535     array: ObjId
1536     isMax: BoolImm
1538 - name: NumberMinMaxArrayResult
1539   shared: true
1540   transpile: true
1541   cost_estimate: 3
1542   args:
1543     array: ObjId
1544     isMax: BoolImm
1546 - name: MathFunctionNumberResult
1547   shared: true
1548   transpile: true
1549   cost_estimate: 4
1550   args:
1551     input: NumberId
1552     fun: UnaryMathFunctionImm
1554 - name: NumberParseIntResult
1555   shared: true
1556   transpile: true
1557   cost_estimate: 5
1558   args:
1559     str: StringId
1560     radix: Int32Id
1562 - name: DoubleParseIntResult
1563   shared: true
1564   transpile: true
1565   cost_estimate: 2
1566   args:
1567     num: NumberId
1569 - name: ObjectToStringResult
1570   shared: true
1571   transpile: true
1572   cost_estimate: 4
1573   args:
1574     obj: ObjId
1576 - name: ReflectGetPrototypeOfResult
1577   shared: false
1578   transpile: true
1579   cost_estimate: 5
1580   args:
1581     obj: ObjId
1583 - name: StoreTypedArrayElement
1584   shared: true
1585   transpile: true
1586   cost_estimate: 3
1587   args:
1588     obj: ObjId
1589     elementType: ScalarTypeImm
1590     index: IntPtrId
1591     rhs: RawId
1592     handleOOB: BoolImm
1594 - name: AtomicsCompareExchangeResult
1595   shared: true
1596   transpile: true
1597   cost_estimate: 4
1598   args:
1599     obj: ObjId
1600     index: IntPtrId
1601     expected: RawId
1602     replacement: RawId
1603     elementType: ScalarTypeImm
1605 - name: AtomicsExchangeResult
1606   shared: true
1607   transpile: true
1608   cost_estimate: 4
1609   args:
1610     obj: ObjId
1611     index: IntPtrId
1612     value: RawId
1613     elementType: ScalarTypeImm
1615 - name: AtomicsAddResult
1616   shared: true
1617   transpile: true
1618   cost_estimate: 4
1619   args:
1620     obj: ObjId
1621     index: IntPtrId
1622     value: RawId
1623     elementType: ScalarTypeImm
1624     forEffect: BoolImm
1626 - name: AtomicsSubResult
1627   shared: true
1628   transpile: true
1629   cost_estimate: 4
1630   args:
1631     obj: ObjId
1632     index: IntPtrId
1633     value: RawId
1634     elementType: ScalarTypeImm
1635     forEffect: BoolImm
1637 - name: AtomicsAndResult
1638   shared: true
1639   transpile: true
1640   cost_estimate: 4
1641   args:
1642     obj: ObjId
1643     index: IntPtrId
1644     value: RawId
1645     elementType: ScalarTypeImm
1646     forEffect: BoolImm
1648 - name: AtomicsOrResult
1649   shared: true
1650   transpile: true
1651   cost_estimate: 4
1652   args:
1653     obj: ObjId
1654     index: IntPtrId
1655     value: RawId
1656     elementType: ScalarTypeImm
1657     forEffect: BoolImm
1659 - name: AtomicsXorResult
1660   shared: true
1661   transpile: true
1662   cost_estimate: 4
1663   args:
1664     obj: ObjId
1665     index: IntPtrId
1666     value: RawId
1667     elementType: ScalarTypeImm
1668     forEffect: BoolImm
1670 - name: AtomicsLoadResult
1671   shared: true
1672   transpile: true
1673   cost_estimate: 2
1674   args:
1675     obj: ObjId
1676     index: IntPtrId
1677     elementType: ScalarTypeImm
1679 - name: AtomicsStoreResult
1680   shared: true
1681   transpile: true
1682   cost_estimate: 2
1683   args:
1684     obj: ObjId
1685     index: IntPtrId
1686     value: RawId
1687     elementType: ScalarTypeImm
1689 - name: AtomicsIsLockFreeResult
1690   shared: true
1691   transpile: true
1692   cost_estimate: 1
1693   args:
1694     value: Int32Id
1696 - name: CallNativeSetter
1697   shared: false
1698   transpile: true
1699   cost_estimate: 5
1700   custom_writer: true
1701   args:
1702     receiver: ObjId
1703     setter: ObjectField
1704     rhs: ValId
1705     sameRealm: BoolImm
1706     nargsAndFlags: RawInt32Field
1708 - name: CallScriptedSetter
1709   shared: false
1710   transpile: true
1711   cost_estimate: 3
1712   custom_writer: true
1713   args:
1714     receiver: ObjId
1715     setter: ObjectField
1716     rhs: ValId
1717     sameRealm: BoolImm
1718     nargsAndFlags: RawInt32Field
1720 - name: CallInlinedSetter
1721   shared: false
1722   transpile: true
1723   cost_estimate: 3
1724   custom_writer: true
1725   args:
1726     receiver: ObjId
1727     setter: ObjectField
1728     rhs: ValId
1729     icScript: RawPointerField
1730     sameRealm: BoolImm
1731     nargsAndFlags: RawInt32Field
1733 - name: CallDOMSetter
1734   shared: false
1735   transpile: true
1736   cost_estimate: 4
1737   args:
1738     obj: ObjId
1739     jitInfo: RawPointerField
1740     rhs: ValId
1742 - name: CallSetArrayLength
1743   shared: false
1744   transpile: true
1745   cost_estimate: 5
1746   args:
1747     obj: ObjId
1748     strict: BoolImm
1749     rhs: ValId
1751 - name: ProxySet
1752   shared: false
1753   transpile: true
1754   cost_estimate: 5
1755   args:
1756     obj: ObjId
1757     id: IdField
1758     rhs: ValId
1759     strict: BoolImm
1761 - name: ProxySetByValue
1762   shared: false
1763   transpile: true
1764   cost_estimate: 5
1765   args:
1766     obj: ObjId
1767     id: ValId
1768     rhs: ValId
1769     strict: BoolImm
1771 - name: CallAddOrUpdateSparseElementHelper
1772   shared: false
1773   transpile: true
1774   cost_estimate: 5
1775   args:
1776     obj: ObjId
1777     id: Int32Id
1778     rhs: ValId
1779     strict: BoolImm
1781 - name: CallInt32ToString
1782   shared: true
1783   transpile: true
1784   cost_estimate: 4
1785   args:
1786     input: Int32Id
1787     result: StringId
1789 - name: CallNumberToString
1790   shared: true
1791   transpile: true
1792   cost_estimate: 4
1793   args:
1794     input: NumberId
1795     result: StringId
1797 - name: Int32ToStringWithBaseResult
1798   shared: true
1799   transpile: true
1800   cost_estimate: 3
1801   args:
1802     input: Int32Id
1803     base: Int32Id
1805 - name: BooleanToString
1806   shared: true
1807   transpile: true
1808   cost_estimate: 2
1809   args:
1810     input: BooleanId
1811     result: StringId
1813 - name: CallScriptedFunction
1814   shared: false
1815   transpile: true
1816   cost_estimate: 3
1817   custom_writer: true
1818   args:
1819     callee: ObjId
1820     argc: Int32Id
1821     flags: CallFlagsImm
1822     argcFixed: UInt32Imm
1824 - name: CallBoundScriptedFunction
1825   shared: false
1826   transpile: true
1827   cost_estimate: 3
1828   args:
1829     callee: ObjId
1830     target: ObjId
1831     argc: Int32Id
1832     flags: CallFlagsImm
1833     numBoundArgs: UInt32Imm
1835 - name: CallWasmFunction
1836   shared: false
1837   transpile: true
1838   cost_estimate: 3
1839   args:
1840     callee: ObjId
1841     argc: Int32Id
1842     flags: CallFlagsImm
1843     argcFixed: UInt32Imm
1844     funcExport: RawPointerField
1845     instance: ObjectField
1847 - name: GuardWasmArg
1848   shared: true
1849   transpile: true
1850   cost_estimate: 2
1851   args:
1852     arg: ValId
1853     type: WasmValTypeImm
1855 - name: CallNativeFunction
1856   shared: false
1857   transpile: true
1858   cost_estimate: 4
1859   custom_writer: true
1860   args:
1861     callee: ObjId
1862     argc: Int32Id
1863     flags: CallFlagsImm
1864     argcFixed: UInt32Imm
1865 #ifdef JS_SIMULATOR
1866     target: RawPointerField
1867 #else
1868     ignoresReturnValue: BoolImm
1869 #endif
1871 - name: CallDOMFunction
1872   shared: false
1873   transpile: true
1874   cost_estimate: 4
1875   custom_writer: true
1876   args:
1877     callee: ObjId
1878     argc: Int32Id
1879     thisObj: ObjId
1880     flags: CallFlagsImm
1881     argcFixed: UInt32Imm
1882 #ifdef JS_SIMULATOR
1883     target: RawPointerField
1884 #endif
1886 - name: CallClassHook
1887   shared: false
1888   transpile: true
1889   cost_estimate: 4
1890   custom_writer: true
1891   args:
1892     callee: ObjId
1893     argc: Int32Id
1894     flags: CallFlagsImm
1895     argcFixed: UInt32Imm
1896     target: RawPointerField
1898 - name: CallInlinedFunction
1899   shared: false
1900   transpile: true
1901   cost_estimate: 4
1902   custom_writer: true
1903   args:
1904     callee: ObjId
1905     argc: Int32Id
1906     icScript: RawPointerField
1907     flags: CallFlagsImm
1908     argcFixed: UInt32Imm
1910 #ifdef JS_PUNBOX64
1911 - name: CallScriptedProxyGetResult
1912   shared: false
1913   transpile: true
1914   cost_estimate: 4
1915   custom_writer: true
1916   args:
1917     target: ValId
1918     receiver: ObjId
1919     handler: ObjId
1920     trap: ObjectField
1921     property: IdField
1922     nargsAndFlags: UInt32Imm
1924 - name: CallScriptedProxyGetByValueResult
1925   shared: false
1926   transpile: true
1927   cost_estimate: 4
1928   custom_writer: true
1929   args:
1930     target: ValId
1931     receiver: ObjId
1932     handler: ObjId
1933     property: ValId
1934     trap: ObjectField
1935     nargsAndFlags: UInt32Imm
1936 #endif
1938 # Meta ops generate no code, but contain data for the Warp Transpiler.
1939 - name: MetaScriptedThisShape
1940   shared: true
1941   transpile: true
1942   cost_estimate: 0
1943   custom_writer: true
1944   args:
1945     thisShape: ShapeField
1947 - name: BindFunctionResult
1948   shared: false
1949   transpile: true
1950   cost_estimate: 5
1951   args:
1952     target: ObjId
1953     argc: UInt32Imm
1954     templateObject: ObjectField
1956 - name: SpecializedBindFunctionResult
1957   shared: false
1958   transpile: true
1959   cost_estimate: 4
1960   args:
1961     target: ObjId
1962     argc: UInt32Imm
1963     templateObject: ObjectField
1965 - name: LoadFixedSlotResult
1966   shared: false
1967   transpile: true
1968   cost_estimate: 1
1969   args:
1970     obj: ObjId
1971     offset: RawInt32Field
1973 - name: LoadFixedSlotTypedResult
1974   shared: false
1975   transpile: true
1976   cost_estimate: 1
1977   args:
1978     obj: ObjId
1979     offset: RawInt32Field
1980     type: ValueTypeImm
1982 - name: LoadDynamicSlotResult
1983   shared: false
1984   transpile: true
1985   cost_estimate: 1
1986   args:
1987     obj: ObjId
1988     offset: RawInt32Field
1990 - name: LoadDenseElementResult
1991   shared: true
1992   transpile: true
1993   cost_estimate: 2
1994   args:
1995     obj: ObjId
1996     index: Int32Id
1998 - name: LoadDenseElementHoleResult
1999   shared: true
2000   transpile: true
2001   cost_estimate: 2
2002   args:
2003     obj: ObjId
2004     index: Int32Id
2006 - name: CallGetSparseElementResult
2007   shared: true
2008   transpile: true
2009   cost_estimate: 5
2010   args:
2011     obj: ObjId
2012     index: Int32Id
2014 - name: LoadDenseElementExistsResult
2015   shared: true
2016   transpile: true
2017   cost_estimate: 1
2018   args:
2019     obj: ObjId
2020     index: Int32Id
2022 - name: LoadTypedArrayElementExistsResult
2023   shared: true
2024   transpile: true
2025   cost_estimate: 2
2026   args:
2027     obj: ObjId
2028     index: IntPtrId
2030 - name: LoadDenseElementHoleExistsResult
2031   shared: true
2032   transpile: true
2033   cost_estimate: 2
2034   args:
2035     obj: ObjId
2036     index: Int32Id
2038 - name: LoadTypedArrayElementResult
2039   shared: true
2040   transpile: true
2041   cost_estimate: 4
2042   args:
2043     obj: ObjId
2044     index: IntPtrId
2045     elementType: ScalarTypeImm
2046     handleOOB: BoolImm
2047     forceDoubleForUint32: BoolImm
2049 - name: LoadDataViewValueResult
2050   shared: true
2051   transpile: true
2052   cost_estimate: 4
2053   args:
2054     obj: ObjId
2055     offset: IntPtrId
2056     littleEndian: BooleanId
2057     elementType: ScalarTypeImm
2058     forceDoubleForUint32: BoolImm
2060 - name: StoreDataViewValueResult
2061   shared: true
2062   transpile: true
2063   cost_estimate: 4
2064   args:
2065     obj: ObjId
2066     offset: IntPtrId
2067     value: RawId
2068     littleEndian: BooleanId
2069     elementType: ScalarTypeImm
2071 - name: LoadInt32ArrayLengthResult
2072   shared: true
2073   transpile: true
2074   cost_estimate: 1
2075   args:
2076     obj: ObjId
2078 - name: LoadInt32ArrayLength
2079   shared: true
2080   transpile: true
2081   cost_estimate: 1
2082   args:
2083     obj: ObjId
2084     result: Int32Id
2086 - name: LoadArgumentsObjectArgResult
2087   shared: true
2088   transpile: true
2089   cost_estimate: 2
2090   args:
2091     obj: ObjId
2092     index: Int32Id
2094 - name: LoadArgumentsObjectArgHoleResult
2095   shared: true
2096   transpile: true
2097   cost_estimate: 2
2098   args:
2099     obj: ObjId
2100     index: Int32Id
2102 - name: LoadArgumentsObjectArgExistsResult
2103   shared: true
2104   transpile: true
2105   cost_estimate: 2
2106   args:
2107     obj: ObjId
2108     index: Int32Id
2110 - name: LoadArgumentsObjectLengthResult
2111   shared: true
2112   transpile: true
2113   cost_estimate: 1
2114   args:
2115     obj: ObjId
2117 - name: LoadArgumentsObjectLength
2118   shared: true
2119   transpile: true
2120   cost_estimate: 1
2121   args:
2122     obj: ObjId
2123     result: Int32Id
2125 - name: LoadFunctionLengthResult
2126   shared: true
2127   transpile: true
2128   cost_estimate: 2
2129   args:
2130     obj: ObjId
2132 - name: LoadFunctionNameResult
2133   shared: true
2134   transpile: true
2135   cost_estimate: 2
2136   args:
2137     obj: ObjId
2139 - name: LoadBoundFunctionNumArgs
2140   shared: true
2141   transpile: true
2142   cost_estimate: 1
2143   args:
2144     obj: ObjId
2145     result: Int32Id
2147 - name: LoadBoundFunctionTarget
2148   shared: true
2149   transpile: true
2150   cost_estimate: 1
2151   args:
2152     obj: ObjId
2153     result: ObjId
2155 - name: GuardBoundFunctionIsConstructor
2156   shared: true
2157   transpile: true
2158   cost_estimate: 1
2159   args:
2160     obj: ObjId
2162 - name: LoadArrayBufferByteLengthInt32Result
2163   shared: true
2164   transpile: true
2165   cost_estimate: 1
2166   args:
2167     obj: ObjId
2169 - name: LoadArrayBufferByteLengthDoubleResult
2170   shared: true
2171   transpile: true
2172   cost_estimate: 1
2173   args:
2174     obj: ObjId
2176 - name: LoadArrayBufferViewLengthInt32Result
2177   shared: true
2178   transpile: true
2179   cost_estimate: 1
2180   args:
2181     obj: ObjId
2183 - name: LoadArrayBufferViewLengthDoubleResult
2184   shared: true
2185   transpile: true
2186   cost_estimate: 1
2187   args:
2188     obj: ObjId
2190 - name: LinearizeForCharAccess
2191   shared: true
2192   transpile: true
2193   cost_estimate: 4
2194   args:
2195     str: StringId
2196     index: Int32Id
2197     result: StringId
2199 - name: LinearizeForCodePointAccess
2200   shared: true
2201   transpile: true
2202   cost_estimate: 4
2203   args:
2204     str: StringId
2205     index: Int32Id
2206     result: StringId
2208 - name: ToRelativeStringIndex
2209   shared: true
2210   transpile: true
2211   cost_estimate: 1
2212   args:
2213     index: Int32Id
2214     str: StringId
2215     result: Int32Id
2217 - name: LoadStringCharResult
2218   shared: false
2219   transpile: true
2220   cost_estimate: 5
2221   args:
2222     str: StringId
2223     index: Int32Id
2224     handleOOB: BoolImm
2226 - name: LoadStringAtResult
2227   shared: false
2228   transpile: true
2229   cost_estimate: 5
2230   args:
2231     str: StringId
2232     index: Int32Id
2233     handleOOB: BoolImm
2235 - name: LoadStringCharCodeResult
2236   shared: true
2237   transpile: true
2238   cost_estimate: 3
2239   args:
2240     str: StringId
2241     index: Int32Id
2242     handleOOB: BoolImm
2244 - name: LoadStringCodePointResult
2245   shared: true
2246   transpile: true
2247   cost_estimate: 3
2248   args:
2249     str: StringId
2250     index: Int32Id
2251     handleOOB: BoolImm
2253 - name: LoadStringLengthResult
2254   shared: true
2255   transpile: true
2256   cost_estimate: 1
2257   args:
2258     str: StringId
2260 - name: FrameIsConstructingResult
2261   shared: false
2262   transpile: true
2263   cost_estimate: 1
2264   args:
2266 - name: LoadObjectResult
2267   shared: true
2268   transpile: true
2269   cost_estimate: 1
2270   args:
2271     obj: ObjId
2273 - name: LoadStringResult
2274   shared: true
2275   transpile: true
2276   cost_estimate: 1
2277   args:
2278     str: StringId
2280 - name: LoadSymbolResult
2281   shared: true
2282   transpile: true
2283   cost_estimate: 1
2284   args:
2285     sym: SymbolId
2287 - name: LoadInt32Result
2288   shared: true
2289   transpile: true
2290   cost_estimate: 1
2291   args:
2292     val: Int32Id
2294 - name: LoadDoubleResult
2295   shared: true
2296   transpile: true
2297   cost_estimate: 2
2298   args:
2299     val: NumberId
2301 - name: LoadBigIntResult
2302   shared: true
2303   transpile: true
2304   cost_estimate: 1
2305   args:
2306     val: BigIntId
2308 - name: CallScriptedGetterResult
2309   shared: false
2310   transpile: true
2311   cost_estimate: 5
2312   custom_writer: true
2313   args:
2314     receiver: ValId
2315     getter: ObjectField
2316     sameRealm: BoolImm
2317     nargsAndFlags: RawInt32Field
2319 - name: CallInlinedGetterResult
2320   shared: false
2321   transpile: true
2322   cost_estimate: 5
2323   custom_writer: true
2324   args:
2325     receiver: ValId
2326     getter: ObjectField
2327     icScript: RawPointerField
2328     sameRealm: BoolImm
2329     nargsAndFlags: RawInt32Field
2331 - name: CallNativeGetterResult
2332   shared: false
2333   transpile: true
2334   cost_estimate: 5
2335   custom_writer: true
2336   args:
2337     receiver: ValId
2338     getter: ObjectField
2339     sameRealm: BoolImm
2340     nargsAndFlags: RawInt32Field
2342 - name: CallDOMGetterResult
2343   shared: false
2344   transpile: true
2345   cost_estimate: 4
2346   args:
2347     obj: ObjId
2348     jitInfo: RawPointerField
2350 - name: ProxyGetResult
2351   shared: false
2352   transpile: true
2353   cost_estimate: 5
2354   args:
2355     obj: ObjId
2356     id: IdField
2358 - name: ProxyGetByValueResult
2359   shared: true
2360   transpile: true
2361   cost_estimate: 5
2362   args:
2363     obj: ObjId
2364     id: ValId
2366 - name: ProxyHasPropResult
2367   shared: true
2368   transpile: true
2369   cost_estimate: 5
2370   args:
2371     obj: ObjId
2372     id: ValId
2373     hasOwn: BoolImm
2375 - name: CallObjectHasSparseElementResult
2376   shared: true
2377   transpile: true
2378   cost_estimate: 4
2379   args:
2380     obj: ObjId
2381     index: Int32Id
2383 - name: CallNativeGetElementResult
2384   shared: true
2385   transpile: true
2386   cost_estimate: 5
2387   args:
2388     obj: ObjId
2389     index: Int32Id
2391 - name: CallNativeGetElementSuperResult
2392   shared: true
2393   transpile: true
2394   cost_estimate: 5
2395   args:
2396     obj: ObjId
2397     index: Int32Id
2398     receiver: ValId
2400 - name: GetNextMapSetEntryForIteratorResult
2401   shared: true
2402   transpile: true
2403   cost_estimate: 4
2404   args:
2405     iter: ObjId
2406     resultArr: ObjId
2407     isMap: BoolImm
2409 - name: LoadUndefinedResult
2410   shared: true
2411   transpile: true
2412   cost_estimate: 1
2413   args:
2415 - name: LoadBooleanResult
2416   shared: true
2417   transpile: true
2418   cost_estimate: 1
2419   args:
2420     val: BoolImm
2422 - name: LoadInt32Constant
2423   shared: true
2424   transpile: true
2425   cost_estimate: 1
2426   args:
2427     val: RawInt32Field
2428     result: Int32Id
2430 - name: LoadDoubleConstant
2431   shared: true
2432   transpile: true
2433   cost_estimate: 1
2434   args:
2435     val: DoubleField
2436     result: NumberId
2438 - name: LoadBooleanConstant
2439   shared: true
2440   transpile: true
2441   cost_estimate: 1
2442   args:
2443     val: BoolImm
2444     result: BooleanId
2446 - name: LoadUndefined
2447   shared: true
2448   transpile: true
2449   cost_estimate: 1
2450   args:
2451     result: ValId
2453 - name: LoadConstantString
2454   shared: true
2455   transpile: true
2456   cost_estimate: 1
2457   args:
2458     str: StringField
2459     result: StringId
2461 - name: LoadConstantStringResult
2462   shared: false
2463   transpile: true
2464   cost_estimate: 1
2465   args:
2466     str: StringField
2468 - name: LoadInstanceOfObjectResult
2469   shared: true
2470   transpile: true
2471   cost_estimate: 3
2472   args:
2473     lhs: ValId
2474     proto: ObjId
2476 - name: LoadTypeOfObjectResult
2477   shared: true
2478   transpile: true
2479   cost_estimate: 4
2480   args:
2481     obj: ObjId
2483 - name: DoubleAddResult
2484   shared: true
2485   transpile: true
2486   cost_estimate: 2
2487   args:
2488     lhs: NumberId
2489     rhs: NumberId
2491 - name: DoubleSubResult
2492   shared: true
2493   transpile: true
2494   cost_estimate: 2
2495   args:
2496     lhs: NumberId
2497     rhs: NumberId
2499 - name: DoubleMulResult
2500   shared: true
2501   transpile: true
2502   cost_estimate: 2
2503   args:
2504     lhs: NumberId
2505     rhs: NumberId
2507 - name: DoubleDivResult
2508   shared: true
2509   transpile: true
2510   cost_estimate: 2
2511   args:
2512     lhs: NumberId
2513     rhs: NumberId
2515 - name: DoubleModResult
2516   shared: true
2517   transpile: true
2518   cost_estimate: 4
2519   args:
2520     lhs: NumberId
2521     rhs: NumberId
2523 - name: DoublePowResult
2524   shared: true
2525   transpile: true
2526   cost_estimate: 4
2527   args:
2528     lhs: NumberId
2529     rhs: NumberId
2531 - name: Int32AddResult
2532   shared: true
2533   transpile: true
2534   cost_estimate: 1
2535   args:
2536     lhs: Int32Id
2537     rhs: Int32Id
2539 - name: Int32SubResult
2540   shared: true
2541   transpile: true
2542   cost_estimate: 1
2543   args:
2544     lhs: Int32Id
2545     rhs: Int32Id
2547 - name: Int32MulResult
2548   shared: true
2549   transpile: true
2550   cost_estimate: 2
2551   args:
2552     lhs: Int32Id
2553     rhs: Int32Id
2555 - name: Int32DivResult
2556   shared: true
2557   transpile: true
2558   cost_estimate: 2
2559   args:
2560     lhs: Int32Id
2561     rhs: Int32Id
2563 - name: Int32ModResult
2564   shared: true
2565   transpile: true
2566   cost_estimate: 2
2567   args:
2568     lhs: Int32Id
2569     rhs: Int32Id
2571 - name: Int32PowResult
2572   shared: true
2573   transpile: true
2574   cost_estimate: 1
2575   args:
2576     lhs: Int32Id
2577     rhs: Int32Id
2579 - name: BigIntAddResult
2580   shared: true
2581   transpile: true
2582   cost_estimate: 5
2583   args:
2584     lhs: BigIntId
2585     rhs: BigIntId
2587 - name: BigIntSubResult
2588   shared: true
2589   transpile: true
2590   cost_estimate: 5
2591   args:
2592     lhs: BigIntId
2593     rhs: BigIntId
2595 - name: BigIntMulResult
2596   shared: true
2597   transpile: true
2598   cost_estimate: 5
2599   args:
2600     lhs: BigIntId
2601     rhs: BigIntId
2603 - name: BigIntDivResult
2604   shared: true
2605   transpile: true
2606   cost_estimate: 5
2607   args:
2608     lhs: BigIntId
2609     rhs: BigIntId
2611 - name: BigIntModResult
2612   shared: true
2613   transpile: true
2614   cost_estimate: 5
2615   args:
2616     lhs: BigIntId
2617     rhs: BigIntId
2619 - name: BigIntPowResult
2620   shared: true
2621   transpile: true
2622   cost_estimate: 5
2623   args:
2624     lhs: BigIntId
2625     rhs: BigIntId
2627 - name: Int32BitOrResult
2628   shared: true
2629   transpile: true
2630   cost_estimate: 1
2631   args:
2632     lhs: Int32Id
2633     rhs: Int32Id
2635 - name: Int32BitXorResult
2636   shared: true
2637   transpile: true
2638   cost_estimate: 1
2639   args:
2640     lhs: Int32Id
2641     rhs: Int32Id
2643 - name: Int32BitAndResult
2644   shared: true
2645   transpile: true
2646   cost_estimate: 1
2647   args:
2648     lhs: Int32Id
2649     rhs: Int32Id
2651 - name: Int32LeftShiftResult
2652   shared: true
2653   transpile: true
2654   cost_estimate: 1
2655   args:
2656     lhs: Int32Id
2657     rhs: Int32Id
2659 - name: Int32RightShiftResult
2660   shared: true
2661   transpile: true
2662   cost_estimate: 1
2663   args:
2664     lhs: Int32Id
2665     rhs: Int32Id
2667 - name: Int32URightShiftResult
2668   shared: true
2669   transpile: true
2670   cost_estimate: 2
2671   args:
2672     lhs: Int32Id
2673     rhs: Int32Id
2674     forceDouble: BoolImm
2676 - name: Int32NotResult
2677   shared: true
2678   transpile: true
2679   cost_estimate: 1
2680   args:
2681     input: Int32Id
2683 - name: BigIntBitOrResult
2684   shared: true
2685   transpile: true
2686   cost_estimate: 5
2687   args:
2688     lhs: BigIntId
2689     rhs: BigIntId
2691 - name: BigIntBitXorResult
2692   shared: true
2693   transpile: true
2694   cost_estimate: 5
2695   args:
2696     lhs: BigIntId
2697     rhs: BigIntId
2699 - name: BigIntBitAndResult
2700   shared: true
2701   transpile: true
2702   cost_estimate: 5
2703   args:
2704     lhs: BigIntId
2705     rhs: BigIntId
2707 - name: BigIntLeftShiftResult
2708   shared: true
2709   transpile: true
2710   cost_estimate: 5
2711   args:
2712     lhs: BigIntId
2713     rhs: BigIntId
2715 - name: BigIntRightShiftResult
2716   shared: true
2717   transpile: true
2718   cost_estimate: 5
2719   args:
2720     lhs: BigIntId
2721     rhs: BigIntId
2723 - name: BigIntNotResult
2724   shared: true
2725   transpile: true
2726   cost_estimate: 5
2727   args:
2728     input: BigIntId
2730 - name: Int32NegationResult
2731   shared: true
2732   transpile: true
2733   cost_estimate: 1
2734   args:
2735     input: Int32Id
2737 - name: DoubleNegationResult
2738   shared: true
2739   transpile: true
2740   cost_estimate: 1
2741   args:
2742     input: NumberId
2744 - name: BigIntNegationResult
2745   shared: true
2746   transpile: true
2747   cost_estimate: 5
2748   args:
2749     input: BigIntId
2751 - name: Int32IncResult
2752   shared: true
2753   transpile: true
2754   cost_estimate: 1
2755   args:
2756     input: Int32Id
2758 - name: Int32DecResult
2759   shared: true
2760   transpile: true
2761   cost_estimate: 1
2762   args:
2763     input: Int32Id
2765 - name: DoubleIncResult
2766   shared: true
2767   transpile: true
2768   cost_estimate: 1
2769   args:
2770     input: NumberId
2772 - name: DoubleDecResult
2773   shared: true
2774   transpile: true
2775   cost_estimate: 1
2776   args:
2777     input: NumberId
2779 - name: BigIntIncResult
2780   shared: true
2781   transpile: true
2782   cost_estimate: 5
2783   args:
2784     input: BigIntId
2786 - name: BigIntDecResult
2787   shared: true
2788   transpile: true
2789   cost_estimate: 5
2790   args:
2791     input: BigIntId
2793 - name: LoadInt32TruthyResult
2794   shared: true
2795   transpile: true
2796   cost_estimate: 2
2797   args:
2798     input: ValId
2800 - name: LoadDoubleTruthyResult
2801   shared: true
2802   transpile: true
2803   cost_estimate: 2
2804   args:
2805     input: NumberId
2807 - name: LoadStringTruthyResult
2808   shared: true
2809   transpile: true
2810   cost_estimate: 2
2811   args:
2812     str: StringId
2814 - name: LoadObjectTruthyResult
2815   shared: true
2816   transpile: true
2817   cost_estimate: 4
2818   args:
2819     obj: ObjId
2821 - name: LoadBigIntTruthyResult
2822   shared: true
2823   transpile: true
2824   cost_estimate: 2
2825   args:
2826     bigInt: BigIntId
2828 - name: LoadValueTruthyResult
2829   shared: true
2830   transpile: true
2831   cost_estimate: 4
2832   args:
2833     input: ValId
2835 - name: LoadValueResult
2836   shared: false
2837   transpile: false
2838   cost_estimate: 1
2839   args:
2840     val: ValueField
2842 - name: LoadOperandResult
2843   shared: true
2844   transpile: true
2845   cost_estimate: 1
2846   args:
2847     input: ValId
2849 - name: NewPlainObjectResult
2850   shared: false
2851   transpile: true
2852   cost_estimate: 4
2853   args:
2854     numFixedSlots: UInt32Imm
2855     numDynamicSlots: UInt32Imm
2856     allocKind: AllocKindImm
2857     shape: ShapeField
2858     site: AllocSiteField
2860 - name: NewArrayObjectResult
2861   shared: false
2862   transpile: true
2863   cost_estimate: 4
2864   args:
2865     arrayLength: UInt32Imm
2866     shape: ShapeField
2867     site: AllocSiteField
2869 - name: CallStringConcatResult
2870   shared: true
2871   transpile: true
2872   cost_estimate: 5
2873   args:
2874     lhs: StringId
2875     rhs: StringId
2877 - name: CallStringObjectConcatResult
2878   shared: false
2879   transpile: false
2880   cost_estimate: 5
2881   args:
2882     lhs: ValId
2883     rhs: ValId
2885 - name: CallIsSuspendedGeneratorResult
2886   shared: true
2887   transpile: false
2888   cost_estimate: 2
2889   args:
2890     val: ValId
2892 - name: CompareStringResult
2893   shared: false
2894   transpile: true
2895   cost_estimate: 5
2896   args:
2897     op: JSOpImm
2898     lhs: StringId
2899     rhs: StringId
2901 - name: CompareObjectResult
2902   shared: true
2903   transpile: true
2904   cost_estimate: 2
2905   args:
2906     op: JSOpImm
2907     lhs: ObjId
2908     rhs: ObjId
2910 - name: CompareSymbolResult
2911   shared: true
2912   transpile: true
2913   cost_estimate: 2
2914   args:
2915     op: JSOpImm
2916     lhs: SymbolId
2917     rhs: SymbolId
2919 - name: CompareInt32Result
2920   shared: true
2921   transpile: true
2922   cost_estimate: 2
2923   args:
2924     op: JSOpImm
2925     lhs: Int32Id
2926     rhs: Int32Id
2928 - name: CompareDoubleResult
2929   shared: true
2930   transpile: true
2931   cost_estimate: 2
2932   args:
2933     op: JSOpImm
2934     lhs: NumberId
2935     rhs: NumberId
2937 - name: CompareBigIntResult
2938   shared: true
2939   transpile: true
2940   cost_estimate: 4
2941   args:
2942     op: JSOpImm
2943     lhs: BigIntId
2944     rhs: BigIntId
2946 - name: CompareBigIntInt32Result
2947   shared: true
2948   transpile: true
2949   cost_estimate: 3
2950   args:
2951     op: JSOpImm
2952     lhs: BigIntId
2953     rhs: Int32Id
2955 - name: CompareBigIntNumberResult
2956   shared: true
2957   transpile: true
2958   cost_estimate: 4
2959   args:
2960     op: JSOpImm
2961     lhs: BigIntId
2962     rhs: NumberId
2964 - name: CompareBigIntStringResult
2965   shared: true
2966   transpile: true
2967   cost_estimate: 5
2968   args:
2969     op: JSOpImm
2970     lhs: BigIntId
2971     rhs: StringId
2973 - name: CompareNullUndefinedResult
2974   shared: true
2975   transpile: true
2976   cost_estimate: 2
2977   args:
2978     op: JSOpImm
2979     isUndefined: BoolImm
2980     input: ValId
2982 - name: CompareDoubleSameValueResult
2983   shared: true
2984   transpile: true
2985   cost_estimate: 3
2986   args:
2987     lhs: NumberId
2988     rhs: NumberId
2990 - name: SameValueResult
2991   shared: false
2992   transpile: true
2993   cost_estimate: 4
2994   args:
2995     lhs: ValId
2996     rhs: ValId
2998 - name: IndirectTruncateInt32Result
2999   shared: true
3000   transpile: true
3001   cost_estimate: 1
3002   args:
3003     val: Int32Id
3005 - name: BigIntAsIntNResult
3006   shared: true
3007   transpile: true
3008   cost_estimate: 5
3009   args:
3010     bits: Int32Id
3011     bigInt: BigIntId
3013 - name: BigIntAsUintNResult
3014   shared: true
3015   transpile: true
3016   cost_estimate: 5
3017   args:
3018     bits: Int32Id
3019     bigInt: BigIntId
3021 - name: SetHasResult
3022   shared: true
3023   transpile: true
3024   cost_estimate: 5
3025   args:
3026     set: ObjId
3027     val: ValId
3029 - name: SetHasNonGCThingResult
3030   shared: true
3031   transpile: true
3032   cost_estimate: 3
3033   args:
3034     set: ObjId
3035     val: ValId
3037 - name: SetHasStringResult
3038   shared: false
3039   transpile: true
3040   cost_estimate: 5
3041   args:
3042     set: ObjId
3043     str: StringId
3045 - name: SetHasSymbolResult
3046   shared: true
3047   transpile: true
3048   cost_estimate: 3
3049   args:
3050     set: ObjId
3051     sym: SymbolId
3053 - name: SetHasBigIntResult
3054   shared: true
3055   transpile: true
3056   cost_estimate: 3
3057   args:
3058     set: ObjId
3059     bigInt: BigIntId
3061 - name: SetHasObjectResult
3062   shared: true
3063   transpile: true
3064   cost_estimate: 3
3065   args:
3066     set: ObjId
3067     obj: ObjId
3069 - name: SetSizeResult
3070   shared: true
3071   transpile: true
3072   cost_estimate: 1
3073   args:
3074     set: ObjId
3076 - name: MapHasResult
3077   shared: true
3078   transpile: true
3079   cost_estimate: 5
3080   args:
3081     map: ObjId
3082     val: ValId
3084 - name: MapHasNonGCThingResult
3085   shared: true
3086   transpile: true
3087   cost_estimate: 3
3088   args:
3089     map: ObjId
3090     val: ValId
3092 - name: MapHasStringResult
3093   shared: false
3094   transpile: true
3095   cost_estimate: 5
3096   args:
3097     map: ObjId
3098     str: StringId
3100 - name: MapHasSymbolResult
3101   shared: true
3102   transpile: true
3103   cost_estimate: 3
3104   args:
3105     map: ObjId
3106     sym: SymbolId
3108 - name: MapHasBigIntResult
3109   shared: true
3110   transpile: true
3111   cost_estimate: 3
3112   args:
3113     map: ObjId
3114     bigInt: BigIntId
3116 - name: MapHasObjectResult
3117   shared: true
3118   transpile: true
3119   cost_estimate: 3
3120   args:
3121     map: ObjId
3122     obj: ObjId
3124 - name: MapGetResult
3125   shared: true
3126   transpile: true
3127   cost_estimate: 5
3128   args:
3129     map: ObjId
3130     val: ValId
3132 - name: MapGetNonGCThingResult
3133   shared: true
3134   transpile: true
3135   cost_estimate: 3
3136   args:
3137     map: ObjId
3138     val: ValId
3140 - name: MapGetStringResult
3141   shared: false
3142   transpile: true
3143   cost_estimate: 5
3144   args:
3145     map: ObjId
3146     str: StringId
3148 - name: MapGetSymbolResult
3149   shared: true
3150   transpile: true
3151   cost_estimate: 3
3152   args:
3153     map: ObjId
3154     sym: SymbolId
3156 - name: MapGetBigIntResult
3157   shared: true
3158   transpile: true
3159   cost_estimate: 3
3160   args:
3161     map: ObjId
3162     bigInt: BigIntId
3164 - name: MapGetObjectResult
3165   shared: true
3166   transpile: true
3167   cost_estimate: 3
3168   args:
3169     map: ObjId
3170     obj: ObjId
3172 - name: MapSizeResult
3173   shared: true
3174   transpile: true
3175   cost_estimate: 1
3176   args:
3177     map: ObjId
3179 - name: ArrayFromArgumentsObjectResult
3180   shared: true
3181   transpile: true
3182   cost_estimate: 5
3183   args:
3184     obj: ObjId
3185     shape: ShapeField
3187 - name: CloseIterScriptedResult
3188   shared: false
3189   transpile: true
3190   cost_estimate: 5
3191   args:
3192     iter: ObjId
3193     callee: ObjId
3194     kind: CompletionKindImm
3195     targetNargs: UInt32Imm
3197 - name: CallPrintString
3198   shared: true
3199   transpile: false
3200   cost_estimate: 1
3201   args:
3202     str: StaticStringImm
3204 - name: Breakpoint
3205   shared: true
3206   transpile: false
3207   cost_estimate: 1
3208   args:
3210 - name: WrapResult
3211   shared: true
3212   transpile: false
3213   cost_estimate: 4
3214   args:
3216 - name: Bailout
3217   shared: true
3218   transpile: true
3219   cost_estimate: 0
3220   args:
3222 - name: AssertRecoveredOnBailoutResult
3223   shared: true
3224   transpile: true
3225   cost_estimate: 1
3226   args:
3227     val: ValId
3228     mustBeRecovered: BoolImm
3230 - name: AssertPropertyLookup
3231   shared: true
3232   transpile: true
3233   cost_estimate: 4
3234   args:
3235     obj: ObjId
3236     id: IdField
3237     slot: RawInt32Field
3239 #ifdef FUZZING_JS_FUZZILLI
3240 - name: FuzzilliHashResult
3241   shared: true
3242   transpile: true
3243   cost_estimate: 4
3244   args:
3245     val: ValId
3246 #endif