Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Side by Side Diff: src/objects.h

Issue 2633803002: [inspector] implemented blackboxing inside v8 (Closed)
Patch Set: fixed tests Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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_
OLDNEW
« no previous file with comments | « src/inspector/v8-debugger-script.cc ('k') | src/objects.cc » ('j') | src/objects.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698