OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 6806 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6817 // spending time attempting to optimize it again. | 6817 // spending time attempting to optimize it again. |
6818 DECL_BOOLEAN_ACCESSORS(optimization_disabled) | 6818 DECL_BOOLEAN_ACCESSORS(optimization_disabled) |
6819 | 6819 |
6820 // Indicates the language mode. | 6820 // Indicates the language mode. |
6821 inline StrictMode strict_mode(); | 6821 inline StrictMode strict_mode(); |
6822 inline void set_strict_mode(StrictMode strict_mode); | 6822 inline void set_strict_mode(StrictMode strict_mode); |
6823 | 6823 |
6824 // False if the function definitely does not allocate an arguments object. | 6824 // False if the function definitely does not allocate an arguments object. |
6825 DECL_BOOLEAN_ACCESSORS(uses_arguments) | 6825 DECL_BOOLEAN_ACCESSORS(uses_arguments) |
6826 | 6826 |
| 6827 // Indicates that this function uses super. This is needed to set up the |
| 6828 // [[HomeObject]] on the function instance. |
| 6829 DECL_BOOLEAN_ACCESSORS(uses_super) |
| 6830 |
6827 // True if the function has any duplicated parameter names. | 6831 // True if the function has any duplicated parameter names. |
6828 DECL_BOOLEAN_ACCESSORS(has_duplicate_parameters) | 6832 DECL_BOOLEAN_ACCESSORS(has_duplicate_parameters) |
6829 | 6833 |
6830 // Indicates whether the function is a native function. | 6834 // Indicates whether the function is a native function. |
6831 // These needs special treatment in .call and .apply since | 6835 // These needs special treatment in .call and .apply since |
6832 // null passed as the receiver should not be translated to the | 6836 // null passed as the receiver should not be translated to the |
6833 // global object. | 6837 // global object. |
6834 DECL_BOOLEAN_ACCESSORS(native) | 6838 DECL_BOOLEAN_ACCESSORS(native) |
6835 | 6839 |
6836 // Indicate that this builtin needs to be inlined in crankshaft. | 6840 // Indicate that this builtin needs to be inlined in crankshaft. |
(...skipping 27 matching lines...) Expand all Loading... |
6864 | 6868 |
6865 // Indicates that this function is an arrow function. | 6869 // Indicates that this function is an arrow function. |
6866 DECL_BOOLEAN_ACCESSORS(is_arrow) | 6870 DECL_BOOLEAN_ACCESSORS(is_arrow) |
6867 | 6871 |
6868 // Indicates that this function is a concise method. | 6872 // Indicates that this function is a concise method. |
6869 DECL_BOOLEAN_ACCESSORS(is_concise_method) | 6873 DECL_BOOLEAN_ACCESSORS(is_concise_method) |
6870 | 6874 |
6871 // Indicates that this function is a default constructor. | 6875 // Indicates that this function is a default constructor. |
6872 DECL_BOOLEAN_ACCESSORS(is_default_constructor) | 6876 DECL_BOOLEAN_ACCESSORS(is_default_constructor) |
6873 | 6877 |
6874 // Indicates that this function is a default constructor that needs to call | |
6875 // super. | |
6876 DECL_BOOLEAN_ACCESSORS(is_default_constructor_call_super) | |
6877 | |
6878 // Indicates that this function is an asm function. | 6878 // Indicates that this function is an asm function. |
6879 DECL_BOOLEAN_ACCESSORS(asm_function) | 6879 DECL_BOOLEAN_ACCESSORS(asm_function) |
6880 | 6880 |
6881 // Indicates that the the shared function info is deserialized from cache. | 6881 // Indicates that the the shared function info is deserialized from cache. |
6882 DECL_BOOLEAN_ACCESSORS(deserialized) | 6882 DECL_BOOLEAN_ACCESSORS(deserialized) |
6883 | 6883 |
6884 inline FunctionKind kind(); | 6884 inline FunctionKind kind(); |
6885 inline void set_kind(FunctionKind kind); | 6885 inline void set_kind(FunctionKind kind); |
6886 | 6886 |
6887 // Indicates whether or not the code in the shared function support | 6887 // Indicates whether or not the code in the shared function support |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7098 static const int kStartPositionShift = 2; | 7098 static const int kStartPositionShift = 2; |
7099 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); | 7099 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); |
7100 | 7100 |
7101 // Bit positions in compiler_hints. | 7101 // Bit positions in compiler_hints. |
7102 enum CompilerHints { | 7102 enum CompilerHints { |
7103 kAllowLazyCompilation, | 7103 kAllowLazyCompilation, |
7104 kAllowLazyCompilationWithoutContext, | 7104 kAllowLazyCompilationWithoutContext, |
7105 kOptimizationDisabled, | 7105 kOptimizationDisabled, |
7106 kStrictModeFunction, | 7106 kStrictModeFunction, |
7107 kUsesArguments, | 7107 kUsesArguments, |
| 7108 kUsesSuper, |
7108 kHasDuplicateParameters, | 7109 kHasDuplicateParameters, |
7109 kNative, | 7110 kNative, |
7110 kInlineBuiltin, | 7111 kInlineBuiltin, |
7111 kBoundFunction, | 7112 kBoundFunction, |
7112 kIsAnonymous, | 7113 kIsAnonymous, |
7113 kNameShouldPrintAsAnonymous, | 7114 kNameShouldPrintAsAnonymous, |
7114 kIsFunction, | 7115 kIsFunction, |
7115 kDontCache, | 7116 kDontCache, |
7116 kDontFlush, | 7117 kDontFlush, |
7117 kIsArrow, | 7118 kIsArrow, |
7118 kIsGenerator, | 7119 kIsGenerator, |
7119 kIsConciseMethod, | 7120 kIsConciseMethod, |
7120 kIsDefaultConstructor, | 7121 kIsDefaultConstructor, |
7121 kIsDefaultConstructorCallSuper, | |
7122 kIsAsmFunction, | 7122 kIsAsmFunction, |
7123 kDeserialized, | 7123 kDeserialized, |
7124 kCompilerHintsCount // Pseudo entry | 7124 kCompilerHintsCount // Pseudo entry |
7125 }; | 7125 }; |
7126 | 7126 |
7127 class FunctionKindBits : public BitField<FunctionKind, kIsArrow, 5> {}; | 7127 class FunctionKindBits : public BitField<FunctionKind, kIsArrow, 4> {}; |
7128 | 7128 |
7129 class DeoptCountBits : public BitField<int, 0, 4> {}; | 7129 class DeoptCountBits : public BitField<int, 0, 4> {}; |
7130 class OptReenableTriesBits : public BitField<int, 4, 18> {}; | 7130 class OptReenableTriesBits : public BitField<int, 4, 18> {}; |
7131 class ICAgeBits : public BitField<int, 22, 8> {}; | 7131 class ICAgeBits : public BitField<int, 22, 8> {}; |
7132 | 7132 |
7133 class OptCountBits : public BitField<int, 0, 22> {}; | 7133 class OptCountBits : public BitField<int, 0, 22> {}; |
7134 class DisabledOptimizationReasonBits : public BitField<int, 22, 8> {}; | 7134 class DisabledOptimizationReasonBits : public BitField<int, 22, 8> {}; |
7135 | 7135 |
7136 private: | 7136 private: |
7137 #if V8_HOST_ARCH_32_BIT | 7137 #if V8_HOST_ARCH_32_BIT |
(...skipping 3833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10971 } else { | 10971 } else { |
10972 value &= ~(1 << bit_position); | 10972 value &= ~(1 << bit_position); |
10973 } | 10973 } |
10974 return value; | 10974 return value; |
10975 } | 10975 } |
10976 }; | 10976 }; |
10977 | 10977 |
10978 } } // namespace v8::internal | 10978 } } // namespace v8::internal |
10979 | 10979 |
10980 #endif // V8_OBJECTS_H_ | 10980 #endif // V8_OBJECTS_H_ |
OLD | NEW |