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

Unified Diff: src/objects.h

Issue 2649873002: Split some SharedFunctionInfo's compiler hints off into debugger hints. (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ia32/macro-assembler-ia32.h ('k') | src/objects-inl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index 9a22b7b683b9dee640b664817e03a6bd2b3e176b..9cf3da0ab9260453d3ce3b365ce716cf59a102c4 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -7292,12 +7292,12 @@ class SharedFunctionInfo: public HeapObject {
inline bool IsApiFunction();
inline FunctionTemplateInfo* get_api_func_data();
inline void set_api_func_data(FunctionTemplateInfo* data);
- inline bool HasBytecodeArray();
- inline BytecodeArray* bytecode_array();
+ inline bool HasBytecodeArray() const;
+ inline BytecodeArray* bytecode_array() const;
inline void set_bytecode_array(BytecodeArray* bytecode);
inline void ClearBytecodeArray();
- inline bool HasAsmWasmData();
- inline FixedArray* asm_wasm_data();
+ inline bool HasAsmWasmData() const;
+ inline FixedArray* asm_wasm_data() const;
inline void set_asm_wasm_data(FixedArray* data);
inline void ClearAsmWasmData();
@@ -7335,15 +7335,41 @@ class SharedFunctionInfo: public HeapObject {
inline void set_start_position_and_type(int value);
// The function is subject to debugging if a debug info is attached.
- inline bool HasDebugInfo();
- inline DebugInfo* GetDebugInfo();
+ inline bool HasDebugInfo() const;
+ inline DebugInfo* GetDebugInfo() const;
// A function has debug code if the compiled code has debug break slots.
- inline bool HasDebugCode();
+ inline bool HasDebugCode() const;
// [debug info]: Debug information.
DECL_ACCESSORS(debug_info, Object)
+ // Bit field containing various information collected for debugging.
+ // This field is either stored on the kDebugInfo slot or inside the
+ // debug info struct.
+ inline int debugger_hints() const;
+ inline void set_debugger_hints(int value);
+
+ // Indicates that the function was created by the Function function.
+ // Though it's anonymous, toString should treat it as if it had the name
+ // "anonymous". We don't set the name itself so that the system does not
+ // see a binding for it.
+ DECL_BOOLEAN_ACCESSORS(name_should_print_as_anonymous)
+
+ // Indicates that the function is either an anonymous expression
+ // or an arrow function (the name field can be set through the API,
+ // which does not change this flag).
+ DECL_BOOLEAN_ACCESSORS(is_anonymous_expression)
+
+ // Indicates that the the shared function info is deserialized from cache.
+ DECL_BOOLEAN_ACCESSORS(deserialized)
+
+ // Indicates that the function cannot cause side-effects.
+ DECL_BOOLEAN_ACCESSORS(has_no_side_effect)
+
+ // Indicates that |has_no_side_effect| has been computed and set.
+ DECL_BOOLEAN_ACCESSORS(computed_has_no_side_effect)
+
// The function's name if it is non-empty, otherwise the inferred name.
String* DebugName();
@@ -7422,17 +7448,6 @@ class SharedFunctionInfo: public HeapObject {
// Indicate that this function should always be inlined in optimized code.
DECL_BOOLEAN_ACCESSORS(force_inline)
- // Indicates that the function was created by the Function function.
- // Though it's anonymous, toString should treat it as if it had the name
- // "anonymous". We don't set the name itself so that the system does not
- // see a binding for it.
- DECL_BOOLEAN_ACCESSORS(name_should_print_as_anonymous)
-
- // Indicates that the function is either an anonymous expression
- // or an arrow function (the name field can be set through the API,
- // which does not change this flag).
- DECL_BOOLEAN_ACCESSORS(is_anonymous_expression)
-
// Indicates that code for this function must be compiled through the
// Ignition / TurboFan pipeline, and is unsupported by
// FullCodegen / Crankshaft.
@@ -7444,9 +7459,6 @@ class SharedFunctionInfo: public HeapObject {
// Indicates that this function is an asm function.
DECL_BOOLEAN_ACCESSORS(asm_function)
- // Indicates that the the shared function info is deserialized from cache.
- DECL_BOOLEAN_ACCESSORS(deserialized)
-
// Whether this function was created from a FunctionDeclaration.
DECL_BOOLEAN_ACCESSORS(is_declaration)
@@ -7456,12 +7468,6 @@ class SharedFunctionInfo: public HeapObject {
// Indicates that asm->wasm conversion failed and should not be re-attempted.
DECL_BOOLEAN_ACCESSORS(is_asm_wasm_broken)
- // Indicates that the function cannot cause side-effects.
- DECL_BOOLEAN_ACCESSORS(has_no_side_effect)
-
- // Indicates that |has_no_side_effect| has been computed and set.
- DECL_BOOLEAN_ACCESSORS(computed_has_no_side_effect)
-
inline FunctionKind kind() const;
inline void set_kind(FunctionKind kind);
@@ -7736,23 +7742,30 @@ class SharedFunctionInfo: public HeapObject {
// byte 1
kForceInline,
kIsAsmFunction,
- kIsAnonymousExpression,
- kNameShouldPrintAsAnonymous,
kMustUseIgnitionTurbo,
kDontFlush,
kIsDeclaration,
+ kIsAsmWasmBroken,
+
+ kUnused1, // Unused fields.
+ kUnused2,
- kUnused, // unused.
// byte 2
kFunctionKind,
// rest of byte 2 and first two bits of byte 3 are used by FunctionKind
// byte 3
- kDeserialized = kFunctionKind + 10,
- kIsAsmWasmBroken,
+ kCompilerHintsCount = kFunctionKind + 10, // Pseudo entry
+ };
+
+ // Bit positions in debugger_hints.
+ enum DebuggerHints {
+ kIsAnonymousExpression,
+ kNameShouldPrintAsAnonymous,
+ kDeserialized,
kHasNoSideEffect,
kComputedHasNoSideEffect,
- kCompilerHintsCount, // Pseudo entry
};
+
// kFunctionKind has to be byte-aligned
STATIC_ASSERT((kFunctionKind % kBitsPerByte) == 0);
@@ -11490,6 +11503,9 @@ class DebugInfo: public Struct {
// The shared function info for the source being debugged.
DECL_ACCESSORS(shared, SharedFunctionInfo)
+ // Bit field containing various information collected for debugging.
+ DECL_INT_ACCESSORS(debugger_hints)
+
DECL_ACCESSORS(debug_bytecode_array, Object)
// Fixed array holding status information for each active break point.
DECL_ACCESSORS(break_points, FixedArray)
@@ -11510,8 +11526,6 @@ class DebugInfo: public Struct {
// Get the number of break points for this function.
int GetBreakPointCount();
- static Smi* uninitialized() { return Smi::kZero; }
-
inline bool HasDebugBytecodeArray();
inline bool HasDebugCode();
@@ -11526,8 +11540,10 @@ class DebugInfo: public Struct {
DECLARE_VERIFIER(DebugInfo)
static const int kSharedFunctionInfoIndex = Struct::kHeaderSize;
- static const int kDebugBytecodeArrayIndex =
+ static const int kDebuggerHintsIndex =
kSharedFunctionInfoIndex + kPointerSize;
+ static const int kDebugBytecodeArrayIndex =
+ kDebuggerHintsIndex + kPointerSize;
static const int kBreakPointsStateIndex =
kDebugBytecodeArrayIndex + kPointerSize;
static const int kSize = kBreakPointsStateIndex + kPointerSize;
« no previous file with comments | « src/ia32/macro-assembler-ia32.h ('k') | src/objects-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698