• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef ECMASCRIPT_JSPANDAFILE_BYTECODE_INST_OLD_INSTRUCTION_H
17 #define ECMASCRIPT_JSPANDAFILE_BYTECODE_INST_OLD_INSTRUCTION_H
18 
19 #include "ecmascript/jspandafile/bytecode_inst/instruction.h"
20 
21 namespace panda::ecmascript {
22 class OldBytecodeInst : OldBytecodeInstBase {
23 public:
24 #include "ecmascript/jspandafile/bytecode_inst/old_instruction_enum.h"
25 
OldBytecodeInst(const uint8_t * pc)26     explicit OldBytecodeInst(const uint8_t *pc) : OldBytecodeInstBase {pc}
27     {
28     }
29 
GetOpcode()30     inline typename OldBytecodeInst::Opcode GetOpcode() const
31     {
32         uint8_t primary = ReadByte(0);
33         if (primary >= 236) {  // 236: second level bytecode index
34             uint8_t secondary = ReadByte(1);
35             return static_cast<Opcode>((secondary << 8U) | primary);
36         }
37         return static_cast<Opcode>(primary);
38     }
39 
JumpTo(int32_t offset)40     OldBytecodeInst JumpTo(int32_t offset) const
41     {
42         return OldBytecodeInst(OldBytecodeInstBase::GetPointer(offset));
43     }
44 
GetNext()45     OldBytecodeInst GetNext() const
46     {
47         return JumpTo(GetSize());
48     }
49 
GetAddress()50     const uint8_t *GetAddress() const
51     {
52         return OldBytecodeInstBase::GetAddress();
53     }
54 
GetSize()55     size_t GetSize() const
56     {
57         return Size(GetFormat(GetOpcode()));
58     }
59 
GetId()60     uint32_t GetId() const
61     {
62         Format format = GetFormat(GetOpcode());
63         if (format == Format::ID16) {
64             return static_cast<uint32_t>(Read<8, 16>());
65         }
66         if (format == Format::ID32) {
67             return static_cast<uint32_t>(Read<8, 32>());
68         }
69         if (format == Format::PREF_ID16_IMM16_IMM16_V8_V8) {
70             return static_cast<uint32_t>(Read<16, 16>());
71         }
72         if (format == Format::PREF_ID16_IMM16_V8) {
73             return static_cast<uint32_t>(Read<16, 16>());
74         }
75         if (format == Format::PREF_ID32) {
76             return static_cast<uint32_t>(Read<16, 32>());
77         }
78         if (format == Format::PREF_ID32_IMM8) {
79             return static_cast<uint32_t>(Read<16, 32>());
80         }
81         if (format == Format::PREF_ID32_V8) {
82             return static_cast<uint32_t>(Read<16, 32>());
83         }
84         if (format == Format::V4_IMM4_ID16) {
85             return static_cast<uint32_t>(Read<16, 16>());
86         }
87         if (format == Format::V4_V4_ID16) {
88             return static_cast<uint32_t>(Read<16, 16>());
89         }
90         if (format == Format::V4_V4_V4_IMM4_ID16) {
91             return static_cast<uint32_t>(Read<24, 16>());
92         }
93         if (format == Format::V4_V4_V4_V4_ID16) {
94             return static_cast<uint32_t>(Read<24, 16>());
95         }
96         if (format == Format::V8_ID16) {
97             return static_cast<uint32_t>(Read<16, 16>());
98         }
99         if (format == Format::V8_ID32) {
100             return static_cast<uint32_t>(Read<16, 32>());
101         }
102         LOG_ECMA(FATAL) << "this branch is unreachable";
103         UNREACHABLE();
104     }
105 
106     template <Format format, size_t idx = 0>
GetImm()107     auto GetImm() const
108     {
109         if constexpr (format == Format::IMM16) {
110             constexpr std::array<uint8_t, 1> OFFSETS{8};
111             constexpr std::array<uint8_t, 1> WIDTHS{16};
112             return Read<OFFSETS[idx], WIDTHS[idx], true>();
113         }
114         if constexpr (format == Format::IMM16_V16) {
115             constexpr std::array<uint8_t, 1> OFFSETS{8};
116             constexpr std::array<uint8_t, 1> WIDTHS{16};
117             return Read<OFFSETS[idx], WIDTHS[idx], true>();
118         }
119         if constexpr (format == Format::IMM32) {
120             constexpr std::array<uint8_t, 1> OFFSETS{8};
121             constexpr std::array<uint8_t, 1> WIDTHS{32};
122             return Read<OFFSETS[idx], WIDTHS[idx], true>();
123         }
124         if constexpr (format == Format::IMM4_V4_V4_V4) {
125             constexpr std::array<uint8_t, 1> OFFSETS{8};
126             constexpr std::array<uint8_t, 1> WIDTHS{4};
127             return Read<OFFSETS[idx], WIDTHS[idx], true>();
128         }
129         if constexpr (format == Format::IMM4_V4_V4_V4_V4_V4) {
130             constexpr std::array<uint8_t, 1> OFFSETS{8};
131             constexpr std::array<uint8_t, 1> WIDTHS{4};
132             return Read<OFFSETS[idx], WIDTHS[idx], true>();
133         }
134         if constexpr (format == Format::IMM64) {
135             constexpr std::array<uint8_t, 1> OFFSETS{8};
136             constexpr std::array<uint8_t, 1> WIDTHS{64};
137             return Read<OFFSETS[idx], WIDTHS[idx], true>();
138         }
139         if constexpr (format == Format::IMM8) {
140             constexpr std::array<uint8_t, 1> OFFSETS{8};
141             constexpr std::array<uint8_t, 1> WIDTHS{8};
142             return Read<OFFSETS[idx], WIDTHS[idx], true>();
143         }
144         if constexpr (format == Format::PREF_ID16_IMM16_IMM16_V8_V8) {
145             constexpr std::array<uint8_t, 2> OFFSETS{32, 48};
146             constexpr std::array<uint8_t, 2> WIDTHS{16, 16};
147             return Read<OFFSETS[idx], WIDTHS[idx], true>();
148         }
149         if constexpr (format == Format::PREF_ID16_IMM16_V8) {
150             constexpr std::array<uint8_t, 1> OFFSETS{32};
151             constexpr std::array<uint8_t, 1> WIDTHS{16};
152             return Read<OFFSETS[idx], WIDTHS[idx], true>();
153         }
154         if constexpr (format == Format::PREF_ID32_IMM8) {
155             constexpr std::array<uint8_t, 1> OFFSETS{48};
156             constexpr std::array<uint8_t, 1> WIDTHS{8};
157             return Read<OFFSETS[idx], WIDTHS[idx], true>();
158         }
159         if constexpr (format == Format::PREF_IMM16) {
160             constexpr std::array<uint8_t, 1> OFFSETS{16};
161             constexpr std::array<uint8_t, 1> WIDTHS{16};
162             return Read<OFFSETS[idx], WIDTHS[idx], true>();
163         }
164         if constexpr (format == Format::PREF_IMM16_IMM16) {
165             constexpr std::array<uint8_t, 2> OFFSETS{16, 32};
166             constexpr std::array<uint8_t, 2> WIDTHS{16, 16};
167             return Read<OFFSETS[idx], WIDTHS[idx], true>();
168         }
169         if constexpr (format == Format::PREF_IMM16_IMM16_V8) {
170             constexpr std::array<uint8_t, 2> OFFSETS{16, 32};
171             constexpr std::array<uint8_t, 2> WIDTHS{16, 16};
172             return Read<OFFSETS[idx], WIDTHS[idx], true>();
173         }
174         if constexpr (format == Format::PREF_IMM16_V8) {
175             constexpr std::array<uint8_t, 1> OFFSETS{16};
176             constexpr std::array<uint8_t, 1> WIDTHS{16};
177             return Read<OFFSETS[idx], WIDTHS[idx], true>();
178         }
179         if constexpr (format == Format::PREF_IMM16_V8_V8) {
180             constexpr std::array<uint8_t, 1> OFFSETS{16};
181             constexpr std::array<uint8_t, 1> WIDTHS{16};
182             return Read<OFFSETS[idx], WIDTHS[idx], true>();
183         }
184         if constexpr (format == Format::PREF_IMM32) {
185             constexpr std::array<uint8_t, 1> OFFSETS{16};
186             constexpr std::array<uint8_t, 1> WIDTHS{32};
187             return Read<OFFSETS[idx], WIDTHS[idx], true>();
188         }
189         if constexpr (format == Format::PREF_IMM4_IMM4) {
190             constexpr std::array<uint8_t, 2> OFFSETS{16, 20};
191             constexpr std::array<uint8_t, 2> WIDTHS{4, 4};
192             return Read<OFFSETS[idx], WIDTHS[idx], true>();
193         }
194         if constexpr (format == Format::PREF_IMM4_IMM4_V8) {
195             constexpr std::array<uint8_t, 2> OFFSETS{16, 20};
196             constexpr std::array<uint8_t, 2> WIDTHS{4, 4};
197             return Read<OFFSETS[idx], WIDTHS[idx], true>();
198         }
199         if constexpr (format == Format::PREF_IMM8_IMM8) {
200             constexpr std::array<uint8_t, 2> OFFSETS{16, 24};
201             constexpr std::array<uint8_t, 2> WIDTHS{8, 8};
202             return Read<OFFSETS[idx], WIDTHS[idx], true>();
203         }
204         if constexpr (format == Format::PREF_IMM8_IMM8_V8) {
205             constexpr std::array<uint8_t, 2> OFFSETS{16, 24};
206             constexpr std::array<uint8_t, 2> WIDTHS{8, 8};
207             return Read<OFFSETS[idx], WIDTHS[idx], true>();
208         }
209         if constexpr (format == Format::PREF_V8_IMM32) {
210             constexpr std::array<uint8_t, 1> OFFSETS{24};
211             constexpr std::array<uint8_t, 1> WIDTHS{32};
212             return Read<OFFSETS[idx], WIDTHS[idx], true>();
213         }
214         if constexpr (format == Format::V4_IMM4) {
215             constexpr std::array<uint8_t, 1> OFFSETS{12};
216             constexpr std::array<uint8_t, 1> WIDTHS{4};
217             return Read<OFFSETS[idx], WIDTHS[idx], true>();
218         }
219         if constexpr (format == Format::V4_IMM4_ID16) {
220             constexpr std::array<uint8_t, 1> OFFSETS{12};
221             constexpr std::array<uint8_t, 1> WIDTHS{4};
222             return Read<OFFSETS[idx], WIDTHS[idx], true>();
223         }
224         if constexpr (format == Format::V4_V4_V4_IMM4_ID16) {
225             constexpr std::array<uint8_t, 1> OFFSETS{20};
226             constexpr std::array<uint8_t, 1> WIDTHS{4};
227             return Read<OFFSETS[idx], WIDTHS[idx], true>();
228         }
229         if constexpr (format == Format::V8_IMM16) {
230             constexpr std::array<uint8_t, 1> OFFSETS{16};
231             constexpr std::array<uint8_t, 1> WIDTHS{16};
232             return Read<OFFSETS[idx], WIDTHS[idx], true>();
233         }
234         if constexpr (format == Format::V8_IMM32) {
235             constexpr std::array<uint8_t, 1> OFFSETS{16};
236             constexpr std::array<uint8_t, 1> WIDTHS{32};
237             return Read<OFFSETS[idx], WIDTHS[idx], true>();
238         }
239         if constexpr (format == Format::V8_IMM64) {
240             constexpr std::array<uint8_t, 1> OFFSETS{16};
241             constexpr std::array<uint8_t, 1> WIDTHS{64};
242             return Read<OFFSETS[idx], WIDTHS[idx], true>();
243         }
244         if constexpr (format == Format::V8_IMM8) {
245             constexpr std::array<uint8_t, 1> OFFSETS{16};
246             constexpr std::array<uint8_t, 1> WIDTHS{8};
247             return Read<OFFSETS[idx], WIDTHS[idx], true>();
248         }
249         LOG_ECMA(FATAL) << "this branch is unreachable";
250         UNREACHABLE();
251     }
252 
Size(Format format)253     static constexpr size_t Size(Format format)
254     {
255         switch (format) {
256             case Format::ID16: {
257                 constexpr size_t SIZE = 3;
258                 return SIZE;
259             }
260             case Format::ID32: {
261                 constexpr size_t SIZE = 5;
262                 return SIZE;
263             }
264             case Format::IMM16: {
265                 constexpr size_t SIZE = 3;
266                 return SIZE;
267             }
268             case Format::IMM16_V16: {
269                 constexpr size_t SIZE = 5;
270                 return SIZE;
271             }
272             case Format::IMM32: {
273                 constexpr size_t SIZE = 5;
274                 return SIZE;
275             }
276             case Format::IMM4_V4_V4_V4: {
277                 constexpr size_t SIZE = 3;
278                 return SIZE;
279             }
280             case Format::IMM4_V4_V4_V4_V4_V4: {
281                 constexpr size_t SIZE = 4;
282                 return SIZE;
283             }
284             case Format::IMM64: {
285                 constexpr size_t SIZE = 9;
286                 return SIZE;
287             }
288             case Format::IMM8: {
289                 constexpr size_t SIZE = 2;
290                 return SIZE;
291             }
292             case Format::NONE: {
293                 constexpr size_t SIZE = 1;
294                 return SIZE;
295             }
296             case Format::PREF_ID16_IMM16_IMM16_V8_V8: {
297                 constexpr size_t SIZE = 10;
298                 return SIZE;
299             }
300             case Format::PREF_ID16_IMM16_V8: {
301                 constexpr size_t SIZE = 7;
302                 return SIZE;
303             }
304             case Format::PREF_ID32: {
305                 constexpr size_t SIZE = 6;
306                 return SIZE;
307             }
308             case Format::PREF_ID32_IMM8: {
309                 constexpr size_t SIZE = 7;
310                 return SIZE;
311             }
312             case Format::PREF_ID32_V8: {
313                 constexpr size_t SIZE = 7;
314                 return SIZE;
315             }
316             case Format::PREF_IMM16: {
317                 constexpr size_t SIZE = 4;
318                 return SIZE;
319             }
320             case Format::PREF_IMM16_IMM16: {
321                 constexpr size_t SIZE = 6;
322                 return SIZE;
323             }
324             case Format::PREF_IMM16_IMM16_V8: {
325                 constexpr size_t SIZE = 7;
326                 return SIZE;
327             }
328             case Format::PREF_IMM16_V8: {
329                 constexpr size_t SIZE = 5;
330                 return SIZE;
331             }
332             case Format::PREF_IMM16_V8_V8: {
333                 constexpr size_t SIZE = 6;
334                 return SIZE;
335             }
336             case Format::PREF_IMM32: {
337                 constexpr size_t SIZE = 6;
338                 return SIZE;
339             }
340             case Format::PREF_IMM4_IMM4: {
341                 constexpr size_t SIZE = 3;
342                 return SIZE;
343             }
344             case Format::PREF_IMM4_IMM4_V8: {
345                 constexpr size_t SIZE = 4;
346                 return SIZE;
347             }
348             case Format::PREF_IMM8_IMM8: {
349                 constexpr size_t SIZE = 4;
350                 return SIZE;
351             }
352             case Format::PREF_IMM8_IMM8_V8: {
353                 constexpr size_t SIZE = 5;
354                 return SIZE;
355             }
356             case Format::PREF_NONE: {
357                 constexpr size_t SIZE = 2;
358                 return SIZE;
359             }
360             case Format::PREF_V4_V4: {
361                 constexpr size_t SIZE = 3;
362                 return SIZE;
363             }
364             case Format::PREF_V8: {
365                 constexpr size_t SIZE = 3;
366                 return SIZE;
367             }
368             case Format::PREF_V8_IMM32: {
369                 constexpr size_t SIZE = 7;
370                 return SIZE;
371             }
372             case Format::PREF_V8_V8: {
373                 constexpr size_t SIZE = 4;
374                 return SIZE;
375             }
376             case Format::PREF_V8_V8_V8: {
377                 constexpr size_t SIZE = 5;
378                 return SIZE;
379             }
380             case Format::PREF_V8_V8_V8_V8: {
381                 constexpr size_t SIZE = 6;
382                 return SIZE;
383             }
384             case Format::V16_V16: {
385                 constexpr size_t SIZE = 5;
386                 return SIZE;
387             }
388             case Format::V4_IMM4: {
389                 constexpr size_t SIZE = 2;
390                 return SIZE;
391             }
392             case Format::V4_IMM4_ID16: {
393                 constexpr size_t SIZE = 4;
394                 return SIZE;
395             }
396             case Format::V4_V4: {
397                 constexpr size_t SIZE = 2;
398                 return SIZE;
399             }
400             case Format::V4_V4_ID16: {
401                 constexpr size_t SIZE = 4;
402                 return SIZE;
403             }
404             case Format::V4_V4_V4_IMM4_ID16: {
405                 constexpr size_t SIZE = 5;
406                 return SIZE;
407             }
408             case Format::V4_V4_V4_V4_ID16: {
409                 constexpr size_t SIZE = 5;
410                 return SIZE;
411             }
412             case Format::V8: {
413                 constexpr size_t SIZE = 2;
414                 return SIZE;
415             }
416             case Format::V8_ID16: {
417                 constexpr size_t SIZE = 4;
418                 return SIZE;
419             }
420             case Format::V8_ID32: {
421                 constexpr size_t SIZE = 6;
422                 return SIZE;
423             }
424             case Format::V8_IMM16: {
425                 constexpr size_t SIZE = 4;
426                 return SIZE;
427             }
428             case Format::V8_IMM32: {
429                 constexpr size_t SIZE = 6;
430                 return SIZE;
431             }
432             case Format::V8_IMM64: {
433                 constexpr size_t SIZE = 10;
434                 return SIZE;
435             }
436             case Format::V8_IMM8: {
437                 constexpr size_t SIZE = 3;
438                 return SIZE;
439             }
440             case Format::V8_V8: {
441                 constexpr size_t SIZE = 3;
442                 return SIZE;
443             }
444             default:
445                 LOG_ECMA(FATAL) << "this branch is unreachable";
446                 UNREACHABLE();
447         }
448     }
449 
GetFormat(Opcode opcode)450     static constexpr Format GetFormat(Opcode opcode)
451     {
452         switch (opcode) {
453             case Opcode::NOP:
454                 return Format::NONE;
455             case Opcode::MOV_V4_V4:
456                 return Format::V4_V4;
457             case Opcode::MOV_V8_V8:
458                 return Format::V8_V8;
459             case Opcode::MOV_V16_V16:
460                 return Format::V16_V16;
461             case Opcode::MOV_64_V4_V4:
462                 return Format::V4_V4;
463             case Opcode::MOV_64_V16_V16:
464                 return Format::V16_V16;
465             case Opcode::MOV_OBJ_V4_V4:
466                 return Format::V4_V4;
467             case Opcode::MOV_OBJ_V8_V8:
468                 return Format::V8_V8;
469             case Opcode::MOV_OBJ_V16_V16:
470                 return Format::V16_V16;
471             case Opcode::MOVI_V4_IMM4:
472                 return Format::V4_IMM4;
473             case Opcode::MOVI_V8_IMM8:
474                 return Format::V8_IMM8;
475             case Opcode::MOVI_V8_IMM16:
476                 return Format::V8_IMM16;
477             case Opcode::MOVI_V8_IMM32:
478                 return Format::V8_IMM32;
479             case Opcode::MOVI_64_V8_IMM64:
480                 return Format::V8_IMM64;
481             case Opcode::FMOVI_64_V8_IMM64:
482                 return Format::V8_IMM64;
483             case Opcode::MOV_NULL_V8:
484                 return Format::V8;
485             case Opcode::LDA_V8:
486                 return Format::V8;
487             case Opcode::LDA_64_V8:
488                 return Format::V8;
489             case Opcode::LDA_OBJ_V8:
490                 return Format::V8;
491             case Opcode::LDAI_IMM8:
492                 return Format::IMM8;
493             case Opcode::LDAI_IMM16:
494                 return Format::IMM16;
495             case Opcode::LDAI_IMM32:
496                 return Format::IMM32;
497             case Opcode::LDAI_64_IMM64:
498                 return Format::IMM64;
499             case Opcode::FLDAI_64_IMM64:
500                 return Format::IMM64;
501             case Opcode::LDA_STR_ID32:
502                 return Format::ID32;
503             case Opcode::LDA_CONST_V8_ID32:
504                 return Format::V8_ID32;
505             case Opcode::LDA_TYPE_ID16:
506                 return Format::ID16;
507             case Opcode::LDA_NULL:
508                 return Format::NONE;
509             case Opcode::STA_V8:
510                 return Format::V8;
511             case Opcode::STA_64_V8:
512                 return Format::V8;
513             case Opcode::STA_OBJ_V8:
514                 return Format::V8;
515             case Opcode::CMP_64_V8:
516                 return Format::V8;
517             case Opcode::FCMPL_64_V8:
518                 return Format::V8;
519             case Opcode::FCMPG_64_V8:
520                 return Format::V8;
521             case Opcode::JMP_IMM8:
522                 return Format::IMM8;
523             case Opcode::JMP_IMM16:
524                 return Format::IMM16;
525             case Opcode::JMP_IMM32:
526                 return Format::IMM32;
527             case Opcode::JEQ_OBJ_V8_IMM8:
528                 return Format::V8_IMM8;
529             case Opcode::JEQ_OBJ_V8_IMM16:
530                 return Format::V8_IMM16;
531             case Opcode::JNE_OBJ_V8_IMM8:
532                 return Format::V8_IMM8;
533             case Opcode::JNE_OBJ_V8_IMM16:
534                 return Format::V8_IMM16;
535             case Opcode::JEQZ_OBJ_IMM8:
536                 return Format::IMM8;
537             case Opcode::JEQZ_OBJ_IMM16:
538                 return Format::IMM16;
539             case Opcode::JNEZ_OBJ_IMM8:
540                 return Format::IMM8;
541             case Opcode::JNEZ_OBJ_IMM16:
542                 return Format::IMM16;
543             case Opcode::JEQZ_IMM8:
544                 return Format::IMM8;
545             case Opcode::JEQZ_IMM16:
546                 return Format::IMM16;
547             case Opcode::JNEZ_IMM8:
548                 return Format::IMM8;
549             case Opcode::JNEZ_IMM16:
550                 return Format::IMM16;
551             case Opcode::JLTZ_IMM8:
552                 return Format::IMM8;
553             case Opcode::JLTZ_IMM16:
554                 return Format::IMM16;
555             case Opcode::JGTZ_IMM8:
556                 return Format::IMM8;
557             case Opcode::JGTZ_IMM16:
558                 return Format::IMM16;
559             case Opcode::JLEZ_IMM8:
560                 return Format::IMM8;
561             case Opcode::JLEZ_IMM16:
562                 return Format::IMM16;
563             case Opcode::JGEZ_IMM8:
564                 return Format::IMM8;
565             case Opcode::JGEZ_IMM16:
566                 return Format::IMM16;
567             case Opcode::JEQ_V8_IMM8:
568                 return Format::V8_IMM8;
569             case Opcode::JEQ_V8_IMM16:
570                 return Format::V8_IMM16;
571             case Opcode::JNE_V8_IMM8:
572                 return Format::V8_IMM8;
573             case Opcode::JNE_V8_IMM16:
574                 return Format::V8_IMM16;
575             case Opcode::JLT_V8_IMM8:
576                 return Format::V8_IMM8;
577             case Opcode::JLT_V8_IMM16:
578                 return Format::V8_IMM16;
579             case Opcode::JGT_V8_IMM8:
580                 return Format::V8_IMM8;
581             case Opcode::JGT_V8_IMM16:
582                 return Format::V8_IMM16;
583             case Opcode::JLE_V8_IMM8:
584                 return Format::V8_IMM8;
585             case Opcode::JLE_V8_IMM16:
586                 return Format::V8_IMM16;
587             case Opcode::JGE_V8_IMM8:
588                 return Format::V8_IMM8;
589             case Opcode::JGE_V8_IMM16:
590                 return Format::V8_IMM16;
591             case Opcode::FNEG_64:
592                 return Format::NONE;
593             case Opcode::NEG:
594                 return Format::NONE;
595             case Opcode::NEG_64:
596                 return Format::NONE;
597             case Opcode::ADD2_V8:
598                 return Format::V8;
599             case Opcode::ADD2_64_V8:
600                 return Format::V8;
601             case Opcode::SUB2_V8:
602                 return Format::V8;
603             case Opcode::SUB2_64_V8:
604                 return Format::V8;
605             case Opcode::MUL2_V8:
606                 return Format::V8;
607             case Opcode::MUL2_64_V8:
608                 return Format::V8;
609             case Opcode::FADD2_64_V8:
610                 return Format::V8;
611             case Opcode::FSUB2_64_V8:
612                 return Format::V8;
613             case Opcode::FMUL2_64_V8:
614                 return Format::V8;
615             case Opcode::FDIV2_64_V8:
616                 return Format::V8;
617             case Opcode::FMOD2_64_V8:
618                 return Format::V8;
619             case Opcode::DIV2_V8:
620                 return Format::V8;
621             case Opcode::DIV2_64_V8:
622                 return Format::V8;
623             case Opcode::MOD2_V8:
624                 return Format::V8;
625             case Opcode::MOD2_64_V8:
626                 return Format::V8;
627             case Opcode::ADDI_IMM8:
628                 return Format::IMM8;
629             case Opcode::SUBI_IMM8:
630                 return Format::IMM8;
631             case Opcode::MULI_IMM8:
632                 return Format::IMM8;
633             case Opcode::ANDI_IMM32:
634                 return Format::IMM32;
635             case Opcode::ORI_IMM32:
636                 return Format::IMM32;
637             case Opcode::SHLI_IMM8:
638                 return Format::IMM8;
639             case Opcode::SHRI_IMM8:
640                 return Format::IMM8;
641             case Opcode::ASHRI_IMM8:
642                 return Format::IMM8;
643             case Opcode::DIVI_IMM8:
644                 return Format::IMM8;
645             case Opcode::MODI_IMM8:
646                 return Format::IMM8;
647             case Opcode::ADD_V4_V4:
648                 return Format::V4_V4;
649             case Opcode::SUB_V4_V4:
650                 return Format::V4_V4;
651             case Opcode::MUL_V4_V4:
652                 return Format::V4_V4;
653             case Opcode::DIV_V4_V4:
654                 return Format::V4_V4;
655             case Opcode::MOD_V4_V4:
656                 return Format::V4_V4;
657             case Opcode::INCI_V4_IMM4:
658                 return Format::V4_IMM4;
659             case Opcode::LDARR_8_V8:
660                 return Format::V8;
661             case Opcode::LDARRU_8_V8:
662                 return Format::V8;
663             case Opcode::LDARR_16_V8:
664                 return Format::V8;
665             case Opcode::LDARRU_16_V8:
666                 return Format::V8;
667             case Opcode::LDARR_V8:
668                 return Format::V8;
669             case Opcode::LDARR_64_V8:
670                 return Format::V8;
671             case Opcode::FLDARR_32_V8:
672                 return Format::V8;
673             case Opcode::FLDARR_64_V8:
674                 return Format::V8;
675             case Opcode::LDARR_OBJ_V8:
676                 return Format::V8;
677             case Opcode::STARR_8_V4_V4:
678                 return Format::V4_V4;
679             case Opcode::STARR_16_V4_V4:
680                 return Format::V4_V4;
681             case Opcode::STARR_V4_V4:
682                 return Format::V4_V4;
683             case Opcode::STARR_64_V4_V4:
684                 return Format::V4_V4;
685             case Opcode::FSTARR_32_V4_V4:
686                 return Format::V4_V4;
687             case Opcode::FSTARR_64_V4_V4:
688                 return Format::V4_V4;
689             case Opcode::STARR_OBJ_V4_V4:
690                 return Format::V4_V4;
691             case Opcode::LENARR_V8:
692                 return Format::V8;
693             case Opcode::NEWARR_V4_V4_ID16:
694                 return Format::V4_V4_ID16;
695             case Opcode::NEWOBJ_V8_ID16:
696                 return Format::V8_ID16;
697             case Opcode::INITOBJ_SHORT_V4_V4_ID16:
698                 return Format::V4_V4_ID16;
699             case Opcode::INITOBJ_V4_V4_V4_V4_ID16:
700                 return Format::V4_V4_V4_V4_ID16;
701             case Opcode::INITOBJ_RANGE_V8_ID16:
702                 return Format::V8_ID16;
703             case Opcode::LDOBJ_V8_ID16:
704                 return Format::V8_ID16;
705             case Opcode::LDOBJ_64_V8_ID16:
706                 return Format::V8_ID16;
707             case Opcode::LDOBJ_OBJ_V8_ID16:
708                 return Format::V8_ID16;
709             case Opcode::STOBJ_V8_ID16:
710                 return Format::V8_ID16;
711             case Opcode::STOBJ_64_V8_ID16:
712                 return Format::V8_ID16;
713             case Opcode::STOBJ_OBJ_V8_ID16:
714                 return Format::V8_ID16;
715             case Opcode::LDOBJ_V_V4_V4_ID16:
716                 return Format::V4_V4_ID16;
717             case Opcode::LDOBJ_V_64_V4_V4_ID16:
718                 return Format::V4_V4_ID16;
719             case Opcode::LDOBJ_V_OBJ_V4_V4_ID16:
720                 return Format::V4_V4_ID16;
721             case Opcode::STOBJ_V_V4_V4_ID16:
722                 return Format::V4_V4_ID16;
723             case Opcode::STOBJ_V_64_V4_V4_ID16:
724                 return Format::V4_V4_ID16;
725             case Opcode::STOBJ_V_OBJ_V4_V4_ID16:
726                 return Format::V4_V4_ID16;
727             case Opcode::LDSTATIC_ID16:
728                 return Format::ID16;
729             case Opcode::LDSTATIC_64_ID16:
730                 return Format::ID16;
731             case Opcode::LDSTATIC_OBJ_ID16:
732                 return Format::ID16;
733             case Opcode::STSTATIC_ID16:
734                 return Format::ID16;
735             case Opcode::STSTATIC_64_ID16:
736                 return Format::ID16;
737             case Opcode::STSTATIC_OBJ_ID16:
738                 return Format::ID16;
739             case Opcode::RETURN:
740                 return Format::NONE;
741             case Opcode::RETURN_64:
742                 return Format::NONE;
743             case Opcode::RETURN_OBJ:
744                 return Format::NONE;
745             case Opcode::RETURN_VOID:
746                 return Format::NONE;
747             case Opcode::THROW_V8:
748                 return Format::V8;
749             case Opcode::CHECKCAST_ID16:
750                 return Format::ID16;
751             case Opcode::ISINSTANCE_ID16:
752                 return Format::ID16;
753             case Opcode::CALL_SHORT_V4_V4_ID16:
754                 return Format::V4_V4_ID16;
755             case Opcode::CALL_V4_V4_V4_V4_ID16:
756                 return Format::V4_V4_V4_V4_ID16;
757             case Opcode::CALL_RANGE_V8_ID16:
758                 return Format::V8_ID16;
759             case Opcode::CALL_ACC_SHORT_V4_IMM4_ID16:
760                 return Format::V4_IMM4_ID16;
761             case Opcode::CALL_ACC_V4_V4_V4_IMM4_ID16:
762                 return Format::V4_V4_V4_IMM4_ID16;
763             case Opcode::CALL_VIRT_SHORT_V4_V4_ID16:
764                 return Format::V4_V4_ID16;
765             case Opcode::CALL_VIRT_V4_V4_V4_V4_ID16:
766                 return Format::V4_V4_V4_V4_ID16;
767             case Opcode::CALL_VIRT_RANGE_V8_ID16:
768                 return Format::V8_ID16;
769             case Opcode::CALL_VIRT_ACC_SHORT_V4_IMM4_ID16:
770                 return Format::V4_IMM4_ID16;
771             case Opcode::CALL_VIRT_ACC_V4_V4_V4_IMM4_ID16:
772                 return Format::V4_V4_V4_IMM4_ID16;
773             case Opcode::MOV_DYN_V8_V8:
774                 return Format::V8_V8;
775             case Opcode::MOV_DYN_V16_V16:
776                 return Format::V16_V16;
777             case Opcode::LDA_DYN_V8:
778                 return Format::V8;
779             case Opcode::STA_DYN_V8:
780                 return Format::V8;
781             case Opcode::LDAI_DYN_IMM32:
782                 return Format::IMM32;
783             case Opcode::FLDAI_DYN_IMM64:
784                 return Format::IMM64;
785             case Opcode::RETURN_DYN:
786                 return Format::NONE;
787             case Opcode::CALLI_DYN_SHORT_IMM4_V4_V4_V4:
788                 return Format::IMM4_V4_V4_V4;
789             case Opcode::CALLI_DYN_IMM4_V4_V4_V4_V4_V4:
790                 return Format::IMM4_V4_V4_V4_V4_V4;
791             case Opcode::CALLI_DYN_RANGE_IMM16_V16:
792                 return Format::IMM16_V16;
793             case Opcode::FMOVI_PREF_V8_IMM32:
794                 return Format::PREF_V8_IMM32;
795             case Opcode::I32TOF64_PREF_NONE:
796                 return Format::PREF_NONE;
797             case Opcode::UCMP_PREF_V8:
798                 return Format::PREF_V8;
799             case Opcode::NOT_PREF_NONE:
800                 return Format::PREF_NONE;
801             case Opcode::ECMA_LDNAN_PREF_NONE:
802                 return Format::PREF_NONE;
803             case Opcode::FLDAI_PREF_IMM32:
804                 return Format::PREF_IMM32;
805             case Opcode::U32TOF64_PREF_NONE:
806                 return Format::PREF_NONE;
807             case Opcode::UCMP_64_PREF_V8:
808                 return Format::PREF_V8;
809             case Opcode::NOT_64_PREF_NONE:
810                 return Format::PREF_NONE;
811             case Opcode::ECMA_LDINFINITY_PREF_NONE:
812                 return Format::PREF_NONE;
813             case Opcode::FCMPL_PREF_V8:
814                 return Format::PREF_V8;
815             case Opcode::I64TOF64_PREF_NONE:
816                 return Format::PREF_NONE;
817             case Opcode::DIVU2_PREF_V8:
818                 return Format::PREF_V8;
819             case Opcode::AND2_PREF_V8:
820                 return Format::PREF_V8;
821             case Opcode::ECMA_LDGLOBALTHIS_PREF_NONE:
822                 return Format::PREF_NONE;
823             case Opcode::FCMPG_PREF_V8:
824                 return Format::PREF_V8;
825             case Opcode::U64TOF64_PREF_NONE:
826                 return Format::PREF_NONE;
827             case Opcode::DIVU2_64_PREF_V8:
828                 return Format::PREF_V8;
829             case Opcode::AND2_64_PREF_V8:
830                 return Format::PREF_V8;
831             case Opcode::ECMA_LDUNDEFINED_PREF_NONE:
832                 return Format::PREF_NONE;
833             case Opcode::FNEG_PREF_NONE:
834                 return Format::PREF_NONE;
835             case Opcode::F64TOI32_PREF_NONE:
836                 return Format::PREF_NONE;
837             case Opcode::MODU2_PREF_V8:
838                 return Format::PREF_V8;
839             case Opcode::OR2_PREF_V8:
840                 return Format::PREF_V8;
841             case Opcode::ECMA_LDNULL_PREF_NONE:
842                 return Format::PREF_NONE;
843             case Opcode::FADD2_PREF_V8:
844                 return Format::PREF_V8;
845             case Opcode::F64TOI64_PREF_NONE:
846                 return Format::PREF_NONE;
847             case Opcode::MODU2_64_PREF_V8:
848                 return Format::PREF_V8;
849             case Opcode::OR2_64_PREF_V8:
850                 return Format::PREF_V8;
851             case Opcode::ECMA_LDSYMBOL_PREF_NONE:
852                 return Format::PREF_NONE;
853             case Opcode::FSUB2_PREF_V8:
854                 return Format::PREF_V8;
855             case Opcode::F64TOU32_PREF_NONE:
856                 return Format::PREF_NONE;
857             case Opcode::XOR2_PREF_V8:
858                 return Format::PREF_V8;
859             case Opcode::ECMA_LDGLOBAL_PREF_NONE:
860                 return Format::PREF_NONE;
861             case Opcode::FMUL2_PREF_V8:
862                 return Format::PREF_V8;
863             case Opcode::F64TOU64_PREF_NONE:
864                 return Format::PREF_NONE;
865             case Opcode::XOR2_64_PREF_V8:
866                 return Format::PREF_V8;
867             case Opcode::ECMA_LDTRUE_PREF_NONE:
868                 return Format::PREF_NONE;
869             case Opcode::FDIV2_PREF_V8:
870                 return Format::PREF_V8;
871             case Opcode::I32TOU1_PREF_NONE:
872                 return Format::PREF_NONE;
873             case Opcode::SHL2_PREF_V8:
874                 return Format::PREF_V8;
875             case Opcode::ECMA_LDFALSE_PREF_NONE:
876                 return Format::PREF_NONE;
877             case Opcode::FMOD2_PREF_V8:
878                 return Format::PREF_V8;
879             case Opcode::I64TOU1_PREF_NONE:
880                 return Format::PREF_NONE;
881             case Opcode::SHL2_64_PREF_V8:
882                 return Format::PREF_V8;
883             case Opcode::ECMA_THROWDYN_PREF_NONE:
884                 return Format::PREF_NONE;
885             case Opcode::I32TOF32_PREF_NONE:
886                 return Format::PREF_NONE;
887             case Opcode::U32TOU1_PREF_NONE:
888                 return Format::PREF_NONE;
889             case Opcode::SHR2_PREF_V8:
890                 return Format::PREF_V8;
891             case Opcode::ECMA_TYPEOFDYN_PREF_NONE:
892                 return Format::PREF_NONE;
893             case Opcode::U32TOF32_PREF_NONE:
894                 return Format::PREF_NONE;
895             case Opcode::U64TOU1_PREF_NONE:
896                 return Format::PREF_NONE;
897             case Opcode::SHR2_64_PREF_V8:
898                 return Format::PREF_V8;
899             case Opcode::ECMA_LDLEXENVDYN_PREF_NONE:
900                 return Format::PREF_NONE;
901             case Opcode::I64TOF32_PREF_NONE:
902                 return Format::PREF_NONE;
903             case Opcode::I32TOI64_PREF_NONE:
904                 return Format::PREF_NONE;
905             case Opcode::ASHR2_PREF_V8:
906                 return Format::PREF_V8;
907             case Opcode::ECMA_POPLEXENVDYN_PREF_NONE:
908                 return Format::PREF_NONE;
909             case Opcode::U64TOF32_PREF_NONE:
910                 return Format::PREF_NONE;
911             case Opcode::I32TOI16_PREF_NONE:
912                 return Format::PREF_NONE;
913             case Opcode::ASHR2_64_PREF_V8:
914                 return Format::PREF_V8;
915             case Opcode::ECMA_GETUNMAPPEDARGS_PREF_NONE:
916                 return Format::PREF_NONE;
917             case Opcode::F32TOF64_PREF_NONE:
918                 return Format::PREF_NONE;
919             case Opcode::I32TOU16_PREF_NONE:
920                 return Format::PREF_NONE;
921             case Opcode::XORI_PREF_IMM32:
922                 return Format::PREF_IMM32;
923             case Opcode::ECMA_GETPROPITERATOR_PREF_NONE:
924                 return Format::PREF_NONE;
925             case Opcode::F32TOI32_PREF_NONE:
926                 return Format::PREF_NONE;
927             case Opcode::I32TOI8_PREF_NONE:
928                 return Format::PREF_NONE;
929             case Opcode::AND_PREF_V4_V4:
930                 return Format::PREF_V4_V4;
931             case Opcode::ECMA_ASYNCFUNCTIONENTER_PREF_NONE:
932                 return Format::PREF_NONE;
933             case Opcode::F32TOI64_PREF_NONE:
934                 return Format::PREF_NONE;
935             case Opcode::I32TOU8_PREF_NONE:
936                 return Format::PREF_NONE;
937             case Opcode::OR_PREF_V4_V4:
938                 return Format::PREF_V4_V4;
939             case Opcode::ECMA_LDHOLE_PREF_NONE:
940                 return Format::PREF_NONE;
941             case Opcode::F32TOU32_PREF_NONE:
942                 return Format::PREF_NONE;
943             case Opcode::I64TOI32_PREF_NONE:
944                 return Format::PREF_NONE;
945             case Opcode::XOR_PREF_V4_V4:
946                 return Format::PREF_V4_V4;
947             case Opcode::ECMA_RETURNUNDEFINED_PREF_NONE:
948                 return Format::PREF_NONE;
949             case Opcode::F32TOU64_PREF_NONE:
950                 return Format::PREF_NONE;
951             case Opcode::U32TOI64_PREF_NONE:
952                 return Format::PREF_NONE;
953             case Opcode::SHL_PREF_V4_V4:
954                 return Format::PREF_V4_V4;
955             case Opcode::ECMA_CREATEEMPTYOBJECT_PREF_NONE:
956                 return Format::PREF_NONE;
957             case Opcode::F64TOF32_PREF_NONE:
958                 return Format::PREF_NONE;
959             case Opcode::U32TOI16_PREF_NONE:
960                 return Format::PREF_NONE;
961             case Opcode::SHR_PREF_V4_V4:
962                 return Format::PREF_V4_V4;
963             case Opcode::ECMA_CREATEEMPTYARRAY_PREF_NONE:
964                 return Format::PREF_NONE;
965             case Opcode::U32TOU16_PREF_NONE:
966                 return Format::PREF_NONE;
967             case Opcode::ASHR_PREF_V4_V4:
968                 return Format::PREF_V4_V4;
969             case Opcode::ECMA_GETITERATOR_PREF_NONE:
970                 return Format::PREF_NONE;
971             case Opcode::U32TOI8_PREF_NONE:
972                 return Format::PREF_NONE;
973             case Opcode::ECMA_THROWTHROWNOTEXISTS_PREF_NONE:
974                 return Format::PREF_NONE;
975             case Opcode::U32TOU8_PREF_NONE:
976                 return Format::PREF_NONE;
977             case Opcode::ECMA_THROWPATTERNNONCOERCIBLE_PREF_NONE:
978                 return Format::PREF_NONE;
979             case Opcode::U64TOI32_PREF_NONE:
980                 return Format::PREF_NONE;
981             case Opcode::ECMA_LDHOMEOBJECT_PREF_NONE:
982                 return Format::PREF_NONE;
983             case Opcode::U64TOU32_PREF_NONE:
984                 return Format::PREF_NONE;
985             case Opcode::ECMA_THROWDELETESUPERPROPERTY_PREF_NONE:
986                 return Format::PREF_NONE;
987             case Opcode::ECMA_DEBUGGER_PREF_NONE:
988                 return Format::PREF_NONE;
989             case Opcode::ECMA_ADD2DYN_PREF_V8:
990                 return Format::PREF_V8;
991             case Opcode::ECMA_SUB2DYN_PREF_V8:
992                 return Format::PREF_V8;
993             case Opcode::ECMA_MUL2DYN_PREF_V8:
994                 return Format::PREF_V8;
995             case Opcode::ECMA_DIV2DYN_PREF_V8:
996                 return Format::PREF_V8;
997             case Opcode::ECMA_MOD2DYN_PREF_V8:
998                 return Format::PREF_V8;
999             case Opcode::ECMA_EQDYN_PREF_V8:
1000                 return Format::PREF_V8;
1001             case Opcode::ECMA_NOTEQDYN_PREF_V8:
1002                 return Format::PREF_V8;
1003             case Opcode::ECMA_LESSDYN_PREF_V8:
1004                 return Format::PREF_V8;
1005             case Opcode::ECMA_LESSEQDYN_PREF_V8:
1006                 return Format::PREF_V8;
1007             case Opcode::ECMA_GREATERDYN_PREF_V8:
1008                 return Format::PREF_V8;
1009             case Opcode::ECMA_GREATEREQDYN_PREF_V8:
1010                 return Format::PREF_V8;
1011             case Opcode::ECMA_SHL2DYN_PREF_V8:
1012                 return Format::PREF_V8;
1013             case Opcode::ECMA_SHR2DYN_PREF_V8:
1014                 return Format::PREF_V8;
1015             case Opcode::ECMA_ASHR2DYN_PREF_V8:
1016                 return Format::PREF_V8;
1017             case Opcode::ECMA_AND2DYN_PREF_V8:
1018                 return Format::PREF_V8;
1019             case Opcode::ECMA_OR2DYN_PREF_V8:
1020                 return Format::PREF_V8;
1021             case Opcode::ECMA_XOR2DYN_PREF_V8:
1022                 return Format::PREF_V8;
1023             case Opcode::ECMA_TONUMBER_PREF_V8:
1024                 return Format::PREF_V8;
1025             case Opcode::ECMA_NEGDYN_PREF_V8:
1026                 return Format::PREF_V8;
1027             case Opcode::ECMA_NOTDYN_PREF_V8:
1028                 return Format::PREF_V8;
1029             case Opcode::ECMA_INCDYN_PREF_V8:
1030                 return Format::PREF_V8;
1031             case Opcode::ECMA_DECDYN_PREF_V8:
1032                 return Format::PREF_V8;
1033             case Opcode::ECMA_EXPDYN_PREF_V8:
1034                 return Format::PREF_V8;
1035             case Opcode::ECMA_ISINDYN_PREF_V8:
1036                 return Format::PREF_V8;
1037             case Opcode::ECMA_INSTANCEOFDYN_PREF_V8:
1038                 return Format::PREF_V8;
1039             case Opcode::ECMA_STRICTNOTEQDYN_PREF_V8:
1040                 return Format::PREF_V8;
1041             case Opcode::ECMA_STRICTEQDYN_PREF_V8:
1042                 return Format::PREF_V8;
1043             case Opcode::ECMA_RESUMEGENERATOR_PREF_V8:
1044                 return Format::PREF_V8;
1045             case Opcode::ECMA_GETRESUMEMODE_PREF_V8:
1046                 return Format::PREF_V8;
1047             case Opcode::ECMA_CREATEGENERATOROBJ_PREF_V8:
1048                 return Format::PREF_V8;
1049             case Opcode::ECMA_THROWCONSTASSIGNMENT_PREF_V8:
1050                 return Format::PREF_V8;
1051             case Opcode::ECMA_GETTEMPLATEOBJECT_PREF_V8:
1052                 return Format::PREF_V8;
1053             case Opcode::ECMA_GETNEXTPROPNAME_PREF_V8:
1054                 return Format::PREF_V8;
1055             case Opcode::ECMA_CALLARG0DYN_PREF_V8:
1056                 return Format::PREF_V8;
1057             case Opcode::ECMA_THROWIFNOTOBJECT_PREF_V8:
1058                 return Format::PREF_V8;
1059             case Opcode::ECMA_ITERNEXT_PREF_V8:
1060                 return Format::PREF_V8;
1061             case Opcode::ECMA_CLOSEITERATOR_PREF_V8:
1062                 return Format::PREF_V8;
1063             case Opcode::ECMA_COPYMODULE_PREF_V8:
1064                 return Format::PREF_V8;
1065             case Opcode::ECMA_SUPERCALLSPREAD_PREF_V8:
1066                 return Format::PREF_V8;
1067             case Opcode::ECMA_DELOBJPROP_PREF_V8_V8:
1068                 return Format::PREF_V8_V8;
1069             case Opcode::ECMA_NEWOBJSPREADDYN_PREF_V8_V8:
1070                 return Format::PREF_V8_V8;
1071             case Opcode::ECMA_CREATEITERRESULTOBJ_PREF_V8_V8:
1072                 return Format::PREF_V8_V8;
1073             case Opcode::ECMA_SUSPENDGENERATOR_PREF_V8_V8:
1074                 return Format::PREF_V8_V8;
1075             case Opcode::ECMA_ASYNCFUNCTIONAWAITUNCAUGHT_PREF_V8_V8:
1076                 return Format::PREF_V8_V8;
1077             case Opcode::ECMA_THROWUNDEFINEDIFHOLE_PREF_V8_V8:
1078                 return Format::PREF_V8_V8;
1079             case Opcode::ECMA_CALLARG1DYN_PREF_V8_V8:
1080                 return Format::PREF_V8_V8;
1081             case Opcode::ECMA_COPYDATAPROPERTIES_PREF_V8_V8:
1082                 return Format::PREF_V8_V8;
1083             case Opcode::ECMA_STARRAYSPREAD_PREF_V8_V8:
1084                 return Format::PREF_V8_V8;
1085             case Opcode::ECMA_GETITERATORNEXT_PREF_V8_V8:
1086                 return Format::PREF_V8_V8;
1087             case Opcode::ECMA_SETOBJECTWITHPROTO_PREF_V8_V8:
1088                 return Format::PREF_V8_V8;
1089             case Opcode::ECMA_LDOBJBYVALUE_PREF_V8_V8:
1090                 return Format::PREF_V8_V8;
1091             case Opcode::ECMA_STOBJBYVALUE_PREF_V8_V8:
1092                 return Format::PREF_V8_V8;
1093             case Opcode::ECMA_STOWNBYVALUE_PREF_V8_V8:
1094                 return Format::PREF_V8_V8;
1095             case Opcode::ECMA_LDSUPERBYVALUE_PREF_V8_V8:
1096                 return Format::PREF_V8_V8;
1097             case Opcode::ECMA_STSUPERBYVALUE_PREF_V8_V8:
1098                 return Format::PREF_V8_V8;
1099             case Opcode::ECMA_LDOBJBYINDEX_PREF_V8_IMM32:
1100                 return Format::PREF_V8_IMM32;
1101             case Opcode::ECMA_STOBJBYINDEX_PREF_V8_IMM32:
1102                 return Format::PREF_V8_IMM32;
1103             case Opcode::ECMA_STOWNBYINDEX_PREF_V8_IMM32:
1104                 return Format::PREF_V8_IMM32;
1105             case Opcode::ECMA_CALLSPREADDYN_PREF_V8_V8_V8:
1106                 return Format::PREF_V8_V8_V8;
1107             case Opcode::ECMA_ASYNCFUNCTIONRESOLVE_PREF_V8_V8_V8:
1108                 return Format::PREF_V8_V8_V8;
1109             case Opcode::ECMA_ASYNCFUNCTIONREJECT_PREF_V8_V8_V8:
1110                 return Format::PREF_V8_V8_V8;
1111             case Opcode::ECMA_CALLARGS2DYN_PREF_V8_V8_V8:
1112                 return Format::PREF_V8_V8_V8;
1113             case Opcode::ECMA_CALLARGS3DYN_PREF_V8_V8_V8_V8:
1114                 return Format::PREF_V8_V8_V8_V8;
1115             case Opcode::ECMA_DEFINEGETTERSETTERBYVALUE_PREF_V8_V8_V8_V8:
1116                 return Format::PREF_V8_V8_V8_V8;
1117             case Opcode::ECMA_NEWOBJDYNRANGE_PREF_IMM16_V8:
1118                 return Format::PREF_IMM16_V8;
1119             case Opcode::ECMA_CALLRANGEDYN_PREF_IMM16_V8:
1120                 return Format::PREF_IMM16_V8;
1121             case Opcode::ECMA_CALLTHISRANGEDYN_PREF_IMM16_V8:
1122                 return Format::PREF_IMM16_V8;
1123             case Opcode::ECMA_SUPERCALL_PREF_IMM16_V8:
1124                 return Format::PREF_IMM16_V8;
1125             case Opcode::ECMA_CREATEOBJECTWITHEXCLUDEDKEYS_PREF_IMM16_V8_V8:
1126                 return Format::PREF_IMM16_V8_V8;
1127             case Opcode::ECMA_DEFINEFUNCDYN_PREF_ID16_IMM16_V8:
1128                 return Format::PREF_ID16_IMM16_V8;
1129             case Opcode::ECMA_DEFINENCFUNCDYN_PREF_ID16_IMM16_V8:
1130                 return Format::PREF_ID16_IMM16_V8;
1131             case Opcode::ECMA_DEFINEGENERATORFUNC_PREF_ID16_IMM16_V8:
1132                 return Format::PREF_ID16_IMM16_V8;
1133             case Opcode::ECMA_DEFINEASYNCFUNC_PREF_ID16_IMM16_V8:
1134                 return Format::PREF_ID16_IMM16_V8;
1135             case Opcode::ECMA_DEFINEMETHOD_PREF_ID16_IMM16_V8:
1136                 return Format::PREF_ID16_IMM16_V8;
1137             case Opcode::ECMA_NEWLEXENVDYN_PREF_IMM16:
1138                 return Format::PREF_IMM16;
1139             case Opcode::ECMA_COPYRESTARGS_PREF_IMM16:
1140                 return Format::PREF_IMM16;
1141             case Opcode::ECMA_CREATEARRAYWITHBUFFER_PREF_IMM16:
1142                 return Format::PREF_IMM16;
1143             case Opcode::ECMA_CREATEOBJECTHAVINGMETHOD_PREF_IMM16:
1144                 return Format::PREF_IMM16;
1145             case Opcode::ECMA_THROWIFSUPERNOTCORRECTCALL_PREF_IMM16:
1146                 return Format::PREF_IMM16;
1147             case Opcode::ECMA_CREATEOBJECTWITHBUFFER_PREF_IMM16:
1148                 return Format::PREF_IMM16;
1149             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM4_IMM4:
1150                 return Format::PREF_IMM4_IMM4;
1151             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM8_IMM8:
1152                 return Format::PREF_IMM8_IMM8;
1153             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM16_IMM16:
1154                 return Format::PREF_IMM16_IMM16;
1155             case Opcode::ECMA_STLEXVARDYN_PREF_IMM4_IMM4_V8:
1156                 return Format::PREF_IMM4_IMM4_V8;
1157             case Opcode::ECMA_STLEXVARDYN_PREF_IMM8_IMM8_V8:
1158                 return Format::PREF_IMM8_IMM8_V8;
1159             case Opcode::ECMA_STLEXVARDYN_PREF_IMM16_IMM16_V8:
1160                 return Format::PREF_IMM16_IMM16_V8;
1161             case Opcode::ECMA_DEFINECLASSWITHBUFFER_PREF_ID16_IMM16_IMM16_V8_V8:
1162                 return Format::PREF_ID16_IMM16_IMM16_V8_V8;
1163             case Opcode::ECMA_GETMODULENAMESPACE_PREF_ID32:
1164                 return Format::PREF_ID32;
1165             case Opcode::ECMA_STMODULEVAR_PREF_ID32:
1166                 return Format::PREF_ID32;
1167             case Opcode::ECMA_TRYLDGLOBALBYNAME_PREF_ID32:
1168                 return Format::PREF_ID32;
1169             case Opcode::ECMA_TRYSTGLOBALBYNAME_PREF_ID32:
1170                 return Format::PREF_ID32;
1171             case Opcode::ECMA_LDGLOBALVAR_PREF_ID32:
1172                 return Format::PREF_ID32;
1173             case Opcode::ECMA_STGLOBALVAR_PREF_ID32:
1174                 return Format::PREF_ID32;
1175             case Opcode::ECMA_LDOBJBYNAME_PREF_ID32_V8:
1176                 return Format::PREF_ID32_V8;
1177             case Opcode::ECMA_STOBJBYNAME_PREF_ID32_V8:
1178                 return Format::PREF_ID32_V8;
1179             case Opcode::ECMA_STOWNBYNAME_PREF_ID32_V8:
1180                 return Format::PREF_ID32_V8;
1181             case Opcode::ECMA_LDSUPERBYNAME_PREF_ID32_V8:
1182                 return Format::PREF_ID32_V8;
1183             case Opcode::ECMA_STSUPERBYNAME_PREF_ID32_V8:
1184                 return Format::PREF_ID32_V8;
1185             case Opcode::ECMA_LDMODULEVAR_PREF_ID32_IMM8:
1186                 return Format::PREF_ID32_IMM8;
1187             case Opcode::ECMA_CREATEREGEXPWITHLITERAL_PREF_ID32_IMM8:
1188                 return Format::PREF_ID32_IMM8;
1189             case Opcode::ECMA_ISTRUE_PREF_NONE:
1190                 return Format::PREF_NONE;
1191             case Opcode::ECMA_ISFALSE_PREF_NONE:
1192                 return Format::PREF_NONE;
1193             case Opcode::ECMA_STCONSTTOGLOBALRECORD_PREF_ID32:
1194                 return Format::PREF_ID32;
1195             case Opcode::ECMA_STLETTOGLOBALRECORD_PREF_ID32:
1196                 return Format::PREF_ID32;
1197             case Opcode::ECMA_STCLASSTOGLOBALRECORD_PREF_ID32:
1198                 return Format::PREF_ID32;
1199             case Opcode::ECMA_STOWNBYVALUEWITHNAMESET_PREF_V8_V8:
1200                 return Format::PREF_V8_V8;
1201             case Opcode::ECMA_STOWNBYNAMEWITHNAMESET_PREF_ID32_V8:
1202                 return Format::PREF_ID32_V8;
1203             case Opcode::ECMA_LDFUNCTION_PREF_NONE:
1204                 return Format::PREF_NONE;
1205             case Opcode::ECMA_NEWLEXENVWITHNAMEDYN_PREF_IMM16_IMM16:
1206                 return Format::PREF_IMM16_IMM16;
1207             case Opcode::ECMA_LDBIGINT_PREF_ID32:
1208                 return Format::PREF_ID32;
1209             case Opcode::ECMA_TONUMERIC_PREF_V8:
1210                 return Format::PREF_V8;
1211             case Opcode::ECMA_CREATEASYNCGENERATOROBJ_PREF_V8:
1212                 return Format::PREF_V8;
1213             case Opcode::ECMA_ASYNCGENERATORRESOLVE_PREF_V8_V8_V8:
1214                 return Format::PREF_V8_V8_V8;
1215             case Opcode::ECMA_DEFINEASYNCGENERATORFUNC_PREF_ID16_IMM16_V8:
1216                 return Format::PREF_ID16_IMM16_V8;
1217             case Opcode::ECMA_DYNAMICIMPORT_PREF_V8:
1218                 return Format::PREF_V8;
1219             case Opcode::ECMA_LDPATCHVAR_PREF_IMM16:
1220                 return Format::PREF_IMM16;
1221             case Opcode::ECMA_STPATCHVAR_PREF_IMM16:
1222                 return Format::PREF_IMM16;
1223             case Opcode::ECMA_ASYNCGENERATORREJECT_PREF_V8_V8:
1224                 return Format::PREF_V8_V8;
1225             default:
1226                 break;
1227         }
1228         LOG_ECMA(FATAL) << "this branch is unreachable";
1229         UNREACHABLE();
1230     }
1231 
HasId(Format format,size_t idx)1232     static constexpr bool HasId(Format format, size_t idx) {
1233         switch (format) {
1234             case Format::ID16:
1235                 return idx < 1;
1236             case Format::ID32:
1237                 return idx < 1;
1238             case Format::PREF_ID16_IMM16_IMM16_V8_V8:
1239                 return idx < 1;
1240             case Format::PREF_ID16_IMM16_V8:
1241                 return idx < 1;
1242             case Format::PREF_ID32:
1243                 return idx < 1;
1244             case Format::PREF_ID32_IMM8:
1245                 return idx < 1;
1246             case Format::PREF_ID32_V8:
1247                 return idx < 1;
1248             case Format::V4_IMM4_ID16:
1249                 return idx < 1;
1250             case Format::V4_V4_ID16:
1251                 return idx < 1;
1252             case Format::V4_V4_V4_IMM4_ID16:
1253                 return idx < 1;
1254             case Format::V4_V4_V4_V4_ID16:
1255                 return idx < 1;
1256             case Format::V8_ID16:
1257                 return idx < 1;
1258             case Format::V8_ID32:
1259                 return idx < 1;
1260             default: {
1261                 return false;
1262             }
1263         }
1264     }
1265 
HasFlag(Flags flag)1266     inline bool HasFlag(Flags flag) const
1267     {
1268         switch (GetOpcode()) {
1269             case Opcode::NOP:
1270                 return ((Flags::ACC_NONE) & flag) == flag;
1271             case Opcode::MOV_V4_V4:
1272                 return ((Flags::ACC_NONE) & flag) == flag;
1273             case Opcode::MOV_V8_V8:
1274                 return ((Flags::ACC_NONE) & flag) == flag;
1275             case Opcode::MOV_V16_V16:
1276                 return ((Flags::ACC_NONE) & flag) == flag;
1277             case Opcode::MOV_64_V4_V4:
1278                 return ((Flags::ACC_NONE) & flag) == flag;
1279             case Opcode::MOV_64_V16_V16:
1280                 return ((Flags::ACC_NONE) & flag) == flag;
1281             case Opcode::MOV_OBJ_V4_V4:
1282                 return ((Flags::ACC_NONE) & flag) == flag;
1283             case Opcode::MOV_OBJ_V8_V8:
1284                 return ((Flags::ACC_NONE) & flag) == flag;
1285             case Opcode::MOV_OBJ_V16_V16:
1286                 return ((Flags::ACC_NONE) & flag) == flag;
1287             case Opcode::MOVI_V4_IMM4:
1288                 return ((Flags::ACC_NONE) & flag) == flag;
1289             case Opcode::MOVI_V8_IMM8:
1290                 return ((Flags::ACC_NONE) & flag) == flag;
1291             case Opcode::MOVI_V8_IMM16:
1292                 return ((Flags::ACC_NONE) & flag) == flag;
1293             case Opcode::MOVI_V8_IMM32:
1294                 return ((Flags::ACC_NONE) & flag) == flag;
1295             case Opcode::MOVI_64_V8_IMM64:
1296                 return ((Flags::ACC_NONE) & flag) == flag;
1297             case Opcode::FMOVI_64_V8_IMM64:
1298                 return ((Flags::FLOAT | Flags::ACC_NONE) & flag) == flag;
1299             case Opcode::MOV_NULL_V8:
1300                 return ((Flags::ACC_NONE) & flag) == flag;
1301             case Opcode::LDA_V8:
1302                 return ((Flags::ACC_WRITE) & flag) == flag;
1303             case Opcode::LDA_64_V8:
1304                 return ((Flags::ACC_WRITE) & flag) == flag;
1305             case Opcode::LDA_OBJ_V8:
1306                 return ((Flags::ACC_WRITE) & flag) == flag;
1307             case Opcode::LDAI_IMM8:
1308                 return ((Flags::ACC_WRITE) & flag) == flag;
1309             case Opcode::LDAI_IMM16:
1310                 return ((Flags::ACC_WRITE) & flag) == flag;
1311             case Opcode::LDAI_IMM32:
1312                 return ((Flags::ACC_WRITE) & flag) == flag;
1313             case Opcode::LDAI_64_IMM64:
1314                 return ((Flags::ACC_WRITE) & flag) == flag;
1315             case Opcode::FLDAI_64_IMM64:
1316                 return ((Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1317             case Opcode::LDA_STR_ID32:
1318                 return ((Flags::STRING_ID | Flags::LANGUAGE_TYPE | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE) & flag) ==
1319                     flag;
1320             case Opcode::LDA_CONST_V8_ID32:
1321                 return ((Flags::LITERALARRAY_ID | Flags::ACC_NONE) & flag) == flag;
1322             case Opcode::LDA_TYPE_ID16:
1323                 return ((Flags::TYPE_ID | Flags::LANGUAGE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1324             case Opcode::LDA_NULL:
1325                 return ((Flags::ACC_WRITE) & flag) == flag;
1326             case Opcode::STA_V8:
1327                 return ((Flags::ACC_READ) & flag) == flag;
1328             case Opcode::STA_64_V8:
1329                 return ((Flags::ACC_READ) & flag) == flag;
1330             case Opcode::STA_OBJ_V8:
1331                 return ((Flags::ACC_READ) & flag) == flag;
1332             case Opcode::CMP_64_V8:
1333                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1334             case Opcode::FCMPL_64_V8:
1335                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1336             case Opcode::FCMPG_64_V8:
1337                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1338             case Opcode::JMP_IMM8:
1339                 return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1340             case Opcode::JMP_IMM16:
1341                 return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1342             case Opcode::JMP_IMM32:
1343                 return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1344             case Opcode::JEQ_OBJ_V8_IMM8:
1345                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1346             case Opcode::JEQ_OBJ_V8_IMM16:
1347                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1348             case Opcode::JNE_OBJ_V8_IMM8:
1349                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1350             case Opcode::JNE_OBJ_V8_IMM16:
1351                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1352             case Opcode::JEQZ_OBJ_IMM8:
1353                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1354             case Opcode::JEQZ_OBJ_IMM16:
1355                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1356             case Opcode::JNEZ_OBJ_IMM8:
1357                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1358             case Opcode::JNEZ_OBJ_IMM16:
1359                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1360             case Opcode::JEQZ_IMM8:
1361                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1362             case Opcode::JEQZ_IMM16:
1363                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1364             case Opcode::JNEZ_IMM8:
1365                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1366             case Opcode::JNEZ_IMM16:
1367                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1368             case Opcode::JLTZ_IMM8:
1369                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1370             case Opcode::JLTZ_IMM16:
1371                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1372             case Opcode::JGTZ_IMM8:
1373                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1374             case Opcode::JGTZ_IMM16:
1375                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1376             case Opcode::JLEZ_IMM8:
1377                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1378             case Opcode::JLEZ_IMM16:
1379                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1380             case Opcode::JGEZ_IMM8:
1381                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1382             case Opcode::JGEZ_IMM16:
1383                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1384             case Opcode::JEQ_V8_IMM8:
1385                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1386             case Opcode::JEQ_V8_IMM16:
1387                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1388             case Opcode::JNE_V8_IMM8:
1389                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1390             case Opcode::JNE_V8_IMM16:
1391                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1392             case Opcode::JLT_V8_IMM8:
1393                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1394             case Opcode::JLT_V8_IMM16:
1395                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1396             case Opcode::JGT_V8_IMM8:
1397                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1398             case Opcode::JGT_V8_IMM16:
1399                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1400             case Opcode::JLE_V8_IMM8:
1401                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1402             case Opcode::JLE_V8_IMM16:
1403                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1404             case Opcode::JGE_V8_IMM8:
1405                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1406             case Opcode::JGE_V8_IMM16:
1407                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1408             case Opcode::FNEG_64:
1409                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1410             case Opcode::NEG:
1411                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1412             case Opcode::NEG_64:
1413                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1414             case Opcode::ADD2_V8:
1415                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1416             case Opcode::ADD2_64_V8:
1417                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1418             case Opcode::SUB2_V8:
1419                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1420             case Opcode::SUB2_64_V8:
1421                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1422             case Opcode::MUL2_V8:
1423                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1424             case Opcode::MUL2_64_V8:
1425                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1426             case Opcode::FADD2_64_V8:
1427                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1428             case Opcode::FSUB2_64_V8:
1429                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1430             case Opcode::FMUL2_64_V8:
1431                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1432             case Opcode::FDIV2_64_V8:
1433                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1434             case Opcode::FMOD2_64_V8:
1435                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1436             case Opcode::DIV2_V8:
1437                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1438             case Opcode::DIV2_64_V8:
1439                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1440             case Opcode::MOD2_V8:
1441                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1442             case Opcode::MOD2_64_V8:
1443                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1444             case Opcode::ADDI_IMM8:
1445                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1446             case Opcode::SUBI_IMM8:
1447                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1448             case Opcode::MULI_IMM8:
1449                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1450             case Opcode::ANDI_IMM32:
1451                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1452             case Opcode::ORI_IMM32:
1453                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1454             case Opcode::SHLI_IMM8:
1455                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1456             case Opcode::SHRI_IMM8:
1457                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1458             case Opcode::ASHRI_IMM8:
1459                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1460             case Opcode::DIVI_IMM8:
1461                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1462             case Opcode::MODI_IMM8:
1463                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1464             case Opcode::ADD_V4_V4:
1465                 return ((Flags::ACC_WRITE) & flag) == flag;
1466             case Opcode::SUB_V4_V4:
1467                 return ((Flags::ACC_WRITE) & flag) == flag;
1468             case Opcode::MUL_V4_V4:
1469                 return ((Flags::ACC_WRITE) & flag) == flag;
1470             case Opcode::DIV_V4_V4:
1471                 return ((Flags::ACC_WRITE) & flag) == flag;
1472             case Opcode::MOD_V4_V4:
1473                 return ((Flags::ACC_WRITE) & flag) == flag;
1474             case Opcode::INCI_V4_IMM4:
1475                 return ((Flags::ACC_NONE) & flag) == flag;
1476             case Opcode::LDARR_8_V8:
1477                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1478             case Opcode::LDARRU_8_V8:
1479                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1480             case Opcode::LDARR_16_V8:
1481                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1482             case Opcode::LDARRU_16_V8:
1483                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1484             case Opcode::LDARR_V8:
1485                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1486             case Opcode::LDARR_64_V8:
1487                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1488             case Opcode::FLDARR_32_V8:
1489                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1490             case Opcode::FLDARR_64_V8:
1491                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1492             case Opcode::LDARR_OBJ_V8:
1493                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1494             case Opcode::STARR_8_V4_V4:
1495                 return ((Flags::ACC_READ) & flag) == flag;
1496             case Opcode::STARR_16_V4_V4:
1497                 return ((Flags::ACC_READ) & flag) == flag;
1498             case Opcode::STARR_V4_V4:
1499                 return ((Flags::ACC_READ) & flag) == flag;
1500             case Opcode::STARR_64_V4_V4:
1501                 return ((Flags::ACC_READ) & flag) == flag;
1502             case Opcode::FSTARR_32_V4_V4:
1503                 return ((Flags::FLOAT | Flags::ACC_READ) & flag) == flag;
1504             case Opcode::FSTARR_64_V4_V4:
1505                 return ((Flags::FLOAT | Flags::ACC_READ) & flag) == flag;
1506             case Opcode::STARR_OBJ_V4_V4:
1507                 return ((Flags::ACC_READ) & flag) == flag;
1508             case Opcode::LENARR_V8:
1509                 return ((Flags::ACC_WRITE) & flag) == flag;
1510             case Opcode::NEWARR_V4_V4_ID16:
1511                 return ((Flags::TYPE_ID | Flags::LANGUAGE_TYPE | Flags::INITIALIZE_TYPE | Flags::ACC_NONE) & flag) ==
1512                     flag;
1513             case Opcode::NEWOBJ_V8_ID16:
1514                 return ((Flags::TYPE_ID | Flags::INITIALIZE_TYPE | Flags::ACC_NONE) & flag) == flag;
1515             case Opcode::INITOBJ_SHORT_V4_V4_ID16:
1516                 return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1517             case Opcode::INITOBJ_V4_V4_V4_V4_ID16:
1518                 return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1519             case Opcode::INITOBJ_RANGE_V8_ID16:
1520                 return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1521             case Opcode::LDOBJ_V8_ID16:
1522                 return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1523             case Opcode::LDOBJ_64_V8_ID16:
1524                 return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1525             case Opcode::LDOBJ_OBJ_V8_ID16:
1526                 return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1527             case Opcode::STOBJ_V8_ID16:
1528                 return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1529             case Opcode::STOBJ_64_V8_ID16:
1530                 return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1531             case Opcode::STOBJ_OBJ_V8_ID16:
1532                 return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1533             case Opcode::LDOBJ_V_V4_V4_ID16:
1534                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1535             case Opcode::LDOBJ_V_64_V4_V4_ID16:
1536                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1537             case Opcode::LDOBJ_V_OBJ_V4_V4_ID16:
1538                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1539             case Opcode::STOBJ_V_V4_V4_ID16:
1540                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1541             case Opcode::STOBJ_V_64_V4_V4_ID16:
1542                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1543             case Opcode::STOBJ_V_OBJ_V4_V4_ID16:
1544                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1545             case Opcode::LDSTATIC_ID16:
1546                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1547             case Opcode::LDSTATIC_64_ID16:
1548                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1549             case Opcode::LDSTATIC_OBJ_ID16:
1550                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1551             case Opcode::STSTATIC_ID16:
1552                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1553             case Opcode::STSTATIC_64_ID16:
1554                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1555             case Opcode::STSTATIC_OBJ_ID16:
1556                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1557             case Opcode::RETURN:
1558                 return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1559             case Opcode::RETURN_64:
1560                 return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1561             case Opcode::RETURN_OBJ:
1562                 return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1563             case Opcode::RETURN_VOID:
1564                 return ((Flags::RETURN | Flags::ACC_NONE) & flag) == flag;
1565             case Opcode::THROW_V8:
1566                 return ((Flags::ACC_NONE) & flag) == flag;
1567             case Opcode::CHECKCAST_ID16:
1568                 return ((Flags::TYPE_ID | Flags::ACC_READ) & flag) == flag;
1569             case Opcode::ISINSTANCE_ID16:
1570                 return ((Flags::TYPE_ID | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1571             case Opcode::CALL_SHORT_V4_V4_ID16:
1572                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1573                     Flags::ACC_WRITE) & flag) == flag;
1574             case Opcode::CALL_V4_V4_V4_V4_ID16:
1575                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1576                     Flags::ACC_WRITE) & flag) == flag;
1577             case Opcode::CALL_RANGE_V8_ID16:
1578                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1579                     Flags::ACC_WRITE) & flag) == flag;
1580             case Opcode::CALL_ACC_SHORT_V4_IMM4_ID16:
1581                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE | Flags::ACC_READ) &
1582                     flag) == flag;
1583             case Opcode::CALL_ACC_V4_V4_V4_IMM4_ID16:
1584                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE | Flags::ACC_READ) &
1585                     flag) == flag;
1586             case Opcode::CALL_VIRT_SHORT_V4_V4_ID16:
1587                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1588             case Opcode::CALL_VIRT_V4_V4_V4_V4_ID16:
1589                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1590             case Opcode::CALL_VIRT_RANGE_V8_ID16:
1591                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1592             case Opcode::CALL_VIRT_ACC_SHORT_V4_IMM4_ID16:
1593                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE | Flags::ACC_READ) &
1594                     flag) == flag;
1595             case Opcode::CALL_VIRT_ACC_V4_V4_V4_IMM4_ID16:
1596                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE | Flags::ACC_READ) &
1597                     flag) == flag;
1598             case Opcode::MOV_DYN_V8_V8:
1599                 return ((Flags::DYNAMIC | Flags::ACC_NONE) & flag) == flag;
1600             case Opcode::MOV_DYN_V16_V16:
1601                 return ((Flags::DYNAMIC | Flags::ACC_NONE) & flag) == flag;
1602             case Opcode::LDA_DYN_V8:
1603                 return ((Flags::DYNAMIC | Flags::ACC_WRITE) & flag) == flag;
1604             case Opcode::STA_DYN_V8:
1605                 return ((Flags::DYNAMIC | Flags::ACC_READ) & flag) == flag;
1606             case Opcode::LDAI_DYN_IMM32:
1607                 return ((Flags::DYNAMIC | Flags::ACC_WRITE) & flag) == flag;
1608             case Opcode::FLDAI_DYN_IMM64:
1609                 return ((Flags::DYNAMIC | Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1610             case Opcode::RETURN_DYN:
1611                 return ((Flags::DYNAMIC | Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1612             case Opcode::CALLI_DYN_SHORT_IMM4_V4_V4_V4:
1613                 return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1614             case Opcode::CALLI_DYN_IMM4_V4_V4_V4_V4_V4:
1615                 return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1616             case Opcode::CALLI_DYN_RANGE_IMM16_V16:
1617                 return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1618             case Opcode::FMOVI_PREF_V8_IMM32:
1619                 return ((Flags::FLOAT | Flags::ACC_NONE) & flag) == flag;
1620             case Opcode::I32TOF64_PREF_NONE:
1621                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1622             case Opcode::UCMP_PREF_V8:
1623                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1624             case Opcode::NOT_PREF_NONE:
1625                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1626             case Opcode::ECMA_LDNAN_PREF_NONE:
1627                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1628             case Opcode::FLDAI_PREF_IMM32:
1629                 return ((Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1630             case Opcode::U32TOF64_PREF_NONE:
1631                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1632             case Opcode::UCMP_64_PREF_V8:
1633                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1634             case Opcode::NOT_64_PREF_NONE:
1635                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1636             case Opcode::ECMA_LDINFINITY_PREF_NONE:
1637                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1638             case Opcode::FCMPL_PREF_V8:
1639                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1640             case Opcode::I64TOF64_PREF_NONE:
1641                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1642             case Opcode::DIVU2_PREF_V8:
1643                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1644             case Opcode::AND2_PREF_V8:
1645                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1646             case Opcode::ECMA_LDGLOBALTHIS_PREF_NONE:
1647                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1648             case Opcode::FCMPG_PREF_V8:
1649                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1650             case Opcode::U64TOF64_PREF_NONE:
1651                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1652             case Opcode::DIVU2_64_PREF_V8:
1653                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1654             case Opcode::AND2_64_PREF_V8:
1655                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1656             case Opcode::ECMA_LDUNDEFINED_PREF_NONE:
1657                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1658             case Opcode::FNEG_PREF_NONE:
1659                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1660             case Opcode::F64TOI32_PREF_NONE:
1661                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1662             case Opcode::MODU2_PREF_V8:
1663                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1664             case Opcode::OR2_PREF_V8:
1665                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1666             case Opcode::ECMA_LDNULL_PREF_NONE:
1667                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1668             case Opcode::FADD2_PREF_V8:
1669                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1670             case Opcode::F64TOI64_PREF_NONE:
1671                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1672             case Opcode::MODU2_64_PREF_V8:
1673                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1674             case Opcode::OR2_64_PREF_V8:
1675                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1676             case Opcode::ECMA_LDSYMBOL_PREF_NONE:
1677                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1678             case Opcode::FSUB2_PREF_V8:
1679                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1680             case Opcode::F64TOU32_PREF_NONE:
1681                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1682             case Opcode::XOR2_PREF_V8:
1683                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1684             case Opcode::ECMA_LDGLOBAL_PREF_NONE:
1685                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1686             case Opcode::FMUL2_PREF_V8:
1687                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1688             case Opcode::F64TOU64_PREF_NONE:
1689                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1690             case Opcode::XOR2_64_PREF_V8:
1691                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1692             case Opcode::ECMA_LDTRUE_PREF_NONE:
1693                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1694             case Opcode::FDIV2_PREF_V8:
1695                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1696             case Opcode::I32TOU1_PREF_NONE:
1697                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1698             case Opcode::SHL2_PREF_V8:
1699                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1700             case Opcode::ECMA_LDFALSE_PREF_NONE:
1701                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1702             case Opcode::FMOD2_PREF_V8:
1703                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1704             case Opcode::I64TOU1_PREF_NONE:
1705                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1706             case Opcode::SHL2_64_PREF_V8:
1707                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1708             case Opcode::ECMA_THROWDYN_PREF_NONE:
1709                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1710             case Opcode::I32TOF32_PREF_NONE:
1711                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1712             case Opcode::U32TOU1_PREF_NONE:
1713                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1714             case Opcode::SHR2_PREF_V8:
1715                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1716             case Opcode::ECMA_TYPEOFDYN_PREF_NONE:
1717                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1718             case Opcode::U32TOF32_PREF_NONE:
1719                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1720             case Opcode::U64TOU1_PREF_NONE:
1721                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1722             case Opcode::SHR2_64_PREF_V8:
1723                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1724             case Opcode::ECMA_LDLEXENVDYN_PREF_NONE:
1725                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1726             case Opcode::I64TOF32_PREF_NONE:
1727                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1728             case Opcode::I32TOI64_PREF_NONE:
1729                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1730             case Opcode::ASHR2_PREF_V8:
1731                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1732             case Opcode::ECMA_POPLEXENVDYN_PREF_NONE:
1733                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1734             case Opcode::U64TOF32_PREF_NONE:
1735                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1736             case Opcode::I32TOI16_PREF_NONE:
1737                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1738             case Opcode::ASHR2_64_PREF_V8:
1739                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1740             case Opcode::ECMA_GETUNMAPPEDARGS_PREF_NONE:
1741                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1742             case Opcode::F32TOF64_PREF_NONE:
1743                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1744             case Opcode::I32TOU16_PREF_NONE:
1745                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1746             case Opcode::XORI_PREF_IMM32:
1747                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1748             case Opcode::ECMA_GETPROPITERATOR_PREF_NONE:
1749                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1750             case Opcode::F32TOI32_PREF_NONE:
1751                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1752             case Opcode::I32TOI8_PREF_NONE:
1753                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1754             case Opcode::AND_PREF_V4_V4:
1755                 return ((Flags::ACC_WRITE) & flag) == flag;
1756             case Opcode::ECMA_ASYNCFUNCTIONENTER_PREF_NONE:
1757                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1758             case Opcode::F32TOI64_PREF_NONE:
1759                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1760             case Opcode::I32TOU8_PREF_NONE:
1761                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1762             case Opcode::OR_PREF_V4_V4:
1763                 return ((Flags::ACC_WRITE) & flag) == flag;
1764             case Opcode::ECMA_LDHOLE_PREF_NONE:
1765                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1766             case Opcode::F32TOU32_PREF_NONE:
1767                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1768             case Opcode::I64TOI32_PREF_NONE:
1769                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1770             case Opcode::XOR_PREF_V4_V4:
1771                 return ((Flags::ACC_WRITE) & flag) == flag;
1772             case Opcode::ECMA_RETURNUNDEFINED_PREF_NONE:
1773                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::RETURN | Flags::ACC_NONE) & flag) == flag;
1774             case Opcode::F32TOU64_PREF_NONE:
1775                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1776             case Opcode::U32TOI64_PREF_NONE:
1777                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1778             case Opcode::SHL_PREF_V4_V4:
1779                 return ((Flags::ACC_WRITE) & flag) == flag;
1780             case Opcode::ECMA_CREATEEMPTYOBJECT_PREF_NONE:
1781                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1782             case Opcode::F64TOF32_PREF_NONE:
1783                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1784             case Opcode::U32TOI16_PREF_NONE:
1785                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1786             case Opcode::SHR_PREF_V4_V4:
1787                 return ((Flags::ACC_WRITE) & flag) == flag;
1788             case Opcode::ECMA_CREATEEMPTYARRAY_PREF_NONE:
1789                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1790             case Opcode::U32TOU16_PREF_NONE:
1791                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1792             case Opcode::ASHR_PREF_V4_V4:
1793                 return ((Flags::ACC_WRITE) & flag) == flag;
1794             case Opcode::ECMA_GETITERATOR_PREF_NONE:
1795                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1796             case Opcode::U32TOI8_PREF_NONE:
1797                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1798             case Opcode::ECMA_THROWTHROWNOTEXISTS_PREF_NONE:
1799                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1800             case Opcode::U32TOU8_PREF_NONE:
1801                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1802             case Opcode::ECMA_THROWPATTERNNONCOERCIBLE_PREF_NONE:
1803                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1804             case Opcode::U64TOI32_PREF_NONE:
1805                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1806             case Opcode::ECMA_LDHOMEOBJECT_PREF_NONE:
1807                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1808             case Opcode::U64TOU32_PREF_NONE:
1809                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1810             case Opcode::ECMA_THROWDELETESUPERPROPERTY_PREF_NONE:
1811                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1812             case Opcode::ECMA_DEBUGGER_PREF_NONE:
1813                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1814             case Opcode::ECMA_ADD2DYN_PREF_V8:
1815                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1816             case Opcode::ECMA_SUB2DYN_PREF_V8:
1817                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1818             case Opcode::ECMA_MUL2DYN_PREF_V8:
1819                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1820             case Opcode::ECMA_DIV2DYN_PREF_V8:
1821                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1822             case Opcode::ECMA_MOD2DYN_PREF_V8:
1823                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1824             case Opcode::ECMA_EQDYN_PREF_V8:
1825                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1826             case Opcode::ECMA_NOTEQDYN_PREF_V8:
1827                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1828             case Opcode::ECMA_LESSDYN_PREF_V8:
1829                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1830             case Opcode::ECMA_LESSEQDYN_PREF_V8:
1831                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1832             case Opcode::ECMA_GREATERDYN_PREF_V8:
1833                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1834             case Opcode::ECMA_GREATEREQDYN_PREF_V8:
1835                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1836             case Opcode::ECMA_SHL2DYN_PREF_V8:
1837                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1838             case Opcode::ECMA_SHR2DYN_PREF_V8:
1839                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1840             case Opcode::ECMA_ASHR2DYN_PREF_V8:
1841                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1842             case Opcode::ECMA_AND2DYN_PREF_V8:
1843                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1844             case Opcode::ECMA_OR2DYN_PREF_V8:
1845                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1846             case Opcode::ECMA_XOR2DYN_PREF_V8:
1847                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1848             case Opcode::ECMA_TONUMBER_PREF_V8:
1849                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1850             case Opcode::ECMA_NEGDYN_PREF_V8:
1851                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1852             case Opcode::ECMA_NOTDYN_PREF_V8:
1853                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1854             case Opcode::ECMA_INCDYN_PREF_V8:
1855                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1856             case Opcode::ECMA_DECDYN_PREF_V8:
1857                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1858             case Opcode::ECMA_EXPDYN_PREF_V8:
1859                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1860             case Opcode::ECMA_ISINDYN_PREF_V8:
1861                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1862             case Opcode::ECMA_INSTANCEOFDYN_PREF_V8:
1863                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1864             case Opcode::ECMA_STRICTNOTEQDYN_PREF_V8:
1865                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1866             case Opcode::ECMA_STRICTEQDYN_PREF_V8:
1867                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1868             case Opcode::ECMA_RESUMEGENERATOR_PREF_V8:
1869                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1870             case Opcode::ECMA_GETRESUMEMODE_PREF_V8:
1871                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1872             case Opcode::ECMA_CREATEGENERATOROBJ_PREF_V8:
1873                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1874             case Opcode::ECMA_THROWCONSTASSIGNMENT_PREF_V8:
1875                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1876             case Opcode::ECMA_GETTEMPLATEOBJECT_PREF_V8:
1877                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1878             case Opcode::ECMA_GETNEXTPROPNAME_PREF_V8:
1879                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1880             case Opcode::ECMA_CALLARG0DYN_PREF_V8:
1881                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1882             case Opcode::ECMA_THROWIFNOTOBJECT_PREF_V8:
1883                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1884             case Opcode::ECMA_ITERNEXT_PREF_V8:
1885                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1886             case Opcode::ECMA_CLOSEITERATOR_PREF_V8:
1887                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1888             case Opcode::ECMA_COPYMODULE_PREF_V8:
1889                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1890             case Opcode::ECMA_SUPERCALLSPREAD_PREF_V8:
1891                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1892             case Opcode::ECMA_DELOBJPROP_PREF_V8_V8:
1893                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1894             case Opcode::ECMA_NEWOBJSPREADDYN_PREF_V8_V8:
1895                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1896             case Opcode::ECMA_CREATEITERRESULTOBJ_PREF_V8_V8:
1897                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1898             case Opcode::ECMA_SUSPENDGENERATOR_PREF_V8_V8:
1899                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1900             case Opcode::ECMA_ASYNCFUNCTIONAWAITUNCAUGHT_PREF_V8_V8:
1901                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1902             case Opcode::ECMA_THROWUNDEFINEDIFHOLE_PREF_V8_V8:
1903                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1904             case Opcode::ECMA_CALLARG1DYN_PREF_V8_V8:
1905                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1906             case Opcode::ECMA_COPYDATAPROPERTIES_PREF_V8_V8:
1907                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1908             case Opcode::ECMA_STARRAYSPREAD_PREF_V8_V8:
1909                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1910             case Opcode::ECMA_GETITERATORNEXT_PREF_V8_V8:
1911                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1912             case Opcode::ECMA_SETOBJECTWITHPROTO_PREF_V8_V8:
1913                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1914             case Opcode::ECMA_LDOBJBYVALUE_PREF_V8_V8:
1915                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1916             case Opcode::ECMA_STOBJBYVALUE_PREF_V8_V8:
1917                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1918             case Opcode::ECMA_STOWNBYVALUE_PREF_V8_V8:
1919                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1920             case Opcode::ECMA_LDSUPERBYVALUE_PREF_V8_V8:
1921                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1922             case Opcode::ECMA_STSUPERBYVALUE_PREF_V8_V8:
1923                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1924             case Opcode::ECMA_LDOBJBYINDEX_PREF_V8_IMM32:
1925                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1926             case Opcode::ECMA_STOBJBYINDEX_PREF_V8_IMM32:
1927                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1928             case Opcode::ECMA_STOWNBYINDEX_PREF_V8_IMM32:
1929                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1930             case Opcode::ECMA_CALLSPREADDYN_PREF_V8_V8_V8:
1931                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1932             case Opcode::ECMA_ASYNCFUNCTIONRESOLVE_PREF_V8_V8_V8:
1933                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1934             case Opcode::ECMA_ASYNCFUNCTIONREJECT_PREF_V8_V8_V8:
1935                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1936             case Opcode::ECMA_CALLARGS2DYN_PREF_V8_V8_V8:
1937                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1938             case Opcode::ECMA_CALLARGS3DYN_PREF_V8_V8_V8_V8:
1939                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1940             case Opcode::ECMA_DEFINEGETTERSETTERBYVALUE_PREF_V8_V8_V8_V8:
1941                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1942             case Opcode::ECMA_NEWOBJDYNRANGE_PREF_IMM16_V8:
1943                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1944             case Opcode::ECMA_CALLRANGEDYN_PREF_IMM16_V8:
1945                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1946             case Opcode::ECMA_CALLTHISRANGEDYN_PREF_IMM16_V8:
1947                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1948             case Opcode::ECMA_SUPERCALL_PREF_IMM16_V8:
1949                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1950             case Opcode::ECMA_CREATEOBJECTWITHEXCLUDEDKEYS_PREF_IMM16_V8_V8:
1951                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1952             case Opcode::ECMA_DEFINEFUNCDYN_PREF_ID16_IMM16_V8:
1953                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1954             case Opcode::ECMA_DEFINENCFUNCDYN_PREF_ID16_IMM16_V8:
1955                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE | Flags::ACC_READ) &
1956                     flag) == flag;
1957             case Opcode::ECMA_DEFINEGENERATORFUNC_PREF_ID16_IMM16_V8:
1958                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1959             case Opcode::ECMA_DEFINEASYNCFUNC_PREF_ID16_IMM16_V8:
1960                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1961             case Opcode::ECMA_DEFINEMETHOD_PREF_ID16_IMM16_V8:
1962                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE | Flags::ACC_READ) &
1963                     flag) == flag;
1964             case Opcode::ECMA_NEWLEXENVDYN_PREF_IMM16:
1965                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1966             case Opcode::ECMA_COPYRESTARGS_PREF_IMM16:
1967                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1968             case Opcode::ECMA_CREATEARRAYWITHBUFFER_PREF_IMM16:
1969                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1970             case Opcode::ECMA_CREATEOBJECTHAVINGMETHOD_PREF_IMM16:
1971                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1972             case Opcode::ECMA_THROWIFSUPERNOTCORRECTCALL_PREF_IMM16:
1973                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1974             case Opcode::ECMA_CREATEOBJECTWITHBUFFER_PREF_IMM16:
1975                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1976             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM4_IMM4:
1977                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1978             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM8_IMM8:
1979                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1980             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM16_IMM16:
1981                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1982             case Opcode::ECMA_STLEXVARDYN_PREF_IMM4_IMM4_V8:
1983                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1984             case Opcode::ECMA_STLEXVARDYN_PREF_IMM8_IMM8_V8:
1985                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1986             case Opcode::ECMA_STLEXVARDYN_PREF_IMM16_IMM16_V8:
1987                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1988             case Opcode::ECMA_DEFINECLASSWITHBUFFER_PREF_ID16_IMM16_IMM16_V8_V8:
1989                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1990             case Opcode::ECMA_GETMODULENAMESPACE_PREF_ID32:
1991                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
1992             case Opcode::ECMA_STMODULEVAR_PREF_ID32:
1993                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
1994             case Opcode::ECMA_TRYLDGLOBALBYNAME_PREF_ID32:
1995                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
1996             case Opcode::ECMA_TRYSTGLOBALBYNAME_PREF_ID32:
1997                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
1998             case Opcode::ECMA_LDGLOBALVAR_PREF_ID32:
1999                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2000             case Opcode::ECMA_STGLOBALVAR_PREF_ID32:
2001                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2002             case Opcode::ECMA_LDOBJBYNAME_PREF_ID32_V8:
2003                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2004             case Opcode::ECMA_STOBJBYNAME_PREF_ID32_V8:
2005                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2006             case Opcode::ECMA_STOWNBYNAME_PREF_ID32_V8:
2007                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2008             case Opcode::ECMA_LDSUPERBYNAME_PREF_ID32_V8:
2009                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2010             case Opcode::ECMA_STSUPERBYNAME_PREF_ID32_V8:
2011                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2012             case Opcode::ECMA_LDMODULEVAR_PREF_ID32_IMM8:
2013                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2014             case Opcode::ECMA_CREATEREGEXPWITHLITERAL_PREF_ID32_IMM8:
2015                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2016             case Opcode::ECMA_ISTRUE_PREF_NONE:
2017                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2018             case Opcode::ECMA_ISFALSE_PREF_NONE:
2019                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2020             case Opcode::ECMA_STCONSTTOGLOBALRECORD_PREF_ID32:
2021                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2022             case Opcode::ECMA_STLETTOGLOBALRECORD_PREF_ID32:
2023                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2024             case Opcode::ECMA_STCLASSTOGLOBALRECORD_PREF_ID32:
2025                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2026             case Opcode::ECMA_STOWNBYVALUEWITHNAMESET_PREF_V8_V8:
2027                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2028             case Opcode::ECMA_STOWNBYNAMEWITHNAMESET_PREF_ID32_V8:
2029                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2030             case Opcode::ECMA_LDFUNCTION_PREF_NONE:
2031                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2032             case Opcode::ECMA_NEWLEXENVWITHNAMEDYN_PREF_IMM16_IMM16:
2033                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2034             case Opcode::ECMA_LDBIGINT_PREF_ID32:
2035                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2036             case Opcode::ECMA_TONUMERIC_PREF_V8:
2037                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2038             case Opcode::ECMA_CREATEASYNCGENERATOROBJ_PREF_V8:
2039                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2040             case Opcode::ECMA_ASYNCGENERATORRESOLVE_PREF_V8_V8_V8:
2041                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2042             case Opcode::ECMA_DEFINEASYNCGENERATORFUNC_PREF_ID16_IMM16_V8:
2043                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
2044             case Opcode::ECMA_DYNAMICIMPORT_PREF_V8:
2045                 return ((Flags::ACC_READ | Flags::ACC_WRITE) & flag) == flag;
2046             case Opcode::ECMA_LDPATCHVAR_PREF_IMM16:
2047                 return (Flags::ACC_WRITE & flag) == flag;
2048             case Opcode::ECMA_STPATCHVAR_PREF_IMM16:
2049                 return (Flags::ACC_READ & flag) == flag;
2050             case Opcode::ECMA_ASYNCGENERATORREJECT_PREF_V8_V8:
2051                 return (Flags::ACC_WRITE & flag) == flag;
2052             default:
2053                 return false;
2054         }
2055         LOG_ECMA(FATAL) << "this branch is unreachable";
2056         UNREACHABLE();
2057     }
2058 };
2059 }  // panda::ecmascript
2060 
2061 #endif  // ECMASCRIPT_JSPANDAFILE_BYTECODE_INST_OLD_INSTRUCTION_H