| 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 7316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7327 inline void set_num_literals(int value); | 7327 inline void set_num_literals(int value); |
| 7328 | 7328 |
| 7329 // [start_position_and_type]: Field used to store both the source code | 7329 // [start_position_and_type]: Field used to store both the source code |
| 7330 // position, whether or not the function is a function expression, | 7330 // position, whether or not the function is a function expression, |
| 7331 // and whether or not the function is a toplevel function. The two | 7331 // and whether or not the function is a toplevel function. The two |
| 7332 // least significants bit indicates whether the function is an | 7332 // least significants bit indicates whether the function is an |
| 7333 // expression and the rest contains the source code position. | 7333 // expression and the rest contains the source code position. |
| 7334 inline int start_position_and_type() const; | 7334 inline int start_position_and_type() const; |
| 7335 inline void set_start_position_and_type(int value); | 7335 inline void set_start_position_and_type(int value); |
| 7336 | 7336 |
| 7337 // [end_position_and_is_blackboxed]: Field used to store both the source code |
| 7338 // position, whether or not the function is blackboxed, and whether or not the |
| 7339 // blackboxed state is computed in the two |
| 7340 // least significants bits. |
| 7341 inline int end_position_and_is_blackboxed() const; |
| 7342 inline void set_end_position_and_is_blackboxed(int value); |
| 7343 |
| 7337 // The function is subject to debugging if a debug info is attached. | 7344 // The function is subject to debugging if a debug info is attached. |
| 7338 inline bool HasDebugInfo(); | 7345 inline bool HasDebugInfo(); |
| 7339 inline DebugInfo* GetDebugInfo(); | 7346 inline DebugInfo* GetDebugInfo(); |
| 7340 | 7347 |
| 7341 // A function has debug code if the compiled code has debug break slots. | 7348 // A function has debug code if the compiled code has debug break slots. |
| 7342 inline bool HasDebugCode(); | 7349 inline bool HasDebugCode(); |
| 7343 | 7350 |
| 7344 // [debug info]: Debug information. | 7351 // [debug info]: Debug information. |
| 7345 DECL_ACCESSORS(debug_info, Object) | 7352 DECL_ACCESSORS(debug_info, Object) |
| 7346 | 7353 |
| 7347 // The function's name if it is non-empty, otherwise the inferred name. | 7354 // The function's name if it is non-empty, otherwise the inferred name. |
| 7348 String* DebugName(); | 7355 String* DebugName(); |
| 7349 | 7356 |
| 7357 // The function is blackboxed in debugger. |
| 7358 bool DebugIsBlackboxed(); |
| 7359 |
| 7350 // The function cannot cause any side effects. | 7360 // The function cannot cause any side effects. |
| 7351 bool HasNoSideEffect(); | 7361 bool HasNoSideEffect(); |
| 7352 | 7362 |
| 7353 // Used for flags such as --hydrogen-filter. | 7363 // Used for flags such as --hydrogen-filter. |
| 7354 bool PassesFilter(const char* raw_filter); | 7364 bool PassesFilter(const char* raw_filter); |
| 7355 | 7365 |
| 7356 // Position of the 'function' token in the script source. | 7366 // Position of the 'function' token in the script source. |
| 7357 inline int function_token_position() const; | 7367 inline int function_token_position() const; |
| 7358 inline void set_function_token_position(int function_token_position); | 7368 inline void set_function_token_position(int function_token_position); |
| 7359 | 7369 |
| 7360 // Position of this function in the script source. | 7370 // Position of this function in the script source. |
| 7361 inline int start_position() const; | 7371 inline int start_position() const; |
| 7362 inline void set_start_position(int start_position); | 7372 inline void set_start_position(int start_position); |
| 7363 | 7373 |
| 7364 // End position of this function in the script source. | |
| 7365 inline int end_position() const; | |
| 7366 inline void set_end_position(int end_position); | |
| 7367 | |
| 7368 // Is this function a named function expression in the source code. | 7374 // Is this function a named function expression in the source code. |
| 7369 DECL_BOOLEAN_ACCESSORS(is_named_expression) | 7375 DECL_BOOLEAN_ACCESSORS(is_named_expression) |
| 7370 | 7376 |
| 7371 // Is this function a top-level function (scripts, evals). | 7377 // Is this function a top-level function (scripts, evals). |
| 7372 DECL_BOOLEAN_ACCESSORS(is_toplevel) | 7378 DECL_BOOLEAN_ACCESSORS(is_toplevel) |
| 7373 | 7379 |
| 7380 // End position of this function in the script source. |
| 7381 inline int end_position() const; |
| 7382 inline void set_end_position(int end_position); |
| 7383 |
| 7384 // Indicates that the function should be skipped during stepping. |
| 7385 DECL_BOOLEAN_ACCESSORS(debug_is_blackboxed) |
| 7386 |
| 7387 // Indicates that |debug_is_blackboxed| has been computed and set. |
| 7388 DECL_BOOLEAN_ACCESSORS(computed_debug_is_blackboxed) |
| 7389 |
| 7374 // Bit field containing various information collected by the compiler to | 7390 // Bit field containing various information collected by the compiler to |
| 7375 // drive optimization. | 7391 // drive optimization. |
| 7376 inline int compiler_hints() const; | 7392 inline int compiler_hints() const; |
| 7377 inline void set_compiler_hints(int value); | 7393 inline void set_compiler_hints(int value); |
| 7378 | 7394 |
| 7379 inline int ast_node_count() const; | 7395 inline int ast_node_count() const; |
| 7380 inline void set_ast_node_count(int count); | 7396 inline void set_ast_node_count(int count); |
| 7381 | 7397 |
| 7382 inline int profiler_ticks() const; | 7398 inline int profiler_ticks() const; |
| 7383 inline void set_profiler_ticks(int ticks); | 7399 inline void set_profiler_ticks(int ticks); |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7607 #if V8_HOST_ARCH_32_BIT | 7623 #if V8_HOST_ARCH_32_BIT |
| 7608 // Smi fields. | 7624 // Smi fields. |
| 7609 static const int kLengthOffset = kLastPointerFieldOffset + kPointerSize; | 7625 static const int kLengthOffset = kLastPointerFieldOffset + kPointerSize; |
| 7610 static const int kFormalParameterCountOffset = kLengthOffset + kPointerSize; | 7626 static const int kFormalParameterCountOffset = kLengthOffset + kPointerSize; |
| 7611 static const int kExpectedNofPropertiesOffset = | 7627 static const int kExpectedNofPropertiesOffset = |
| 7612 kFormalParameterCountOffset + kPointerSize; | 7628 kFormalParameterCountOffset + kPointerSize; |
| 7613 static const int kNumLiteralsOffset = | 7629 static const int kNumLiteralsOffset = |
| 7614 kExpectedNofPropertiesOffset + kPointerSize; | 7630 kExpectedNofPropertiesOffset + kPointerSize; |
| 7615 static const int kStartPositionAndTypeOffset = | 7631 static const int kStartPositionAndTypeOffset = |
| 7616 kNumLiteralsOffset + kPointerSize; | 7632 kNumLiteralsOffset + kPointerSize; |
| 7617 static const int kEndPositionOffset = | 7633 static const int kEndPositionAndIsBlackboxedOffset = |
| 7618 kStartPositionAndTypeOffset + kPointerSize; | 7634 kStartPositionAndTypeOffset + kPointerSize; |
| 7619 static const int kFunctionTokenPositionOffset = | 7635 static const int kFunctionTokenPositionOffset = |
| 7620 kEndPositionOffset + kPointerSize; | 7636 kEndPositionAndIsBlackboxedOffset + kPointerSize; |
| 7621 static const int kCompilerHintsOffset = | 7637 static const int kCompilerHintsOffset = |
| 7622 kFunctionTokenPositionOffset + kPointerSize; | 7638 kFunctionTokenPositionOffset + kPointerSize; |
| 7623 static const int kOptCountAndBailoutReasonOffset = | 7639 static const int kOptCountAndBailoutReasonOffset = |
| 7624 kCompilerHintsOffset + kPointerSize; | 7640 kCompilerHintsOffset + kPointerSize; |
| 7625 static const int kCountersOffset = | 7641 static const int kCountersOffset = |
| 7626 kOptCountAndBailoutReasonOffset + kPointerSize; | 7642 kOptCountAndBailoutReasonOffset + kPointerSize; |
| 7627 static const int kAstNodeCountOffset = | 7643 static const int kAstNodeCountOffset = |
| 7628 kCountersOffset + kPointerSize; | 7644 kCountersOffset + kPointerSize; |
| 7629 static const int kProfilerTicksOffset = | 7645 static const int kProfilerTicksOffset = |
| 7630 kAstNodeCountOffset + kPointerSize; | 7646 kAstNodeCountOffset + kPointerSize; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 7643 #if V8_TARGET_LITTLE_ENDIAN | 7659 #if V8_TARGET_LITTLE_ENDIAN |
| 7644 static const int kLengthOffset = kLastPointerFieldOffset + kPointerSize; | 7660 static const int kLengthOffset = kLastPointerFieldOffset + kPointerSize; |
| 7645 static const int kFormalParameterCountOffset = | 7661 static const int kFormalParameterCountOffset = |
| 7646 kLengthOffset + kIntSize; | 7662 kLengthOffset + kIntSize; |
| 7647 | 7663 |
| 7648 static const int kExpectedNofPropertiesOffset = | 7664 static const int kExpectedNofPropertiesOffset = |
| 7649 kFormalParameterCountOffset + kIntSize; | 7665 kFormalParameterCountOffset + kIntSize; |
| 7650 static const int kNumLiteralsOffset = | 7666 static const int kNumLiteralsOffset = |
| 7651 kExpectedNofPropertiesOffset + kIntSize; | 7667 kExpectedNofPropertiesOffset + kIntSize; |
| 7652 | 7668 |
| 7653 static const int kEndPositionOffset = | 7669 static const int kEndPositionAndIsBlackboxedOffset = |
| 7654 kNumLiteralsOffset + kIntSize; | 7670 kNumLiteralsOffset + kIntSize; |
| 7655 static const int kStartPositionAndTypeOffset = | 7671 static const int kStartPositionAndTypeOffset = |
| 7656 kEndPositionOffset + kIntSize; | 7672 kEndPositionAndIsBlackboxedOffset + kIntSize; |
| 7657 | 7673 |
| 7658 static const int kFunctionTokenPositionOffset = | 7674 static const int kFunctionTokenPositionOffset = |
| 7659 kStartPositionAndTypeOffset + kIntSize; | 7675 kStartPositionAndTypeOffset + kIntSize; |
| 7660 static const int kCompilerHintsOffset = | 7676 static const int kCompilerHintsOffset = |
| 7661 kFunctionTokenPositionOffset + kIntSize; | 7677 kFunctionTokenPositionOffset + kIntSize; |
| 7662 | 7678 |
| 7663 static const int kOptCountAndBailoutReasonOffset = | 7679 static const int kOptCountAndBailoutReasonOffset = |
| 7664 kCompilerHintsOffset + kIntSize; | 7680 kCompilerHintsOffset + kIntSize; |
| 7665 static const int kCountersOffset = | 7681 static const int kCountersOffset = |
| 7666 kOptCountAndBailoutReasonOffset + kIntSize; | 7682 kOptCountAndBailoutReasonOffset + kIntSize; |
| 7667 | 7683 |
| 7668 static const int kAstNodeCountOffset = | 7684 static const int kAstNodeCountOffset = |
| 7669 kCountersOffset + kIntSize; | 7685 kCountersOffset + kIntSize; |
| 7670 static const int kProfilerTicksOffset = | 7686 static const int kProfilerTicksOffset = |
| 7671 kAstNodeCountOffset + kIntSize; | 7687 kAstNodeCountOffset + kIntSize; |
| 7672 | 7688 |
| 7673 // Total size. | 7689 // Total size. |
| 7674 static const int kSize = kProfilerTicksOffset + kIntSize; | 7690 static const int kSize = kProfilerTicksOffset + kIntSize; |
| 7675 | 7691 |
| 7676 #elif V8_TARGET_BIG_ENDIAN | 7692 #elif V8_TARGET_BIG_ENDIAN |
| 7677 static const int kFormalParameterCountOffset = | 7693 static const int kFormalParameterCountOffset = |
| 7678 kLastPointerFieldOffset + kPointerSize; | 7694 kLastPointerFieldOffset + kPointerSize; |
| 7679 static const int kLengthOffset = kFormalParameterCountOffset + kIntSize; | 7695 static const int kLengthOffset = kFormalParameterCountOffset + kIntSize; |
| 7680 | 7696 |
| 7681 static const int kNumLiteralsOffset = kLengthOffset + kIntSize; | 7697 static const int kNumLiteralsOffset = kLengthOffset + kIntSize; |
| 7682 static const int kExpectedNofPropertiesOffset = kNumLiteralsOffset + kIntSize; | 7698 static const int kExpectedNofPropertiesOffset = kNumLiteralsOffset + kIntSize; |
| 7683 | 7699 |
| 7684 static const int kStartPositionAndTypeOffset = | 7700 static const int kStartPositionAndTypeOffset = |
| 7685 kExpectedNofPropertiesOffset + kIntSize; | 7701 kExpectedNofPropertiesOffset + kIntSize; |
| 7686 static const int kEndPositionOffset = kStartPositionAndTypeOffset + kIntSize; | 7702 static const int kEndPositionAndIsBlackboxedOffset = |
| 7703 kStartPositionAndTypeOffset + kIntSize; |
| 7687 | 7704 |
| 7688 static const int kCompilerHintsOffset = kEndPositionOffset + kIntSize; | 7705 static const int kCompilerHintsOffset = |
| 7706 kEndPositionAndIsBlackboxedOffset + kIntSize; |
| 7689 static const int kFunctionTokenPositionOffset = | 7707 static const int kFunctionTokenPositionOffset = |
| 7690 kCompilerHintsOffset + kIntSize; | 7708 kCompilerHintsOffset + kIntSize; |
| 7691 | 7709 |
| 7692 static const int kCountersOffset = kFunctionTokenPositionOffset + kIntSize; | 7710 static const int kCountersOffset = kFunctionTokenPositionOffset + kIntSize; |
| 7693 static const int kOptCountAndBailoutReasonOffset = kCountersOffset + kIntSize; | 7711 static const int kOptCountAndBailoutReasonOffset = kCountersOffset + kIntSize; |
| 7694 | 7712 |
| 7695 static const int kProfilerTicksOffset = | 7713 static const int kProfilerTicksOffset = |
| 7696 kOptCountAndBailoutReasonOffset + kIntSize; | 7714 kOptCountAndBailoutReasonOffset + kIntSize; |
| 7697 static const int kAstNodeCountOffset = kProfilerTicksOffset + kIntSize; | 7715 static const int kAstNodeCountOffset = kProfilerTicksOffset + kIntSize; |
| 7698 | 7716 |
| 7699 // Total size. | 7717 // Total size. |
| 7700 static const int kSize = kAstNodeCountOffset + kIntSize; | 7718 static const int kSize = kAstNodeCountOffset + kIntSize; |
| 7701 | 7719 |
| 7702 #else | 7720 #else |
| 7703 #error Unknown byte ordering | 7721 #error Unknown byte ordering |
| 7704 #endif // Big endian | 7722 #endif // Big endian |
| 7705 #endif // 64-bit | 7723 #endif // 64-bit |
| 7706 | 7724 |
| 7707 | 7725 |
| 7708 static const int kAlignedSize = POINTER_SIZE_ALIGN(kSize); | 7726 static const int kAlignedSize = POINTER_SIZE_ALIGN(kSize); |
| 7709 | 7727 |
| 7710 typedef FixedBodyDescriptor<kCodeOffset, | 7728 typedef FixedBodyDescriptor<kCodeOffset, |
| 7711 kLastPointerFieldOffset + kPointerSize, kSize> | 7729 kLastPointerFieldOffset + kPointerSize, kSize> |
| 7712 BodyDescriptor; | 7730 BodyDescriptor; |
| 7713 typedef FixedBodyDescriptor<kNameOffset, | 7731 typedef FixedBodyDescriptor<kNameOffset, |
| 7714 kLastPointerFieldOffset + kPointerSize, kSize> | 7732 kLastPointerFieldOffset + kPointerSize, kSize> |
| 7715 BodyDescriptorWeakCode; | 7733 BodyDescriptorWeakCode; |
| 7716 | 7734 |
| 7717 // Bit positions in start_position_and_type. | 7735 // Bit positions in start_position_and_type and |
| 7718 // The source code start position is in the 30 most significant bits of | 7736 // end_position_and_is_blackboxed. |
| 7719 // the start_position_and_type field. | 7737 // The source code position is in the 30 most significant bits of |
| 7738 // the field. |
| 7720 static const int kIsNamedExpressionBit = 0; | 7739 static const int kIsNamedExpressionBit = 0; |
| 7721 static const int kIsTopLevelBit = 1; | 7740 static const int kIsTopLevelBit = 1; |
| 7722 static const int kStartPositionShift = 2; | 7741 static const int kIsBlackboxedBit = 0; |
| 7723 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); | 7742 static const int kIsBlackboxedComputedBit = 1; |
| 7743 static const int kPositionShift = 2; |
| 7744 static const int kPositionMask = ~((1 << kPositionShift) - 1); |
| 7724 | 7745 |
| 7725 // Bit positions in compiler_hints. | 7746 // Bit positions in compiler_hints. |
| 7726 enum CompilerHints { | 7747 enum CompilerHints { |
| 7727 // byte 0 | 7748 // byte 0 |
| 7728 kAllowLazyCompilation, | 7749 kAllowLazyCompilation, |
| 7729 kMarkedForTierUp, | 7750 kMarkedForTierUp, |
| 7730 kOptimizationDisabled, | 7751 kOptimizationDisabled, |
| 7731 kHasDuplicateParameters, | 7752 kHasDuplicateParameters, |
| 7732 kNative, | 7753 kNative, |
| 7733 kStrictModeFunction, | 7754 kStrictModeFunction, |
| (...skipping 3963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11697 } | 11718 } |
| 11698 }; | 11719 }; |
| 11699 | 11720 |
| 11700 | 11721 |
| 11701 } // NOLINT, false-positive due to second-order macros. | 11722 } // NOLINT, false-positive due to second-order macros. |
| 11702 } // NOLINT, false-positive due to second-order macros. | 11723 } // NOLINT, false-positive due to second-order macros. |
| 11703 | 11724 |
| 11704 #include "src/objects/object-macros-undef.h" | 11725 #include "src/objects/object-macros-undef.h" |
| 11705 | 11726 |
| 11706 #endif // V8_OBJECTS_H_ | 11727 #endif // V8_OBJECTS_H_ |
| OLD | NEW |