OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 7357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7368 | 7368 |
7369 // A function has debug code if the compiled code has debug break slots. | 7369 // A function has debug code if the compiled code has debug break slots. |
7370 inline bool HasDebugCode(); | 7370 inline bool HasDebugCode(); |
7371 | 7371 |
7372 // [debug info]: Debug information. | 7372 // [debug info]: Debug information. |
7373 DECL_ACCESSORS(debug_info, Object) | 7373 DECL_ACCESSORS(debug_info, Object) |
7374 | 7374 |
7375 // The function's name if it is non-empty, otherwise the inferred name. | 7375 // The function's name if it is non-empty, otherwise the inferred name. |
7376 String* DebugName(); | 7376 String* DebugName(); |
7377 | 7377 |
| 7378 // The function cannot cause any side effects. |
| 7379 bool HasNoSideEffect(); |
| 7380 |
7378 // Used for flags such as --hydrogen-filter. | 7381 // Used for flags such as --hydrogen-filter. |
7379 bool PassesFilter(const char* raw_filter); | 7382 bool PassesFilter(const char* raw_filter); |
7380 | 7383 |
7381 // Position of the 'function' token in the script source. | 7384 // Position of the 'function' token in the script source. |
7382 inline int function_token_position() const; | 7385 inline int function_token_position() const; |
7383 inline void set_function_token_position(int function_token_position); | 7386 inline void set_function_token_position(int function_token_position); |
7384 | 7387 |
7385 // Position of this function in the script source. | 7388 // Position of this function in the script source. |
7386 inline int start_position() const; | 7389 inline int start_position() const; |
7387 inline void set_start_position(int start_position); | 7390 inline void set_start_position(int start_position); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7477 | 7480 |
7478 // Whether this function was created from a FunctionDeclaration. | 7481 // Whether this function was created from a FunctionDeclaration. |
7479 DECL_BOOLEAN_ACCESSORS(is_declaration) | 7482 DECL_BOOLEAN_ACCESSORS(is_declaration) |
7480 | 7483 |
7481 // Whether this function was marked to be tiered up. | 7484 // Whether this function was marked to be tiered up. |
7482 DECL_BOOLEAN_ACCESSORS(marked_for_tier_up) | 7485 DECL_BOOLEAN_ACCESSORS(marked_for_tier_up) |
7483 | 7486 |
7484 // Indicates that asm->wasm conversion failed and should not be re-attempted. | 7487 // Indicates that asm->wasm conversion failed and should not be re-attempted. |
7485 DECL_BOOLEAN_ACCESSORS(is_asm_wasm_broken) | 7488 DECL_BOOLEAN_ACCESSORS(is_asm_wasm_broken) |
7486 | 7489 |
| 7490 // Indicates that the function cannot cause side-effects. |
| 7491 DECL_BOOLEAN_ACCESSORS(has_no_side_effect) |
| 7492 |
| 7493 // Indicates that |has_no_side_effect| has been computed and set. |
| 7494 DECL_BOOLEAN_ACCESSORS(computed_has_no_side_effect) |
| 7495 |
7487 inline FunctionKind kind() const; | 7496 inline FunctionKind kind() const; |
7488 inline void set_kind(FunctionKind kind); | 7497 inline void set_kind(FunctionKind kind); |
7489 | 7498 |
7490 // Indicates whether or not the code in the shared function support | 7499 // Indicates whether or not the code in the shared function support |
7491 // deoptimization. | 7500 // deoptimization. |
7492 inline bool has_deoptimization_support(); | 7501 inline bool has_deoptimization_support(); |
7493 | 7502 |
7494 // Enable deoptimization support through recompiled code. | 7503 // Enable deoptimization support through recompiled code. |
7495 void EnableDeoptimizationSupport(Code* recompiled); | 7504 void EnableDeoptimizationSupport(Code* recompiled); |
7496 | 7505 |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7763 kIsFunction, | 7772 kIsFunction, |
7764 kMustUseIgnitionTurbo, | 7773 kMustUseIgnitionTurbo, |
7765 kDontFlush, | 7774 kDontFlush, |
7766 kIsDeclaration, | 7775 kIsDeclaration, |
7767 // byte 2 | 7776 // byte 2 |
7768 kFunctionKind, | 7777 kFunctionKind, |
7769 // rest of byte 2 and first two bits of byte 3 are used by FunctionKind | 7778 // rest of byte 2 and first two bits of byte 3 are used by FunctionKind |
7770 // byte 3 | 7779 // byte 3 |
7771 kDeserialized = kFunctionKind + 10, | 7780 kDeserialized = kFunctionKind + 10, |
7772 kIsAsmWasmBroken, | 7781 kIsAsmWasmBroken, |
| 7782 kHasNoSideEffect, |
| 7783 kComputedHasNoSideEffect, |
7773 kCompilerHintsCount, // Pseudo entry | 7784 kCompilerHintsCount, // Pseudo entry |
7774 }; | 7785 }; |
7775 // kFunctionKind has to be byte-aligned | 7786 // kFunctionKind has to be byte-aligned |
7776 STATIC_ASSERT((kFunctionKind % kBitsPerByte) == 0); | 7787 STATIC_ASSERT((kFunctionKind % kBitsPerByte) == 0); |
7777 | 7788 |
7778 class FunctionKindBits : public BitField<FunctionKind, kFunctionKind, 10> {}; | 7789 class FunctionKindBits : public BitField<FunctionKind, kFunctionKind, 10> {}; |
7779 | 7790 |
7780 class DeoptCountBits : public BitField<int, 0, 4> {}; | 7791 class DeoptCountBits : public BitField<int, 0, 4> {}; |
7781 class OptReenableTriesBits : public BitField<int, 4, 18> {}; | 7792 class OptReenableTriesBits : public BitField<int, 4, 18> {}; |
7782 class ICAgeBits : public BitField<int, 22, 8> {}; | 7793 class ICAgeBits : public BitField<int, 22, 8> {}; |
(...skipping 3965 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11748 } | 11759 } |
11749 }; | 11760 }; |
11750 | 11761 |
11751 | 11762 |
11752 } // NOLINT, false-positive due to second-order macros. | 11763 } // NOLINT, false-positive due to second-order macros. |
11753 } // NOLINT, false-positive due to second-order macros. | 11764 } // NOLINT, false-positive due to second-order macros. |
11754 | 11765 |
11755 #include "src/objects/object-macros-undef.h" | 11766 #include "src/objects/object-macros-undef.h" |
11756 | 11767 |
11757 #endif // V8_OBJECTS_H_ | 11768 #endif // V8_OBJECTS_H_ |
OLD | NEW |