Lines Matching +full:constant +full:- +full:pool
1 # Copyright (c) 2021-2022 Huawei Device Co., Ltd.
6 # http://www.apache.org/licenses/LICENSE-2.0
14 ---
17 - name: General design
21 - name: Registers
31 - name: Accumulator
40 register-to-register moves.
42 - name: Calling sequence
48 On return, callee frame is destroyed. If function return value is non-void, it is passed to caller via
52 - name: Supported primitive types
54 VM support operations on registers with i32 and i64 integral values. However, 8-bit and 16-bit integral values
56 value to match storage size with i32. Similarly, passing an 8-bit or 16-bit value to a function can be emulated by
57 passing a value, which is zero or sign-extended to i32.
58 VM support operations on registers with f32 and f64 values, which corresponds to IEEE-754 single and double precision
59 floating-point represenation.
68 ### Floating-point literals
70 Decimal floating-point literals can have the following parts:
72 - Sign ("`+`" or "`-`")
73 - Whole number part
74 - Decimal point
75 - Fractional part
76 - Exponent indicator ("`e`")
77 - Exponent sign
78 - Exponent
80 Decimal floating-point literals must have at least one digit and either decimal point or exponent part.
84 - Positive zero (+0.0, hexadecimal representation is `0x0000000000000000`)
85 - Negative zero (-0.0, hexadecimal representation is `0x8000000000000000`)
86 - Minimal positive value (4.9E-324, hexadecimal representation is `0x0000000000000001`)
87 - Maximal negative value (-4.9E-324, hexadecimal representation is `0x8000000000000001`)
88 - Maximal positive value (1.7976931348623157e308, hexadecimal representation is `0x7fefffffffffffff`)
89 - Minimal negative value (-1.7976931348623157e308, hexadecimal representation is `0xffefffffffffffff`)
90 - Positive infinity (hexadecimal representation is `0x7ff0000000000000`)
91 - Negative infinity (hexadecimal representation is `0xfff0000000000000`)
92 - Not a number - set of all NaN values (one of hexadecimal representations is `0x7ff8000000000000`)
94 - name: Language-dependent types
97 from constant pool) of strings, arrays, exception objects results into an object of type native to language,
100 - name: Dynamically-typed languages support
105 to hold 'any' value. When VM executes code inside dynamically-typed language context, regular static instructions
123 - tag: type_id
124 description: Use an id which resolves into a type constant.
125 - tag: method_id
126 description: Use an id which resolves into a method constant.
127 - tag: string_id
128 description: Use an id which resolves into a string constant.
129 - tag: literalarray_id
130 description: Use an id which resolves into a constant literalarray.
131 - tag: field_id
133 - tag: call
135 - tag: call_virt
137 - tag: return
139 - tag: suspend
141 - tag: jump
143 - tag: conditional
145 - tag: float
147 - tag: dynamic
149 - tag: maybe_dynamic
151 - tag: language_type
153 - tag: initialize_type
155 - tag: ic_slot
156 description: Use the immedate number after opcode of length 8-bit or 16-bit as ic slot.
157 - tag: jit_ic_slot
158 description: Use the immedate number after opcode of length 8-bit as jit ic slot.
159 - tag: one_slot
161 - tag: two_slot
163 - tag: eight_bit_ic
165 - tag: sixteen_bit_ic
167 - tag: eight_sixteen_bit_ic
169 - tag: conditional_throw
171 - tag: range_0
175 - tag: range_1
179 - tag: no_side_effect
183 - tag: x_none
185 - tag: x_null
187 - tag: x_bounds
189 - tag: x_negsize
191 - tag: x_store
193 - tag: x_abstract
195 - tag: x_arith
197 - tag: x_cast
199 - tag: x_classdef
201 - tag: x_oom
203 - tag: x_init
205 - tag: x_call
207 - tag: x_throw
209 - tag: x_link
212 - tag: none
214 - tag: v1_array
216 - tag: v1_object
218 - tag: v1_array_type
221 - tag: v1_i32
223 - tag: v1_type
225 - tag: v1_obj_or_null
227 - tag: v2_i32
229 - tag: v2_object
231 - tag: v2_type
233 - tag: acc_i32
235 - tag: acc_type
237 - tag: acc_return_type
240 - tag: v1_throw_type
242 - tag: acc_obj_or_null
244 - tag: type_id_array
246 - tag: type_id_object
248 - tag: type_id_any_object
250 - tag: method_id_static
251 description: Method_id must resolve to a static method or into initializer for a type other than one-dimensional array.
252 - tag: method_id_non_static
253 description: Method_id must resolve to a non-static method.
254 - tag: method_id_non_abstract
256 - tag: method_id_accessible
258 - tag: constant_string_id
259 description: Id must resolve into a constant-pool string.
260 - tag: constant_literalarray_id
261 description: Id must resolve into a constant literalarray.
262 - tag: compatible_arguments
264 - tag: method_init_obj
265 description: Method_id must resolve into initializer for a type other than one-dimensional array.
266 - tag: branch_target
268 - tag: field_id_non_static
269 description: Field_id must resolve to a non-static object field.
270 - tag: field_id_static
272 - tag: field_id_size
274 - tag: valid_in_dynamic_context
275 description: Instruction valid only for dynamically-typed language context.
278 - description: The last encoding number of various ISA. It should be maintained as long as ISA changes.
286 - name: throw
289 - name: wide
292 - name: deprecated
295 - name: callruntime
300 - title: constant object loaders
301 description: instructions which operate on constant objects.
303 - none
305 - x_none
307 - acc_read
308 - acc_write
315 - sig: ldnan
320 - sig: ldinfinity
325 - sig: ldundefined
330 - sig: ldnull
335 - sig: ldsymbol
339 - sig: ldglobal
343 - sig: ldtrue
348 - sig: ldfalse
353 - sig: ldhole
358 - sig: deprecated.ldlexenv
363 - sig: ldnewtarget
367 - sig: ldthis
371 - sig: poplexenv
375 - sig: deprecated.poplexenv
380 - sig: getunmappedargs
384 - sig: asyncfunctionenter
388 - sig: ldfunction
392 - sig: debugger
397 - title: iterator instructions
400 - none
402 - x_none
404 - acc_read
405 - acc_write
412 - sig: getpropiterator
416 - sig: getiterator imm:u16
421 - sig: closeiterator imm:u16, v:in:top
426 - sig: deprecated.getiteratornext v1:in:top, v2:in:top
431 - sig: getasynciterator imm:u8
436 - sig: ldprivateproperty imm1:u8, imm2:u16, imm3:u16
441 - sig: stprivateproperty imm1:u8, imm2:u16, imm3:u16, v:in:top
446 - sig: testin imm1:u8, imm2:u16, imm3:u16
451 - sig: definefieldbyname imm:u8, string_id, v:in:top
456 - sig: definepropertybyname imm:u8, string_id, v:in:top
462 - title: object creaters
465 - none
467 - x_none
469 - acc_read
470 - acc_write
477 - sig: createemptyobject
481 - sig: createemptyarray imm:u16
486 - sig: creategeneratorobj v:in:top
490 - sig: createiterresultobj v1:in:top, v2:in:top
494 - sig: createobjectwithexcludedkeys imm:u8, v1:in:top, v2:in:top
499 - sig: wide.createobjectwithexcludedkeys imm:u16, v1:in:top, v2:in:top
505 - sig: createarraywithbuffer imm:u16, literalarray_id
510 - sig: deprecated.createarraywithbuffer imm:u16
515 - sig: createobjectwithbuffer imm:u16, literalarray_id
520 - sig: deprecated.createobjectwithbuffer imm:u16
525 - sig: createregexpwithliteral imm1:u16, string_id, imm2:u8
530 - sig: newobjapply imm:u16, v:in:top
535 - sig: newobjrange imm1:u16, imm2:u8, v:in:top
540 - sig: wide.newobjrange imm:u16, v:in:top
546 - sig: newlexenv imm:u8
550 - sig: wide.newlexenv imm:u16
555 - sig: newlexenvwithname imm:u8, literalarray_id
560 - sig: wide.newlexenvwithname imm:u16, literalarray_id
566 - sig: createasyncgeneratorobj v:in:top
570 - sig: asyncgeneratorresolve v1:in:top, v2:in:top, v3:in:top
575 - title: binary operations
578 - none
580 - x_none
582 - acc_read
583 - acc_write
590 - sig: add2 imm:u8, v:in:top
595 - sig: sub2 imm:u8, v:in:top
600 - sig: mul2 imm:u8, v:in:top
605 - sig: div2 imm:u8, v:in:top
610 - sig: mod2 imm:u8, v:in:top
615 - sig: eq imm:u8, v:in:top
620 - sig: noteq imm:u8, v:in:top
625 - sig: less imm:u8, v:in:top
630 - sig: lesseq imm:u8, v:in:top
635 - sig: greater imm:u8, v:in:top
640 - sig: greatereq imm:u8, v:in:top
645 - sig: shl2 imm:u8, v:in:top
650 - sig: shr2 imm:u8, v:in:top
655 - sig: ashr2 imm:u8, v:in:top
660 - sig: and2 imm:u8, v:in:top
665 - sig: or2 imm:u8, v:in:top
670 - sig: xor2 imm:u8, v:in:top
675 - sig: exp imm:u8, v:in:top
681 - title: unary operations
684 - none
686 - x_none
688 - acc_read
689 - acc_write
696 - sig: typeof imm:u16
701 - sig: tonumber imm:u8
706 - sig: deprecated.tonumber v:in:top
711 - sig: tonumeric imm:u8
716 - sig: deprecated.tonumeric v:in:top
721 - sig: neg imm:u8
726 - sig: deprecated.neg v:in:top
731 - sig: not imm:u8
736 - sig: deprecated.not v:in:top
741 - sig: inc imm:u8
746 - sig: deprecated.inc v:in:top
751 - sig: dec imm:u8
756 - sig: deprecated.dec v:in:top
761 - sig: istrue
765 - sig: isfalse
770 - title: comparation instructions
773 - none
775 - x_none
777 - acc_read
778 - acc_write
785 - sig: isin imm:u8, v:in:top
790 - sig: instanceof imm:u8, v:in:top
795 - sig: strictnoteq imm:u8, v:in:top
800 - sig: stricteq imm:u8, v:in:top
806 - title: call runtime functions
809 - none
811 - x_none
813 - acc_read
814 - acc_write
821 - sig: callruntime.notifyconcurrentresult
826 - sig: callruntime.definefieldbyvalue imm:u8, v1:in:top, v2:in:top
832 - sig: callruntime.definefieldbyindex imm1:u8, imm2:u32, v:in:top
838 - sig: callruntime.topropertykey
843 - sig: callruntime.createprivateproperty imm:u16, literalarray_id
849 - sig: callruntime.defineprivateproperty imm1:u8, imm2:u16, imm3:u16, v:in:top
855 - sig: callruntime.callinit imm:u8, v:in:top
861 - sig: callruntime.definesendableclass imm1:u16, method_id, literalarray_id, imm2:u16, v:in:top
867 - sig: callruntime.ldsendableclass imm:u16
872 - sig: callruntime.ldsendableexternalmodulevar imm:u8
877 - sig: callruntime.wideldsendableexternalmodulevar imm:u16
882 - sig: callruntime.newsendableenv imm:u8
887 - sig: callruntime.widenewsendableenv imm:u16
892 - sig: callruntime.stsendablevar imm1:u8, imm2:u8
897 - sig: callruntime.widestsendablevar imm1:u16, imm2:u16
902 - sig: callruntime.ldsendablevar imm1:u8, imm2:u8
907 - sig: callruntime.wideldsendablevar imm1:u16, imm2:u16
912 - sig: callruntime.istrue imm:u8
918 - sig: callruntime.isfalse imm:u8
924 - sig: callruntime.ldlazymodulevar imm:u8
929 - sig: callruntime.wideldlazymodulevar imm:u16
934 - sig: callruntime.ldlazysendablemodulevar imm:u8
939 - sig: callruntime.wideldlazysendablemodulevar imm:u16
944 - sig: callruntime.supercallforwardallargs v:in:top
950 - title: throw instructions
953 - none
955 - x_none
957 - acc_read
958 - acc_write
965 - sig: throw
971 - x_throw
972 - sig: throw.notexists
977 - sig: throw.patternnoncoercible
982 - sig: throw.deletesuperproperty
987 - sig: throw.constassignment v:in:top
992 - sig: throw.ifnotobject v:in:top
998 - sig: throw.undefinedifhole v1:in:top, v2:in:top
1004 - sig: throw.ifsupernotcorrectcall imm:u16
1010 - sig: throw.undefinedifholewithname string_id
1016 - sig: callruntime.ldsendablelocalmodulevar imm:u8
1021 - sig: callruntime.wideldsendablelocalmodulevar imm:u16
1027 - title: call instructions
1030 - none
1032 - x_none
1034 - acc_read
1035 - acc_write
1042 - sig: callarg0 imm:u8
1047 - sig: deprecated.callarg0 v:in:top
1052 - sig: callarg1 imm:u8, v:in:top
1057 - sig: deprecated.callarg1 v1:in:top, v2:in:top
1062 - sig: callargs2 imm:u8, v1:in:top, v2:in:top
1067 - sig: deprecated.callargs2 v1:in:top, v2:in:top, v3:in:top
1072 - sig: callargs3 imm:u8, v1:in:top, v2:in:top, v3:in:top
1077 - sig: deprecated.callargs3 v1:in:top, v2:in:top, v3:in:top, v4:in:top
1082 - sig: callrange imm1:u8, imm2:u8, v:in:top
1087 - sig: wide.callrange imm:u16, v:in:top
1093 - sig: deprecated.callrange imm:u16, v:in:top
1099 - sig: supercallspread imm:u8, v:in:top
1104 - sig: apply imm:u8, v1:in:top, v2:in:top
1109 - sig: deprecated.callspread v1:in:top, v2:in:top, v3:in:top
1114 - sig: callthis0 imm:u8, v:in:top
1119 - sig: callthis1 imm:u8, v1:in:top, v2:in:top
1124 - sig: callthis2 imm:u8, v1:in:top, v2:in:top, v3:in:top
1129 - sig: callthis3 imm:u8, v1:in:top, v2:in:top, v3:in:top, v4:in:top
1134 - sig: callthisrange imm1:u8, imm2:u8, v:in:top
1139 - sig: wide.callthisrange imm:u16, v:in:top
1145 - sig: deprecated.callthisrange imm:u16, v:in:top
1151 - sig: supercallthisrange imm1:u8, imm2:u8, v:in:top
1156 - sig: wide.supercallthisrange imm:u16, v:in:top
1162 - sig: supercallarrowrange imm1:u8, imm2:u8, v:in:top
1167 - sig: wide.supercallarrowrange imm:u16, v:in:top
1174 - title: definition instuctions
1177 - none
1179 - x_none
1181 - acc_read
1182 - acc_write
1189 - sig: definegettersetterbyvalue v1:in:top, v2:in:top, v3:in:top, v4:in:top
1193 - sig: definefunc imm1:u16, method_id, imm2:u8
1198 - sig: definemethod imm1:u16, method_id, imm2:u8
1203 - sig: defineclasswithbuffer imm1:u16, method_id, literalarray_id, imm2:u16, v:in:top
1208 - sig: deprecated.defineclasswithbuffer method_id, imm1:u16, imm2:u16, v1:in:top, v2:in:top
1215 - title: object visitors
1218 - none
1220 - x_none
1222 - acc_read
1223 - acc_write
1230 - sig: resumegenerator
1234 - sig: deprecated.resumegenerator v:in:top
1239 - sig: getresumemode
1243 - sig: deprecated.getresumemode v:in:top
1248 - sig: gettemplateobject imm:u16
1253 - sig: deprecated.gettemplateobject v:in:top
1258 - sig: getnextpropname v:in:top
1262 - sig: delobjprop v:in:top
1266 - sig: deprecated.delobjprop v1:in:top, v2:in:top
1271 - sig: suspendgenerator v:in:top
1275 - sig: deprecated.suspendgenerator v1:in:top, v2:in:top
1280 - sig: asyncfunctionawaituncaught v:in:top
1284 - sig: deprecated.asyncfunctionawaituncaught v1:in:top, v2:in:top
1289 - sig: copydataproperties v:in:top
1293 - sig: deprecated.copydataproperties v1:in:top, v2:in:top
1298 - sig: starrayspread v1:in:top, v2:in:top
1302 - sig: setobjectwithproto imm:u16, v:in:top
1307 - sig: deprecated.setobjectwithproto v1:in:top, v2:in:top
1312 - sig: ldobjbyvalue imm:u16, v:in:top
1317 - sig: deprecated.ldobjbyvalue v1:in:top, v2:in:top
1322 - sig: stobjbyvalue imm:u16, v1:in:top, v2:in:top
1327 - sig: stownbyvalue imm:u16, v1:in:top, v2:in:top
1332 - sig: ldsuperbyvalue imm:u16, v:in:top
1337 - sig: deprecated.ldsuperbyvalue v1:in:top, v2:in:top
1342 - sig: stsuperbyvalue imm:u16, v1:in:top, v2:in:top
1347 - sig: ldobjbyindex imm1:u16, imm2:u16
1352 - sig: wide.ldobjbyindex imm:u32
1357 - sig: deprecated.ldobjbyindex v:in:top, imm:u32
1362 - sig: stobjbyindex imm1:u16, v:in:top, imm2:u16
1367 - sig: wide.stobjbyindex v:in:top, imm:u32
1372 - sig: stownbyindex imm1:u16, v:in:top, imm2:u16
1377 - sig: wide.stownbyindex v:in:top, imm:u32
1382 - sig: asyncfunctionresolve v:in:top
1386 - sig: deprecated.asyncfunctionresolve v1:in:top, v2:in:top, v3:in:top
1391 - sig: asyncfunctionreject v:in:top
1395 - sig: deprecated.asyncfunctionreject v1:in:top, v2:in:top, v3:in:top
1400 - sig: copyrestargs imm:u8
1404 - sig: wide.copyrestargs imm:u16
1409 - sig: ldlexvar imm1:u8, imm2:u8
1413 - sig: wide.ldlexvar imm1:u16, imm2:u16
1418 - sig: stlexvar imm1:u8, imm2:u8
1422 - sig: wide.stlexvar imm1:u16, imm2:u16
1427 - sig: deprecated.stlexvar imm1:u16, imm2:u16, v:in:top
1432 - sig: getmodulenamespace imm:u8
1436 - sig: wide.getmodulenamespace imm:u16
1441 - sig: deprecated.getmodulenamespace string_id
1447 - sig: stmodulevar imm:u8
1451 - sig: wide.stmodulevar imm:u16
1456 - sig: deprecated.stmodulevar string_id
1462 - sig: tryldglobalbyname imm:u16, string_id
1467 - sig: trystglobalbyname imm:u16, string_id
1472 - sig: ldglobalvar imm:u16, string_id
1477 - sig: stglobalvar imm:u16, string_id
1482 - sig: ldobjbyname imm:u16, string_id
1487 - sig: deprecated.ldobjbyname string_id, v:in:top
1493 - sig: stobjbyname imm:u16, string_id, v:in:top
1498 - sig: stownbyname imm:u16, string_id, v:in:top
1503 - sig: ldsuperbyname imm:u16, string_id
1508 - sig: deprecated.ldsuperbyname string_id, v:in:top
1514 - sig: stsuperbyname imm:u16, string_id, v:in:top
1519 - sig: ldlocalmodulevar imm:u8
1523 - sig: wide.ldlocalmodulevar imm:u16
1528 - sig: ldexternalmodulevar imm:u8
1532 - sig: wide.ldexternalmodulevar imm:u16
1537 - sig: deprecated.ldmodulevar string_id, imm:u8
1543 - sig: stconsttoglobalrecord imm:u16, string_id
1548 - sig: deprecated.stconsttoglobalrecord string_id
1554 - sig: sttoglobalrecord imm:u16, string_id
1559 - sig: deprecated.stlettoglobalrecord string_id
1565 - sig: deprecated.stclasstoglobalrecord string_id
1571 - sig: deprecated.ldhomeobject
1576 - sig: deprecated.createobjecthavingmethod imm:u16
1581 - sig: stownbyvaluewithnameset imm:u16, v1:in:top, v2:in:top
1586 - sig: stownbynamewithnameset imm:u16, string_id, v:in:top
1591 - sig: ldbigint string_id
1596 - sig: ldthisbyname imm:u16, string_id
1601 - sig: stthisbyname imm:u16, string_id
1606 - sig: ldthisbyvalue imm:u16
1611 - sig: stthisbyvalue imm:u16, v:in:top
1616 - sig: wide.ldpatchvar imm:u16
1621 - sig: wide.stpatchvar imm:u16
1626 - sig: dynamicimport
1630 - sig: deprecated.dynamicimport v:in:top
1635 - sig: asyncgeneratorreject v:in:top
1639 - sig: deprecated.asyncgeneratorreject v1:in:top, v2:in:top
1644 - sig: setgeneratorstate imm:u8
1649 - title: Load accumulator from string constant pool
1651 Load string specified by id into accumulator. In dynamically-typed language context
1654 - string_id
1655 - language_type
1656 - maybe_dynamic
1658 - x_oom
1660 - constant_string_id
1664 - sig: lda.str string_id
1669 - title: jump operations
1674 - jump
1676 - x_none
1678 - branch_target
1682 - sig: jmp imm:i32
1686 - sig: jeqz imm:i32
1691 - sig: jnez imm:i32
1696 - sig: jstricteqz imm:i16
1701 - sig: jnstricteqz imm:i16
1706 - sig: jeqnull imm:i16
1711 - sig: jnenull imm:i16
1716 - sig: jstricteqnull imm:i16
1721 - sig: jnstricteqnull imm:i16
1726 - sig: jequndefined imm:i16
1731 - sig: jneundefined imm:i16
1736 - sig: jstrictequndefined imm:i16
1741 - sig: jnstrictequndefined imm:i16
1746 - sig: jeq v:in:top, imm:i16
1751 - sig: jne v:in:top, imm:i16
1756 - sig: jstricteq v:in:top, imm:i16
1761 - sig: jnstricteq v:in:top, imm:i16
1767 - title: Dynamic move register-to-register
1771 - valid_in_dynamic_context
1773 - x_none
1775 - dynamic
1779 - sig: mov v1:out:any, v2:in:any
1784 - title: Dynamic load accumulator from register
1788 - valid_in_dynamic_context
1790 - x_none
1792 - dynamic
1796 - sig: lda v:in:any
1801 - title: Dynamic store accumulator
1805 - valid_in_dynamic_context
1807 - x_none
1809 - dynamic
1813 - sig: sta v:out:any
1818 - title: Dynamic load accumulator from immediate
1822 - valid_in_dynamic_context
1824 - x_none
1826 - dynamic
1830 - sig: ldai imm:i32
1834 - sig: fldai imm:f64
1840 - title: dynamic return
1843 - valid_in_dynamic_context
1845 - x_none
1847 - dynamic
1848 - return
1853 - sig: return
1858 - sig: returnundefined
1864 - title: no operation
1867 - x_none
1869 - none
1873 - sig: nop