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() const30     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) const40     OldBytecodeInst JumpTo(int32_t offset) const
41     {
42         return OldBytecodeInst(OldBytecodeInstBase::GetPointer(offset));
43     }
44 
GetNext() const45     OldBytecodeInst GetNext() const
46     {
47         return JumpTo(GetSize());
48     }
49 
GetAddress() const50     const uint8_t *GetAddress() const
51     {
52         return OldBytecodeInstBase::GetAddress();
53     }
54 
GetSize() const55     size_t GetSize() const
56     {
57         return Size(GetFormat(GetOpcode()));
58     }
59 
GetId() const60     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() const107     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     {
1234         switch (format) {
1235             case Format::ID16:
1236                 return idx < 1;
1237             case Format::ID32:
1238                 return idx < 1;
1239             case Format::PREF_ID16_IMM16_IMM16_V8_V8:
1240                 return idx < 1;
1241             case Format::PREF_ID16_IMM16_V8:
1242                 return idx < 1;
1243             case Format::PREF_ID32:
1244                 return idx < 1;
1245             case Format::PREF_ID32_IMM8:
1246                 return idx < 1;
1247             case Format::PREF_ID32_V8:
1248                 return idx < 1;
1249             case Format::V4_IMM4_ID16:
1250                 return idx < 1;
1251             case Format::V4_V4_ID16:
1252                 return idx < 1;
1253             case Format::V4_V4_V4_IMM4_ID16:
1254                 return idx < 1;
1255             case Format::V4_V4_V4_V4_ID16:
1256                 return idx < 1;
1257             case Format::V8_ID16:
1258                 return idx < 1;
1259             case Format::V8_ID32:
1260                 return idx < 1;
1261             default: {
1262                 return false;
1263             }
1264         }
1265     }
1266 
HasFlag(Flags flag) const1267     inline bool HasFlag(Flags flag) const
1268     {
1269         switch (GetOpcode()) {
1270             case Opcode::NOP:
1271                 return ((Flags::ACC_NONE) & flag) == flag;
1272             case Opcode::MOV_V4_V4:
1273                 return ((Flags::ACC_NONE) & flag) == flag;
1274             case Opcode::MOV_V8_V8:
1275                 return ((Flags::ACC_NONE) & flag) == flag;
1276             case Opcode::MOV_V16_V16:
1277                 return ((Flags::ACC_NONE) & flag) == flag;
1278             case Opcode::MOV_64_V4_V4:
1279                 return ((Flags::ACC_NONE) & flag) == flag;
1280             case Opcode::MOV_64_V16_V16:
1281                 return ((Flags::ACC_NONE) & flag) == flag;
1282             case Opcode::MOV_OBJ_V4_V4:
1283                 return ((Flags::ACC_NONE) & flag) == flag;
1284             case Opcode::MOV_OBJ_V8_V8:
1285                 return ((Flags::ACC_NONE) & flag) == flag;
1286             case Opcode::MOV_OBJ_V16_V16:
1287                 return ((Flags::ACC_NONE) & flag) == flag;
1288             case Opcode::MOVI_V4_IMM4:
1289                 return ((Flags::ACC_NONE) & flag) == flag;
1290             case Opcode::MOVI_V8_IMM8:
1291                 return ((Flags::ACC_NONE) & flag) == flag;
1292             case Opcode::MOVI_V8_IMM16:
1293                 return ((Flags::ACC_NONE) & flag) == flag;
1294             case Opcode::MOVI_V8_IMM32:
1295                 return ((Flags::ACC_NONE) & flag) == flag;
1296             case Opcode::MOVI_64_V8_IMM64:
1297                 return ((Flags::ACC_NONE) & flag) == flag;
1298             case Opcode::FMOVI_64_V8_IMM64:
1299                 return ((Flags::FLOAT | Flags::ACC_NONE) & flag) == flag;
1300             case Opcode::MOV_NULL_V8:
1301                 return ((Flags::ACC_NONE) & flag) == flag;
1302             case Opcode::LDA_V8:
1303                 return ((Flags::ACC_WRITE) & flag) == flag;
1304             case Opcode::LDA_64_V8:
1305                 return ((Flags::ACC_WRITE) & flag) == flag;
1306             case Opcode::LDA_OBJ_V8:
1307                 return ((Flags::ACC_WRITE) & flag) == flag;
1308             case Opcode::LDAI_IMM8:
1309                 return ((Flags::ACC_WRITE) & flag) == flag;
1310             case Opcode::LDAI_IMM16:
1311                 return ((Flags::ACC_WRITE) & flag) == flag;
1312             case Opcode::LDAI_IMM32:
1313                 return ((Flags::ACC_WRITE) & flag) == flag;
1314             case Opcode::LDAI_64_IMM64:
1315                 return ((Flags::ACC_WRITE) & flag) == flag;
1316             case Opcode::FLDAI_64_IMM64:
1317                 return ((Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1318             case Opcode::LDA_STR_ID32:
1319                 return ((Flags::STRING_ID | Flags::LANGUAGE_TYPE | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE) & flag) ==
1320                     flag;
1321             case Opcode::LDA_CONST_V8_ID32:
1322                 return ((Flags::LITERALARRAY_ID | Flags::ACC_NONE) & flag) == flag;
1323             case Opcode::LDA_TYPE_ID16:
1324                 return ((Flags::TYPE_ID | Flags::LANGUAGE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1325             case Opcode::LDA_NULL:
1326                 return ((Flags::ACC_WRITE) & flag) == flag;
1327             case Opcode::STA_V8:
1328                 return ((Flags::ACC_READ) & flag) == flag;
1329             case Opcode::STA_64_V8:
1330                 return ((Flags::ACC_READ) & flag) == flag;
1331             case Opcode::STA_OBJ_V8:
1332                 return ((Flags::ACC_READ) & flag) == flag;
1333             case Opcode::CMP_64_V8:
1334                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1335             case Opcode::FCMPL_64_V8:
1336                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1337             case Opcode::FCMPG_64_V8:
1338                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1339             case Opcode::JMP_IMM8:
1340                 return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1341             case Opcode::JMP_IMM16:
1342                 return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1343             case Opcode::JMP_IMM32:
1344                 return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1345             case Opcode::JEQ_OBJ_V8_IMM8:
1346                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1347             case Opcode::JEQ_OBJ_V8_IMM16:
1348                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1349             case Opcode::JNE_OBJ_V8_IMM8:
1350                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1351             case Opcode::JNE_OBJ_V8_IMM16:
1352                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1353             case Opcode::JEQZ_OBJ_IMM8:
1354                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1355             case Opcode::JEQZ_OBJ_IMM16:
1356                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1357             case Opcode::JNEZ_OBJ_IMM8:
1358                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1359             case Opcode::JNEZ_OBJ_IMM16:
1360                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1361             case Opcode::JEQZ_IMM8:
1362                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1363             case Opcode::JEQZ_IMM16:
1364                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1365             case Opcode::JNEZ_IMM8:
1366                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1367             case Opcode::JNEZ_IMM16:
1368                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1369             case Opcode::JLTZ_IMM8:
1370                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1371             case Opcode::JLTZ_IMM16:
1372                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1373             case Opcode::JGTZ_IMM8:
1374                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1375             case Opcode::JGTZ_IMM16:
1376                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1377             case Opcode::JLEZ_IMM8:
1378                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1379             case Opcode::JLEZ_IMM16:
1380                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1381             case Opcode::JGEZ_IMM8:
1382                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1383             case Opcode::JGEZ_IMM16:
1384                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1385             case Opcode::JEQ_V8_IMM8:
1386                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1387             case Opcode::JEQ_V8_IMM16:
1388                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1389             case Opcode::JNE_V8_IMM8:
1390                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1391             case Opcode::JNE_V8_IMM16:
1392                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1393             case Opcode::JLT_V8_IMM8:
1394                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1395             case Opcode::JLT_V8_IMM16:
1396                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1397             case Opcode::JGT_V8_IMM8:
1398                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1399             case Opcode::JGT_V8_IMM16:
1400                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1401             case Opcode::JLE_V8_IMM8:
1402                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1403             case Opcode::JLE_V8_IMM16:
1404                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1405             case Opcode::JGE_V8_IMM8:
1406                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1407             case Opcode::JGE_V8_IMM16:
1408                 return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1409             case Opcode::FNEG_64:
1410                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1411             case Opcode::NEG:
1412                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1413             case Opcode::NEG_64:
1414                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1415             case Opcode::ADD2_V8:
1416                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1417             case Opcode::ADD2_64_V8:
1418                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1419             case Opcode::SUB2_V8:
1420                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1421             case Opcode::SUB2_64_V8:
1422                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1423             case Opcode::MUL2_V8:
1424                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1425             case Opcode::MUL2_64_V8:
1426                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1427             case Opcode::FADD2_64_V8:
1428                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1429             case Opcode::FSUB2_64_V8:
1430                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1431             case Opcode::FMUL2_64_V8:
1432                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1433             case Opcode::FDIV2_64_V8:
1434                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1435             case Opcode::FMOD2_64_V8:
1436                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1437             case Opcode::DIV2_V8:
1438                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1439             case Opcode::DIV2_64_V8:
1440                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1441             case Opcode::MOD2_V8:
1442                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1443             case Opcode::MOD2_64_V8:
1444                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1445             case Opcode::ADDI_IMM8:
1446                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1447             case Opcode::SUBI_IMM8:
1448                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1449             case Opcode::MULI_IMM8:
1450                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1451             case Opcode::ANDI_IMM32:
1452                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1453             case Opcode::ORI_IMM32:
1454                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1455             case Opcode::SHLI_IMM8:
1456                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1457             case Opcode::SHRI_IMM8:
1458                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1459             case Opcode::ASHRI_IMM8:
1460                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1461             case Opcode::DIVI_IMM8:
1462                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1463             case Opcode::MODI_IMM8:
1464                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1465             case Opcode::ADD_V4_V4:
1466                 return ((Flags::ACC_WRITE) & flag) == flag;
1467             case Opcode::SUB_V4_V4:
1468                 return ((Flags::ACC_WRITE) & flag) == flag;
1469             case Opcode::MUL_V4_V4:
1470                 return ((Flags::ACC_WRITE) & flag) == flag;
1471             case Opcode::DIV_V4_V4:
1472                 return ((Flags::ACC_WRITE) & flag) == flag;
1473             case Opcode::MOD_V4_V4:
1474                 return ((Flags::ACC_WRITE) & flag) == flag;
1475             case Opcode::INCI_V4_IMM4:
1476                 return ((Flags::ACC_NONE) & flag) == flag;
1477             case Opcode::LDARR_8_V8:
1478                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1479             case Opcode::LDARRU_8_V8:
1480                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1481             case Opcode::LDARR_16_V8:
1482                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1483             case Opcode::LDARRU_16_V8:
1484                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1485             case Opcode::LDARR_V8:
1486                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1487             case Opcode::LDARR_64_V8:
1488                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1489             case Opcode::FLDARR_32_V8:
1490                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1491             case Opcode::FLDARR_64_V8:
1492                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1493             case Opcode::LDARR_OBJ_V8:
1494                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1495             case Opcode::STARR_8_V4_V4:
1496                 return ((Flags::ACC_READ) & flag) == flag;
1497             case Opcode::STARR_16_V4_V4:
1498                 return ((Flags::ACC_READ) & flag) == flag;
1499             case Opcode::STARR_V4_V4:
1500                 return ((Flags::ACC_READ) & flag) == flag;
1501             case Opcode::STARR_64_V4_V4:
1502                 return ((Flags::ACC_READ) & flag) == flag;
1503             case Opcode::FSTARR_32_V4_V4:
1504                 return ((Flags::FLOAT | Flags::ACC_READ) & flag) == flag;
1505             case Opcode::FSTARR_64_V4_V4:
1506                 return ((Flags::FLOAT | Flags::ACC_READ) & flag) == flag;
1507             case Opcode::STARR_OBJ_V4_V4:
1508                 return ((Flags::ACC_READ) & flag) == flag;
1509             case Opcode::LENARR_V8:
1510                 return ((Flags::ACC_WRITE) & flag) == flag;
1511             case Opcode::NEWARR_V4_V4_ID16:
1512                 return ((Flags::TYPE_ID | Flags::LANGUAGE_TYPE | Flags::INITIALIZE_TYPE | Flags::ACC_NONE) & flag) ==
1513                     flag;
1514             case Opcode::NEWOBJ_V8_ID16:
1515                 return ((Flags::TYPE_ID | Flags::INITIALIZE_TYPE | Flags::ACC_NONE) & flag) == flag;
1516             case Opcode::INITOBJ_SHORT_V4_V4_ID16:
1517                 return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1518             case Opcode::INITOBJ_V4_V4_V4_V4_ID16:
1519                 return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1520             case Opcode::INITOBJ_RANGE_V8_ID16:
1521                 return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1522             case Opcode::LDOBJ_V8_ID16:
1523                 return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1524             case Opcode::LDOBJ_64_V8_ID16:
1525                 return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1526             case Opcode::LDOBJ_OBJ_V8_ID16:
1527                 return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1528             case Opcode::STOBJ_V8_ID16:
1529                 return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1530             case Opcode::STOBJ_64_V8_ID16:
1531                 return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1532             case Opcode::STOBJ_OBJ_V8_ID16:
1533                 return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1534             case Opcode::LDOBJ_V_V4_V4_ID16:
1535                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1536             case Opcode::LDOBJ_V_64_V4_V4_ID16:
1537                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1538             case Opcode::LDOBJ_V_OBJ_V4_V4_ID16:
1539                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1540             case Opcode::STOBJ_V_V4_V4_ID16:
1541                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1542             case Opcode::STOBJ_V_64_V4_V4_ID16:
1543                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1544             case Opcode::STOBJ_V_OBJ_V4_V4_ID16:
1545                 return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1546             case Opcode::LDSTATIC_ID16:
1547                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1548             case Opcode::LDSTATIC_64_ID16:
1549                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1550             case Opcode::LDSTATIC_OBJ_ID16:
1551                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1552             case Opcode::STSTATIC_ID16:
1553                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1554             case Opcode::STSTATIC_64_ID16:
1555                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1556             case Opcode::STSTATIC_OBJ_ID16:
1557                 return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1558             case Opcode::RETURN:
1559                 return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1560             case Opcode::RETURN_64:
1561                 return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1562             case Opcode::RETURN_OBJ:
1563                 return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1564             case Opcode::RETURN_VOID:
1565                 return ((Flags::RETURN | Flags::ACC_NONE) & flag) == flag;
1566             case Opcode::THROW_V8:
1567                 return ((Flags::ACC_NONE) & flag) == flag;
1568             case Opcode::CHECKCAST_ID16:
1569                 return ((Flags::TYPE_ID | Flags::ACC_READ) & flag) == flag;
1570             case Opcode::ISINSTANCE_ID16:
1571                 return ((Flags::TYPE_ID | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1572             case Opcode::CALL_SHORT_V4_V4_ID16:
1573                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1574                     Flags::ACC_WRITE) & flag) == flag;
1575             case Opcode::CALL_V4_V4_V4_V4_ID16:
1576                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1577                     Flags::ACC_WRITE) & flag) == flag;
1578             case Opcode::CALL_RANGE_V8_ID16:
1579                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1580                     Flags::ACC_WRITE) & flag) == flag;
1581             case Opcode::CALL_ACC_SHORT_V4_IMM4_ID16:
1582                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE | Flags::ACC_READ) &
1583                     flag) == flag;
1584             case Opcode::CALL_ACC_V4_V4_V4_IMM4_ID16:
1585                 return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE | Flags::ACC_READ) &
1586                     flag) == flag;
1587             case Opcode::CALL_VIRT_SHORT_V4_V4_ID16:
1588                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1589             case Opcode::CALL_VIRT_V4_V4_V4_V4_ID16:
1590                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1591             case Opcode::CALL_VIRT_RANGE_V8_ID16:
1592                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1593             case Opcode::CALL_VIRT_ACC_SHORT_V4_IMM4_ID16:
1594                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE | Flags::ACC_READ) &
1595                     flag) == flag;
1596             case Opcode::CALL_VIRT_ACC_V4_V4_V4_IMM4_ID16:
1597                 return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE | Flags::ACC_READ) &
1598                     flag) == flag;
1599             case Opcode::MOV_DYN_V8_V8:
1600                 return ((Flags::DYNAMIC | Flags::ACC_NONE) & flag) == flag;
1601             case Opcode::MOV_DYN_V16_V16:
1602                 return ((Flags::DYNAMIC | Flags::ACC_NONE) & flag) == flag;
1603             case Opcode::LDA_DYN_V8:
1604                 return ((Flags::DYNAMIC | Flags::ACC_WRITE) & flag) == flag;
1605             case Opcode::STA_DYN_V8:
1606                 return ((Flags::DYNAMIC | Flags::ACC_READ) & flag) == flag;
1607             case Opcode::LDAI_DYN_IMM32:
1608                 return ((Flags::DYNAMIC | Flags::ACC_WRITE) & flag) == flag;
1609             case Opcode::FLDAI_DYN_IMM64:
1610                 return ((Flags::DYNAMIC | Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1611             case Opcode::RETURN_DYN:
1612                 return ((Flags::DYNAMIC | Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1613             case Opcode::CALLI_DYN_SHORT_IMM4_V4_V4_V4:
1614                 return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1615             case Opcode::CALLI_DYN_IMM4_V4_V4_V4_V4_V4:
1616                 return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1617             case Opcode::CALLI_DYN_RANGE_IMM16_V16:
1618                 return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1619             case Opcode::FMOVI_PREF_V8_IMM32:
1620                 return ((Flags::FLOAT | Flags::ACC_NONE) & flag) == flag;
1621             case Opcode::I32TOF64_PREF_NONE:
1622                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1623             case Opcode::UCMP_PREF_V8:
1624                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1625             case Opcode::NOT_PREF_NONE:
1626                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1627             case Opcode::ECMA_LDNAN_PREF_NONE:
1628                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1629             case Opcode::FLDAI_PREF_IMM32:
1630                 return ((Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1631             case Opcode::U32TOF64_PREF_NONE:
1632                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1633             case Opcode::UCMP_64_PREF_V8:
1634                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1635             case Opcode::NOT_64_PREF_NONE:
1636                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1637             case Opcode::ECMA_LDINFINITY_PREF_NONE:
1638                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1639             case Opcode::FCMPL_PREF_V8:
1640                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1641             case Opcode::I64TOF64_PREF_NONE:
1642                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1643             case Opcode::DIVU2_PREF_V8:
1644                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1645             case Opcode::AND2_PREF_V8:
1646                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1647             case Opcode::ECMA_LDGLOBALTHIS_PREF_NONE:
1648                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1649             case Opcode::FCMPG_PREF_V8:
1650                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1651             case Opcode::U64TOF64_PREF_NONE:
1652                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1653             case Opcode::DIVU2_64_PREF_V8:
1654                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1655             case Opcode::AND2_64_PREF_V8:
1656                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1657             case Opcode::ECMA_LDUNDEFINED_PREF_NONE:
1658                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1659             case Opcode::FNEG_PREF_NONE:
1660                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1661             case Opcode::F64TOI32_PREF_NONE:
1662                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1663             case Opcode::MODU2_PREF_V8:
1664                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1665             case Opcode::OR2_PREF_V8:
1666                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1667             case Opcode::ECMA_LDNULL_PREF_NONE:
1668                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1669             case Opcode::FADD2_PREF_V8:
1670                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1671             case Opcode::F64TOI64_PREF_NONE:
1672                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1673             case Opcode::MODU2_64_PREF_V8:
1674                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1675             case Opcode::OR2_64_PREF_V8:
1676                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1677             case Opcode::ECMA_LDSYMBOL_PREF_NONE:
1678                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1679             case Opcode::FSUB2_PREF_V8:
1680                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1681             case Opcode::F64TOU32_PREF_NONE:
1682                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1683             case Opcode::XOR2_PREF_V8:
1684                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1685             case Opcode::ECMA_LDGLOBAL_PREF_NONE:
1686                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1687             case Opcode::FMUL2_PREF_V8:
1688                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1689             case Opcode::F64TOU64_PREF_NONE:
1690                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1691             case Opcode::XOR2_64_PREF_V8:
1692                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1693             case Opcode::ECMA_LDTRUE_PREF_NONE:
1694                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1695             case Opcode::FDIV2_PREF_V8:
1696                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1697             case Opcode::I32TOU1_PREF_NONE:
1698                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1699             case Opcode::SHL2_PREF_V8:
1700                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1701             case Opcode::ECMA_LDFALSE_PREF_NONE:
1702                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1703             case Opcode::FMOD2_PREF_V8:
1704                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1705             case Opcode::I64TOU1_PREF_NONE:
1706                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1707             case Opcode::SHL2_64_PREF_V8:
1708                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1709             case Opcode::ECMA_THROWDYN_PREF_NONE:
1710                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1711             case Opcode::I32TOF32_PREF_NONE:
1712                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1713             case Opcode::U32TOU1_PREF_NONE:
1714                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1715             case Opcode::SHR2_PREF_V8:
1716                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1717             case Opcode::ECMA_TYPEOFDYN_PREF_NONE:
1718                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1719             case Opcode::U32TOF32_PREF_NONE:
1720                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1721             case Opcode::U64TOU1_PREF_NONE:
1722                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1723             case Opcode::SHR2_64_PREF_V8:
1724                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1725             case Opcode::ECMA_LDLEXENVDYN_PREF_NONE:
1726                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1727             case Opcode::I64TOF32_PREF_NONE:
1728                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1729             case Opcode::I32TOI64_PREF_NONE:
1730                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1731             case Opcode::ASHR2_PREF_V8:
1732                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1733             case Opcode::ECMA_POPLEXENVDYN_PREF_NONE:
1734                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1735             case Opcode::U64TOF32_PREF_NONE:
1736                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1737             case Opcode::I32TOI16_PREF_NONE:
1738                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1739             case Opcode::ASHR2_64_PREF_V8:
1740                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1741             case Opcode::ECMA_GETUNMAPPEDARGS_PREF_NONE:
1742                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1743             case Opcode::F32TOF64_PREF_NONE:
1744                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1745             case Opcode::I32TOU16_PREF_NONE:
1746                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1747             case Opcode::XORI_PREF_IMM32:
1748                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1749             case Opcode::ECMA_GETPROPITERATOR_PREF_NONE:
1750                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1751             case Opcode::F32TOI32_PREF_NONE:
1752                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1753             case Opcode::I32TOI8_PREF_NONE:
1754                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1755             case Opcode::AND_PREF_V4_V4:
1756                 return ((Flags::ACC_WRITE) & flag) == flag;
1757             case Opcode::ECMA_ASYNCFUNCTIONENTER_PREF_NONE:
1758                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1759             case Opcode::F32TOI64_PREF_NONE:
1760                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1761             case Opcode::I32TOU8_PREF_NONE:
1762                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1763             case Opcode::OR_PREF_V4_V4:
1764                 return ((Flags::ACC_WRITE) & flag) == flag;
1765             case Opcode::ECMA_LDHOLE_PREF_NONE:
1766                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1767             case Opcode::F32TOU32_PREF_NONE:
1768                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1769             case Opcode::I64TOI32_PREF_NONE:
1770                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1771             case Opcode::XOR_PREF_V4_V4:
1772                 return ((Flags::ACC_WRITE) & flag) == flag;
1773             case Opcode::ECMA_RETURNUNDEFINED_PREF_NONE:
1774                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::RETURN | Flags::ACC_NONE) & flag) == flag;
1775             case Opcode::F32TOU64_PREF_NONE:
1776                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1777             case Opcode::U32TOI64_PREF_NONE:
1778                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1779             case Opcode::SHL_PREF_V4_V4:
1780                 return ((Flags::ACC_WRITE) & flag) == flag;
1781             case Opcode::ECMA_CREATEEMPTYOBJECT_PREF_NONE:
1782                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1783             case Opcode::F64TOF32_PREF_NONE:
1784                 return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1785             case Opcode::U32TOI16_PREF_NONE:
1786                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1787             case Opcode::SHR_PREF_V4_V4:
1788                 return ((Flags::ACC_WRITE) & flag) == flag;
1789             case Opcode::ECMA_CREATEEMPTYARRAY_PREF_NONE:
1790                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1791             case Opcode::U32TOU16_PREF_NONE:
1792                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1793             case Opcode::ASHR_PREF_V4_V4:
1794                 return ((Flags::ACC_WRITE) & flag) == flag;
1795             case Opcode::ECMA_GETITERATOR_PREF_NONE:
1796                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1797             case Opcode::U32TOI8_PREF_NONE:
1798                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1799             case Opcode::ECMA_THROWTHROWNOTEXISTS_PREF_NONE:
1800                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1801             case Opcode::U32TOU8_PREF_NONE:
1802                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1803             case Opcode::ECMA_THROWPATTERNNONCOERCIBLE_PREF_NONE:
1804                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1805             case Opcode::U64TOI32_PREF_NONE:
1806                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1807             case Opcode::ECMA_LDHOMEOBJECT_PREF_NONE:
1808                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1809             case Opcode::U64TOU32_PREF_NONE:
1810                 return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1811             case Opcode::ECMA_THROWDELETESUPERPROPERTY_PREF_NONE:
1812                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1813             case Opcode::ECMA_DEBUGGER_PREF_NONE:
1814                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1815             case Opcode::ECMA_ADD2DYN_PREF_V8:
1816                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1817             case Opcode::ECMA_SUB2DYN_PREF_V8:
1818                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1819             case Opcode::ECMA_MUL2DYN_PREF_V8:
1820                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1821             case Opcode::ECMA_DIV2DYN_PREF_V8:
1822                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1823             case Opcode::ECMA_MOD2DYN_PREF_V8:
1824                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1825             case Opcode::ECMA_EQDYN_PREF_V8:
1826                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1827             case Opcode::ECMA_NOTEQDYN_PREF_V8:
1828                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1829             case Opcode::ECMA_LESSDYN_PREF_V8:
1830                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1831             case Opcode::ECMA_LESSEQDYN_PREF_V8:
1832                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1833             case Opcode::ECMA_GREATERDYN_PREF_V8:
1834                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1835             case Opcode::ECMA_GREATEREQDYN_PREF_V8:
1836                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1837             case Opcode::ECMA_SHL2DYN_PREF_V8:
1838                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1839             case Opcode::ECMA_SHR2DYN_PREF_V8:
1840                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1841             case Opcode::ECMA_ASHR2DYN_PREF_V8:
1842                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1843             case Opcode::ECMA_AND2DYN_PREF_V8:
1844                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1845             case Opcode::ECMA_OR2DYN_PREF_V8:
1846                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1847             case Opcode::ECMA_XOR2DYN_PREF_V8:
1848                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1849             case Opcode::ECMA_TONUMBER_PREF_V8:
1850                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1851             case Opcode::ECMA_NEGDYN_PREF_V8:
1852                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1853             case Opcode::ECMA_NOTDYN_PREF_V8:
1854                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1855             case Opcode::ECMA_INCDYN_PREF_V8:
1856                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1857             case Opcode::ECMA_DECDYN_PREF_V8:
1858                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1859             case Opcode::ECMA_EXPDYN_PREF_V8:
1860                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1861             case Opcode::ECMA_ISINDYN_PREF_V8:
1862                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1863             case Opcode::ECMA_INSTANCEOFDYN_PREF_V8:
1864                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1865             case Opcode::ECMA_STRICTNOTEQDYN_PREF_V8:
1866                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1867             case Opcode::ECMA_STRICTEQDYN_PREF_V8:
1868                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1869             case Opcode::ECMA_RESUMEGENERATOR_PREF_V8:
1870                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1871             case Opcode::ECMA_GETRESUMEMODE_PREF_V8:
1872                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1873             case Opcode::ECMA_CREATEGENERATOROBJ_PREF_V8:
1874                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1875             case Opcode::ECMA_THROWCONSTASSIGNMENT_PREF_V8:
1876                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1877             case Opcode::ECMA_GETTEMPLATEOBJECT_PREF_V8:
1878                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1879             case Opcode::ECMA_GETNEXTPROPNAME_PREF_V8:
1880                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1881             case Opcode::ECMA_CALLARG0DYN_PREF_V8:
1882                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1883             case Opcode::ECMA_THROWIFNOTOBJECT_PREF_V8:
1884                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1885             case Opcode::ECMA_ITERNEXT_PREF_V8:
1886                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1887             case Opcode::ECMA_CLOSEITERATOR_PREF_V8:
1888                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1889             case Opcode::ECMA_COPYMODULE_PREF_V8:
1890                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1891             case Opcode::ECMA_SUPERCALLSPREAD_PREF_V8:
1892                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1893             case Opcode::ECMA_DELOBJPROP_PREF_V8_V8:
1894                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1895             case Opcode::ECMA_NEWOBJSPREADDYN_PREF_V8_V8:
1896                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1897             case Opcode::ECMA_CREATEITERRESULTOBJ_PREF_V8_V8:
1898                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1899             case Opcode::ECMA_SUSPENDGENERATOR_PREF_V8_V8:
1900                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1901             case Opcode::ECMA_ASYNCFUNCTIONAWAITUNCAUGHT_PREF_V8_V8:
1902                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1903             case Opcode::ECMA_THROWUNDEFINEDIFHOLE_PREF_V8_V8:
1904                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1905             case Opcode::ECMA_CALLARG1DYN_PREF_V8_V8:
1906                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1907             case Opcode::ECMA_COPYDATAPROPERTIES_PREF_V8_V8:
1908                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1909             case Opcode::ECMA_STARRAYSPREAD_PREF_V8_V8:
1910                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1911             case Opcode::ECMA_GETITERATORNEXT_PREF_V8_V8:
1912                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1913             case Opcode::ECMA_SETOBJECTWITHPROTO_PREF_V8_V8:
1914                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1915             case Opcode::ECMA_LDOBJBYVALUE_PREF_V8_V8:
1916                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1917             case Opcode::ECMA_STOBJBYVALUE_PREF_V8_V8:
1918                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1919             case Opcode::ECMA_STOWNBYVALUE_PREF_V8_V8:
1920                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1921             case Opcode::ECMA_LDSUPERBYVALUE_PREF_V8_V8:
1922                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1923             case Opcode::ECMA_STSUPERBYVALUE_PREF_V8_V8:
1924                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1925             case Opcode::ECMA_LDOBJBYINDEX_PREF_V8_IMM32:
1926                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1927             case Opcode::ECMA_STOBJBYINDEX_PREF_V8_IMM32:
1928                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1929             case Opcode::ECMA_STOWNBYINDEX_PREF_V8_IMM32:
1930                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1931             case Opcode::ECMA_CALLSPREADDYN_PREF_V8_V8_V8:
1932                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1933             case Opcode::ECMA_ASYNCFUNCTIONRESOLVE_PREF_V8_V8_V8:
1934                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1935             case Opcode::ECMA_ASYNCFUNCTIONREJECT_PREF_V8_V8_V8:
1936                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1937             case Opcode::ECMA_CALLARGS2DYN_PREF_V8_V8_V8:
1938                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1939             case Opcode::ECMA_CALLARGS3DYN_PREF_V8_V8_V8_V8:
1940                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1941             case Opcode::ECMA_DEFINEGETTERSETTERBYVALUE_PREF_V8_V8_V8_V8:
1942                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1943             case Opcode::ECMA_NEWOBJDYNRANGE_PREF_IMM16_V8:
1944                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1945             case Opcode::ECMA_CALLRANGEDYN_PREF_IMM16_V8:
1946                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1947             case Opcode::ECMA_CALLTHISRANGEDYN_PREF_IMM16_V8:
1948                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1949             case Opcode::ECMA_SUPERCALL_PREF_IMM16_V8:
1950                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1951             case Opcode::ECMA_CREATEOBJECTWITHEXCLUDEDKEYS_PREF_IMM16_V8_V8:
1952                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1953             case Opcode::ECMA_DEFINEFUNCDYN_PREF_ID16_IMM16_V8:
1954                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1955             case Opcode::ECMA_DEFINENCFUNCDYN_PREF_ID16_IMM16_V8:
1956                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE | Flags::ACC_READ) &
1957                     flag) == flag;
1958             case Opcode::ECMA_DEFINEGENERATORFUNC_PREF_ID16_IMM16_V8:
1959                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1960             case Opcode::ECMA_DEFINEASYNCFUNC_PREF_ID16_IMM16_V8:
1961                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1962             case Opcode::ECMA_DEFINEMETHOD_PREF_ID16_IMM16_V8:
1963                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE | Flags::ACC_READ) &
1964                     flag) == flag;
1965             case Opcode::ECMA_NEWLEXENVDYN_PREF_IMM16:
1966                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1967             case Opcode::ECMA_COPYRESTARGS_PREF_IMM16:
1968                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1969             case Opcode::ECMA_CREATEARRAYWITHBUFFER_PREF_IMM16:
1970                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1971             case Opcode::ECMA_CREATEOBJECTHAVINGMETHOD_PREF_IMM16:
1972                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1973             case Opcode::ECMA_THROWIFSUPERNOTCORRECTCALL_PREF_IMM16:
1974                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1975             case Opcode::ECMA_CREATEOBJECTWITHBUFFER_PREF_IMM16:
1976                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1977             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM4_IMM4:
1978                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1979             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM8_IMM8:
1980                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1981             case Opcode::ECMA_LDLEXVARDYN_PREF_IMM16_IMM16:
1982                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1983             case Opcode::ECMA_STLEXVARDYN_PREF_IMM4_IMM4_V8:
1984                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1985             case Opcode::ECMA_STLEXVARDYN_PREF_IMM8_IMM8_V8:
1986                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1987             case Opcode::ECMA_STLEXVARDYN_PREF_IMM16_IMM16_V8:
1988                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1989             case Opcode::ECMA_DEFINECLASSWITHBUFFER_PREF_ID16_IMM16_IMM16_V8_V8:
1990                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1991             case Opcode::ECMA_GETMODULENAMESPACE_PREF_ID32:
1992                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
1993             case Opcode::ECMA_STMODULEVAR_PREF_ID32:
1994                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
1995             case Opcode::ECMA_TRYLDGLOBALBYNAME_PREF_ID32:
1996                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
1997             case Opcode::ECMA_TRYSTGLOBALBYNAME_PREF_ID32:
1998                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
1999             case Opcode::ECMA_LDGLOBALVAR_PREF_ID32:
2000                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2001             case Opcode::ECMA_STGLOBALVAR_PREF_ID32:
2002                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2003             case Opcode::ECMA_LDOBJBYNAME_PREF_ID32_V8:
2004                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2005             case Opcode::ECMA_STOBJBYNAME_PREF_ID32_V8:
2006                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2007             case Opcode::ECMA_STOWNBYNAME_PREF_ID32_V8:
2008                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2009             case Opcode::ECMA_LDSUPERBYNAME_PREF_ID32_V8:
2010                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2011             case Opcode::ECMA_STSUPERBYNAME_PREF_ID32_V8:
2012                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2013             case Opcode::ECMA_LDMODULEVAR_PREF_ID32_IMM8:
2014                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2015             case Opcode::ECMA_CREATEREGEXPWITHLITERAL_PREF_ID32_IMM8:
2016                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2017             case Opcode::ECMA_ISTRUE_PREF_NONE:
2018                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2019             case Opcode::ECMA_ISFALSE_PREF_NONE:
2020                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2021             case Opcode::ECMA_STCONSTTOGLOBALRECORD_PREF_ID32:
2022                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2023             case Opcode::ECMA_STLETTOGLOBALRECORD_PREF_ID32:
2024                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2025             case Opcode::ECMA_STCLASSTOGLOBALRECORD_PREF_ID32:
2026                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2027             case Opcode::ECMA_STOWNBYVALUEWITHNAMESET_PREF_V8_V8:
2028                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2029             case Opcode::ECMA_STOWNBYNAMEWITHNAMESET_PREF_ID32_V8:
2030                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2031             case Opcode::ECMA_LDFUNCTION_PREF_NONE:
2032                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2033             case Opcode::ECMA_NEWLEXENVWITHNAMEDYN_PREF_IMM16_IMM16:
2034                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2035             case Opcode::ECMA_LDBIGINT_PREF_ID32:
2036                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2037             case Opcode::ECMA_TONUMERIC_PREF_V8:
2038                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2039             case Opcode::ECMA_CREATEASYNCGENERATOROBJ_PREF_V8:
2040                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2041             case Opcode::ECMA_ASYNCGENERATORRESOLVE_PREF_V8_V8_V8:
2042                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2043             case Opcode::ECMA_DEFINEASYNCGENERATORFUNC_PREF_ID16_IMM16_V8:
2044                 return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
2045             case Opcode::ECMA_DYNAMICIMPORT_PREF_V8:
2046                 return ((Flags::ACC_READ | Flags::ACC_WRITE) & flag) == flag;
2047             case Opcode::ECMA_LDPATCHVAR_PREF_IMM16:
2048                 return (Flags::ACC_WRITE & flag) == flag;
2049             case Opcode::ECMA_STPATCHVAR_PREF_IMM16:
2050                 return (Flags::ACC_READ & flag) == flag;
2051             case Opcode::ECMA_ASYNCGENERATORREJECT_PREF_V8_V8:
2052                 return (Flags::ACC_WRITE & flag) == flag;
2053             default:
2054                 return false;
2055         }
2056         LOG_ECMA(FATAL) << "this branch is unreachable";
2057         UNREACHABLE();
2058     }
2059 };
2060 }  // panda::ecmascript
2061 
2062 #endif  // ECMASCRIPT_JSPANDAFILE_BYTECODE_INST_OLD_INSTRUCTION_H