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

Side by Side Diff: src/objects.h

Issue 2274823002: Add flags to FrameArray (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@frame-array
Patch Set: Rebase Created 4 years, 4 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
« no previous file with comments | « src/messages.cc ('k') | src/objects.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 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 2914 matching lines...) Expand 10 before | Expand all | Expand 10 after
2925 static const int kFirstIndex = 1; 2925 static const int kFirstIndex = 1;
2926 DISALLOW_IMPLICIT_CONSTRUCTORS(ArrayList); 2926 DISALLOW_IMPLICIT_CONSTRUCTORS(ArrayList);
2927 }; 2927 };
2928 2928
2929 #define FRAME_ARRAY_FIELD_LIST(V) \ 2929 #define FRAME_ARRAY_FIELD_LIST(V) \
2930 V(WasmObject, Object) \ 2930 V(WasmObject, Object) \
2931 V(WasmFunctionIndex, Smi) \ 2931 V(WasmFunctionIndex, Smi) \
2932 V(Receiver, Object) \ 2932 V(Receiver, Object) \
2933 V(Function, JSFunction) \ 2933 V(Function, JSFunction) \
2934 V(Code, AbstractCode) \ 2934 V(Code, AbstractCode) \
2935 V(Offset, Smi) 2935 V(Offset, Smi) \
2936 V(Flags, Smi)
2936 2937
2937 // Container object for data collected during simple stack trace captures. 2938 // Container object for data collected during simple stack trace captures.
2938 class FrameArray : public FixedArray { 2939 class FrameArray : public FixedArray {
2939 public: 2940 public:
2940 #define DECLARE_FRAME_ARRAY_ACCESSORS(name, type) \ 2941 #define DECLARE_FRAME_ARRAY_ACCESSORS(name, type) \
2941 inline type* name(int frame_ix) const; \ 2942 inline type* name(int frame_ix) const; \
2942 inline void Set##name(int frame_ix, type* value); 2943 inline void Set##name(int frame_ix, type* value);
2943 FRAME_ARRAY_FIELD_LIST(DECLARE_FRAME_ARRAY_ACCESSORS) 2944 FRAME_ARRAY_FIELD_LIST(DECLARE_FRAME_ARRAY_ACCESSORS)
2944 #undef DECLARE_FRAME_ARRAY_ACCESSORS 2945 #undef DECLARE_FRAME_ARRAY_ACCESSORS
2945 2946
2946 inline void SetSloppyFrameCount(int count);
2947 inline int SloppyFrameCount() const;
2948
2949 inline bool IsWasmFrame(int frame_ix) const; 2947 inline bool IsWasmFrame(int frame_ix) const;
2950 inline int FrameCount() const; 2948 inline int FrameCount() const;
2951 2949
2952 void ShrinkToFit(); 2950 void ShrinkToFit();
2953 2951
2952 // Flags.
2953 static const int kIsWasmFrame = 1 << 0;
2954 static const int kIsStrict = 1 << 1;
2955 static const int kForceConstructor = 1 << 2;
2956
2954 static Handle<FrameArray> AppendJSFrame(Handle<FrameArray> in, 2957 static Handle<FrameArray> AppendJSFrame(Handle<FrameArray> in,
2955 Handle<Object> receiver, 2958 Handle<Object> receiver,
2956 Handle<JSFunction> function, 2959 Handle<JSFunction> function,
2957 Handle<AbstractCode> code, 2960 Handle<AbstractCode> code, int offset,
2958 int offset); 2961 int flags);
2959 static Handle<FrameArray> AppendWasmFrame(Handle<FrameArray> in, 2962 static Handle<FrameArray> AppendWasmFrame(Handle<FrameArray> in,
2960 Handle<Object> wasm_object, 2963 Handle<Object> wasm_object,
2961 int wasm_function_index, 2964 int wasm_function_index,
2962 Handle<AbstractCode> code, 2965 Handle<AbstractCode> code,
2963 int offset); 2966 int offset, int flags);
2964 2967
2965 DECLARE_CAST(FrameArray) 2968 DECLARE_CAST(FrameArray)
2966 2969
2967 private: 2970 private:
2968 // The underlying fixed array embodies a captured stack trace. The number of 2971 // The underlying fixed array embodies a captured stack trace. Frame i
2969 // sloppy frames is stored at array[kFirstIndex]. Frame i occupies indices 2972 // occupies indices
2973 //
2970 // kFirstIndex + 1 + [i * kElementsPerFrame, (i + 1) * kElementsPerFrame[, 2974 // kFirstIndex + 1 + [i * kElementsPerFrame, (i + 1) * kElementsPerFrame[,
2975 //
2971 // with internal offsets as below: 2976 // with internal offsets as below:
2972 2977
2973 static const int kWasmObjectOffset = 0; 2978 static const int kWasmObjectOffset = 0;
2974 static const int kWasmFunctionIndexOffset = 1; 2979 static const int kWasmFunctionIndexOffset = 1;
2975 2980
2976 static const int kReceiverOffset = 0; 2981 static const int kReceiverOffset = 0;
2977 static const int kFunctionOffset = 1; 2982 static const int kFunctionOffset = 1;
2978 2983
2979 static const int kCodeOffset = 2; 2984 static const int kCodeOffset = 2;
2980 static const int kOffsetOffset = 3; 2985 static const int kOffsetOffset = 3;
2981 2986
2982 static const int kElementsPerFrame = 4; 2987 static const int kFlagsOffset = 4;
2988
2989 static const int kElementsPerFrame = 5;
2983 2990
2984 // Array layout indices. 2991 // Array layout indices.
2985 2992
2986 static const int kFrameCountIndex = 0; 2993 static const int kFrameCountIndex = 0;
2987 static const int kSloppyFramesIndex = 1; 2994 static const int kFirstIndex = 1;
2988 static const int kFirstIndex = 2;
2989 2995
2990 static int LengthFor(int frame_count) { 2996 static int LengthFor(int frame_count) {
2991 return kFirstIndex + frame_count * kElementsPerFrame; 2997 return kFirstIndex + frame_count * kElementsPerFrame;
2992 } 2998 }
2993 2999
2994 static Handle<FrameArray> EnsureSpace(Handle<FrameArray> array, int length); 3000 static Handle<FrameArray> EnsureSpace(Handle<FrameArray> array, int length);
2995 3001
2996 friend class Factory; 3002 friend class Factory;
2997 DISALLOW_IMPLICIT_CONSTRUCTORS(FrameArray); 3003 DISALLOW_IMPLICIT_CONSTRUCTORS(FrameArray);
2998 }; 3004 };
(...skipping 8168 matching lines...) Expand 10 before | Expand all | Expand 10 after
11167 } 11173 }
11168 return value; 11174 return value;
11169 } 11175 }
11170 }; 11176 };
11171 11177
11172 11178
11173 } // NOLINT, false-positive due to second-order macros. 11179 } // NOLINT, false-positive due to second-order macros.
11174 } // NOLINT, false-positive due to second-order macros. 11180 } // NOLINT, false-positive due to second-order macros.
11175 11181
11176 #endif // V8_OBJECTS_H_ 11182 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/messages.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698