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

Side by Side Diff: src/objects.h

Issue 1415783006: Revert of [runtime] Fix ES6 9.2.1 [[Call]] when encountering a classConstructor. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « src/mips64/code-stubs-mips64.cc ('k') | src/ppc/builtins-ppc.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 6910 matching lines...) Expand 10 before | Expand all | Expand 10 after
6921 static const int kCountersOffset = 6921 static const int kCountersOffset =
6922 kOptCountAndBailoutReasonOffset + kPointerSize; 6922 kOptCountAndBailoutReasonOffset + kPointerSize;
6923 static const int kAstNodeCountOffset = 6923 static const int kAstNodeCountOffset =
6924 kCountersOffset + kPointerSize; 6924 kCountersOffset + kPointerSize;
6925 static const int kProfilerTicksOffset = 6925 static const int kProfilerTicksOffset =
6926 kAstNodeCountOffset + kPointerSize; 6926 kAstNodeCountOffset + kPointerSize;
6927 6927
6928 // Total size. 6928 // Total size.
6929 static const int kSize = kProfilerTicksOffset + kPointerSize; 6929 static const int kSize = kProfilerTicksOffset + kPointerSize;
6930 #else 6930 #else
6931 // The only reason to use smi fields instead of int fields is to allow 6931 // The only reason to use smi fields instead of int fields
6932 // iteration without maps decoding during garbage collections. 6932 // is to allow iteration without maps decoding during
6933 // To avoid wasting space on 64-bit architectures we use the following trick: 6933 // garbage collections.
6934 // we group integer fields into pairs 6934 // To avoid wasting space on 64-bit architectures we use
6935 // The least significant integer in each pair is shifted left by 1. By doing 6935 // the following trick: we group integer fields into pairs
6936 // this we guarantee that LSB of each kPointerSize aligned word is not set and 6936 // The least significant integer in each pair is shifted left by 1.
6937 // thus this word cannot be treated as pointer to HeapObject during old space 6937 // By doing this we guarantee that LSB of each kPointerSize aligned
6938 // traversal. 6938 // word is not set and thus this word cannot be treated as pointer
6939 // to HeapObject during old space traversal.
6939 #if V8_TARGET_LITTLE_ENDIAN 6940 #if V8_TARGET_LITTLE_ENDIAN
6940 static const int kLengthOffset = kLastPointerFieldOffset + kPointerSize; 6941 static const int kLengthOffset = kLastPointerFieldOffset + kPointerSize;
6941 static const int kFormalParameterCountOffset = 6942 static const int kFormalParameterCountOffset =
6942 kLengthOffset + kIntSize; 6943 kLengthOffset + kIntSize;
6943 6944
6944 static const int kExpectedNofPropertiesOffset = 6945 static const int kExpectedNofPropertiesOffset =
6945 kFormalParameterCountOffset + kIntSize; 6946 kFormalParameterCountOffset + kIntSize;
6946 static const int kNumLiteralsOffset = 6947 static const int kNumLiteralsOffset =
6947 kExpectedNofPropertiesOffset + kIntSize; 6948 kExpectedNofPropertiesOffset + kIntSize;
6948 6949
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
7010 // Bit positions in start_position_and_type. 7011 // Bit positions in start_position_and_type.
7011 // The source code start position is in the 30 most significant bits of 7012 // The source code start position is in the 30 most significant bits of
7012 // the start_position_and_type field. 7013 // the start_position_and_type field.
7013 static const int kIsExpressionBit = 0; 7014 static const int kIsExpressionBit = 0;
7014 static const int kIsTopLevelBit = 1; 7015 static const int kIsTopLevelBit = 1;
7015 static const int kStartPositionShift = 2; 7016 static const int kStartPositionShift = 2;
7016 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); 7017 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1);
7017 7018
7018 // Bit positions in compiler_hints. 7019 // Bit positions in compiler_hints.
7019 enum CompilerHints { 7020 enum CompilerHints {
7020 // byte 0
7021 kAllowLazyCompilation, 7021 kAllowLazyCompilation,
7022 kAllowLazyCompilationWithoutContext, 7022 kAllowLazyCompilationWithoutContext,
7023 kOptimizationDisabled, 7023 kOptimizationDisabled,
7024 kNative, 7024 kNative,
7025 kStrictModeFunction, 7025 kStrictModeFunction,
7026 kStrongModeFunction, 7026 kStrongModeFunction,
7027 kUsesArguments, 7027 kUsesArguments,
7028 kNeedsHomeObject, 7028 kNeedsHomeObject,
7029 // byte 1
7030 kHasDuplicateParameters, 7029 kHasDuplicateParameters,
7031 kForceInline, 7030 kForceInline,
7032 kBoundFunction, 7031 kBoundFunction,
7033 kIsAnonymous, 7032 kIsAnonymous,
7034 kNameShouldPrintAsAnonymous, 7033 kNameShouldPrintAsAnonymous,
7035 kIsFunction, 7034 kIsFunction,
7036 kDontCrankshaft, 7035 kDontCrankshaft,
7037 kDontFlush, 7036 kDontFlush,
7038 // byte 2 7037 kIsArrow,
7039 kFunctionKind,
7040 kIsArrow = kFunctionKind,
7041 kIsGenerator, 7038 kIsGenerator,
7042 kIsConciseMethod, 7039 kIsConciseMethod,
7043 kIsAccessorFunction, 7040 kIsAccessorFunction,
7044 kIsDefaultConstructor, 7041 kIsDefaultConstructor,
7045 kIsSubclassConstructor, 7042 kIsSubclassConstructor,
7046 kIsBaseConstructor, 7043 kIsBaseConstructor,
7047 kIsInObjectLiteral, 7044 kInClassLiteral,
7048 // byte 3
7049 kIsAsmFunction, 7045 kIsAsmFunction,
7050 kDeserialized, 7046 kDeserialized,
7051 kNeverCompiled, 7047 kNeverCompiled,
7052 kCompilerHintsCount, // Pseudo entry 7048 kCompilerHintsCount // Pseudo entry
7053 }; 7049 };
7054 // Add hints for other modes when they're added. 7050 // Add hints for other modes when they're added.
7055 STATIC_ASSERT(LANGUAGE_END == 3); 7051 STATIC_ASSERT(LANGUAGE_END == 3);
7056 // kFunctionKind has to be byte-aligned
7057 STATIC_ASSERT((kFunctionKind % kBitsPerByte) == 0);
7058 // Make sure that FunctionKind and byte 2 are in sync:
7059 #define ASSERT_FUNCTION_KIND_ORDER(functionKind, compilerFunctionKind) \
7060 STATIC_ASSERT(FunctionKind::functionKind == \
7061 1 << (compilerFunctionKind - kFunctionKind))
7062 ASSERT_FUNCTION_KIND_ORDER(kArrowFunction, kIsArrow);
7063 ASSERT_FUNCTION_KIND_ORDER(kGeneratorFunction, kIsGenerator);
7064 ASSERT_FUNCTION_KIND_ORDER(kConciseMethod, kIsConciseMethod);
7065 ASSERT_FUNCTION_KIND_ORDER(kAccessorFunction, kIsAccessorFunction);
7066 ASSERT_FUNCTION_KIND_ORDER(kDefaultConstructor, kIsDefaultConstructor);
7067 ASSERT_FUNCTION_KIND_ORDER(kSubclassConstructor, kIsSubclassConstructor);
7068 ASSERT_FUNCTION_KIND_ORDER(kBaseConstructor, kIsBaseConstructor);
7069 ASSERT_FUNCTION_KIND_ORDER(kInObjectLiteral, kIsInObjectLiteral);
7070 #undef ASSERT_FUNCTION_KIND_ORDER
7071 7052
7072 class FunctionKindBits : public BitField<FunctionKind, kIsArrow, 8> {}; 7053 class FunctionKindBits : public BitField<FunctionKind, kIsArrow, 8> {};
7073 7054
7074 class DeoptCountBits : public BitField<int, 0, 4> {}; 7055 class DeoptCountBits : public BitField<int, 0, 4> {};
7075 class OptReenableTriesBits : public BitField<int, 4, 18> {}; 7056 class OptReenableTriesBits : public BitField<int, 4, 18> {};
7076 class ICAgeBits : public BitField<int, 22, 8> {}; 7057 class ICAgeBits : public BitField<int, 22, 8> {};
7077 7058
7078 class OptCountBits : public BitField<int, 0, 22> {}; 7059 class OptCountBits : public BitField<int, 0, 22> {};
7079 class DisabledOptimizationReasonBits : public BitField<int, 22, 8> {}; 7060 class DisabledOptimizationReasonBits : public BitField<int, 22, 8> {};
7080 7061
(...skipping 19 matching lines...) Expand all
7100 (kStrictModeFunction + kCompilerHintsSmiTagSize) % kBitsPerByte; 7081 (kStrictModeFunction + kCompilerHintsSmiTagSize) % kBitsPerByte;
7101 static const int kStrongModeBitWithinByte = 7082 static const int kStrongModeBitWithinByte =
7102 (kStrongModeFunction + kCompilerHintsSmiTagSize) % kBitsPerByte; 7083 (kStrongModeFunction + kCompilerHintsSmiTagSize) % kBitsPerByte;
7103 7084
7104 static const int kNativeBitWithinByte = 7085 static const int kNativeBitWithinByte =
7105 (kNative + kCompilerHintsSmiTagSize) % kBitsPerByte; 7086 (kNative + kCompilerHintsSmiTagSize) % kBitsPerByte;
7106 7087
7107 static const int kBoundBitWithinByte = 7088 static const int kBoundBitWithinByte =
7108 (kBoundFunction + kCompilerHintsSmiTagSize) % kBitsPerByte; 7089 (kBoundFunction + kCompilerHintsSmiTagSize) % kBitsPerByte;
7109 7090
7110 static const int kClassConstructorBitsWithinByte =
7111 FunctionKind::kClassConstructor << kCompilerHintsSmiTagSize;
7112 STATIC_ASSERT(kClassConstructorBitsWithinByte < (1 << kBitsPerByte));
7113
7114 #if defined(V8_TARGET_LITTLE_ENDIAN) 7091 #if defined(V8_TARGET_LITTLE_ENDIAN)
7115 #define BYTE_OFFSET(compiler_hint) \ 7092 static const int kStrictModeByteOffset = kCompilerHintsOffset +
7116 kCompilerHintsOffset + \ 7093 (kStrictModeFunction + kCompilerHintsSmiTagSize) / kBitsPerByte;
7117 (compiler_hint + kCompilerHintsSmiTagSize) / kBitsPerByte 7094 static const int kStrongModeByteOffset =
7095 kCompilerHintsOffset +
7096 (kStrongModeFunction + kCompilerHintsSmiTagSize) / kBitsPerByte;
7097 static const int kNativeByteOffset = kCompilerHintsOffset +
7098 (kNative + kCompilerHintsSmiTagSize) / kBitsPerByte;
7099 static const int kBoundByteOffset =
7100 kCompilerHintsOffset +
7101 (kBoundFunction + kCompilerHintsSmiTagSize) / kBitsPerByte;
7118 #elif defined(V8_TARGET_BIG_ENDIAN) 7102 #elif defined(V8_TARGET_BIG_ENDIAN)
7119 #define BYTE_OFFSET(compiler_hint) \ 7103 static const int kStrictModeByteOffset = kCompilerHintsOffset +
7120 kCompilerHintsOffset + +(kCompilerHintsSize - 1) - \ 7104 (kCompilerHintsSize - 1) -
7121 ((kStrictModeFunction + kCompilerHintsSmiTagSize) / kBitsPerByte) 7105 ((kStrictModeFunction + kCompilerHintsSmiTagSize) / kBitsPerByte);
7106 static const int kStrongModeByteOffset =
7107 kCompilerHintsOffset + (kCompilerHintsSize - 1) -
7108 ((kStrongModeFunction + kCompilerHintsSmiTagSize) / kBitsPerByte);
7109 static const int kNativeByteOffset = kCompilerHintsOffset +
7110 (kCompilerHintsSize - 1) -
7111 ((kNative + kCompilerHintsSmiTagSize) / kBitsPerByte);
7112 static const int kBoundByteOffset =
7113 kCompilerHintsOffset + (kCompilerHintsSize - 1) -
7114 ((kBoundFunction + kCompilerHintsSmiTagSize) / kBitsPerByte);
7122 #else 7115 #else
7123 #error Unknown byte ordering 7116 #error Unknown byte ordering
7124 #endif 7117 #endif
7125 static const int kStrictModeByteOffset = BYTE_OFFSET(kStrictModeFunction);
7126 static const int kStrongModeByteOffset = BYTE_OFFSET(kStrongModeFunction);
7127 static const int kNativeByteOffset = BYTE_OFFSET(kNative);
7128 static const int kBoundByteOffset = BYTE_OFFSET(kBoundFunction);
7129 static const int kFunctionKindByteOffset = BYTE_OFFSET(kFunctionKind);
7130 #undef BYTE_OFFSET
7131 7118
7132 private: 7119 private:
7133 // Returns entry from optimized code map for specified context and OSR entry. 7120 // Returns entry from optimized code map for specified context and OSR entry.
7134 // The result is either kNotFound, kSharedCodeIndex for context-independent 7121 // The result is either kNotFound, kSharedCodeIndex for context-independent
7135 // entry or a start index of the context-dependent entry. 7122 // entry or a start index of the context-dependent entry.
7136 int SearchOptimizedCodeMapEntry(Context* native_context, 7123 int SearchOptimizedCodeMapEntry(Context* native_context,
7137 BailoutId osr_ast_id); 7124 BailoutId osr_ast_id);
7138 7125
7139 DISALLOW_IMPLICIT_CONSTRUCTORS(SharedFunctionInfo); 7126 DISALLOW_IMPLICIT_CONSTRUCTORS(SharedFunctionInfo);
7140 }; 7127 };
(...skipping 3710 matching lines...) Expand 10 before | Expand all | Expand 10 after
10851 // (elements + properties) in the current level. 10838 // (elements + properties) in the current level.
10852 int levelLength_ = 0; 10839 int levelLength_ = 0;
10853 10840
10854 DISALLOW_COPY_AND_ASSIGN(KeyAccumulator); 10841 DISALLOW_COPY_AND_ASSIGN(KeyAccumulator);
10855 }; 10842 };
10856 10843
10857 } // NOLINT, false-positive due to second-order macros. 10844 } // NOLINT, false-positive due to second-order macros.
10858 } // NOLINT, false-positive due to second-order macros. 10845 } // NOLINT, false-positive due to second-order macros.
10859 10846
10860 #endif // V8_OBJECTS_H_ 10847 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/mips64/code-stubs-mips64.cc ('k') | src/ppc/builtins-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698