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 namespace interpreter {
13 
14 class CreateArrayLiteralFlags {
15  public:
16   class FlagsBits : public BitField8<int, 0, 3> {};
17   class FastShallowCloneBit : public BitField8<bool, FlagsBits::kNext, 1> {};
18 
19   static uint8_t Encode(bool use_fast_shallow_clone, int runtime_flags);
20 
21  private:
22   DISALLOW_IMPLICIT_CONSTRUCTORS(CreateArrayLiteralFlags);
23 };
24 
25 class CreateObjectLiteralFlags {
26  public:
27   class FlagsBits : public BitField8<int, 0, 3> {};
28   class FastClonePropertiesCountBits
29       : public BitField8<int, FlagsBits::kNext, 3> {};
30 
31   static uint8_t Encode(bool fast_clone_supported, int properties_count,
32                         int runtime_flags);
33 
34  private:
35   DISALLOW_IMPLICIT_CONSTRUCTORS(CreateObjectLiteralFlags);
36 };
37 
38 class CreateClosureFlags {
39  public:
40   class PretenuredBit : public BitField8<bool, 0, 1> {};
41   class FastNewClosureBit : public BitField8<bool, PretenuredBit::kNext, 1> {};
42 
43   static uint8_t Encode(bool pretenure, bool is_function_scope);
44 
45  private:
46   DISALLOW_IMPLICIT_CONSTRUCTORS(CreateClosureFlags);
47 };
48 
49 }  // namespace interpreter
50 }  // namespace internal
51 }  // namespace v8
52 
53 #endif  // V8_INTERPRETER_BYTECODE_FLAGS_H_
54