V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
bytecode-flags.h
1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_INTERPRETER_BYTECODE_FLAGS_H_
6 #define V8_INTERPRETER_BYTECODE_FLAGS_H_
7 
8 #include "src/utils.h"
9 
10 namespace v8 {
11 namespace internal {
12 
13 // Forward declarations.
14 class Literal;
15 class AstStringConstants;
16 
17 namespace interpreter {
18 
20  public:
21  class FlagsBits : public BitField8<int, 0, 5> {};
22  class FastCloneSupportedBit : public BitField8<bool, FlagsBits::kNext, 1> {};
23 
24  static uint8_t Encode(bool use_fast_shallow_clone, int runtime_flags);
25 
26  private:
27  DISALLOW_IMPLICIT_CONSTRUCTORS(CreateArrayLiteralFlags);
28 };
29 
31  public:
32  class FlagsBits : public BitField8<int, 0, 5> {};
33  class FastCloneSupportedBit : public BitField8<bool, FlagsBits::kNext, 1> {};
34 
35  static uint8_t Encode(int runtime_flags, bool fast_clone_supported);
36 
37  private:
38  DISALLOW_IMPLICIT_CONSTRUCTORS(CreateObjectLiteralFlags);
39 };
40 
42  public:
43  class PretenuredBit : public BitField8<bool, 0, 1> {};
44  class FastNewClosureBit : public BitField8<bool, PretenuredBit::kNext, 1> {};
45 
46  static uint8_t Encode(bool pretenure, bool is_function_scope);
47 
48  private:
49  DISALLOW_IMPLICIT_CONSTRUCTORS(CreateClosureFlags);
50 };
51 
52 #define TYPEOF_LITERAL_LIST(V) \
53  V(Number, number) \
54  V(String, string) \
55  V(Symbol, symbol) \
56  V(Boolean, boolean) \
57  V(BigInt, bigint) \
58  V(Undefined, undefined) \
59  V(Function, function) \
60  V(Object, object) \
61  V(Other, other)
62 
64  public:
65  enum class LiteralFlag : uint8_t {
66 #define DECLARE_LITERAL_FLAG(name, _) k##name,
67  TYPEOF_LITERAL_LIST(DECLARE_LITERAL_FLAG)
68 #undef DECLARE_LITERAL_FLAG
69  };
70 
71  static LiteralFlag GetFlagForLiteral(const AstStringConstants* ast_constants,
72  Literal* literal);
73  static uint8_t Encode(LiteralFlag literal_flag);
74  static LiteralFlag Decode(uint8_t raw_flag);
75 
76  private:
77  DISALLOW_IMPLICIT_CONSTRUCTORS(TestTypeOfFlags);
78 };
79 
81  public:
82  class LanguageModeBit : public BitField8<LanguageMode, 0, 1> {};
84  : public BitField8<bool, LanguageModeBit::kNext, 1> {};
85  STATIC_ASSERT(LanguageModeSize <= LanguageModeBit::kNumValues);
86 
87  static uint8_t Encode(LanguageMode language_mode,
88  LookupHoistingMode lookup_hoisting_mode);
89 
90  private:
91  DISALLOW_IMPLICIT_CONSTRUCTORS(StoreLookupSlotFlags);
92 };
93 
94 } // namespace interpreter
95 } // namespace internal
96 } // namespace v8
97 
98 #endif // V8_INTERPRETER_BYTECODE_FLAGS_H_
Definition: libplatform.h:13