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

Unified Diff: src/objects.h

Issue 2172583002: [interpreter] Add OSR nesting level to bytecode header. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add TODO. Created 4 years, 5 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/heap/heap.cc ('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 1ef9703be013bb7790d1c1f494bb60ad0ea52e53..55b47394e572d94f070742be8e120f102cdf3725 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -4517,6 +4517,10 @@ class BytecodeArray : public FixedArrayBase {
inline int interrupt_budget() const;
inline void set_interrupt_budget(int interrupt_budget);
+ // Accessors for OSR loop nesting level.
+ inline int osr_loop_nesting_level() const;
+ inline void set_osr_loop_nesting_level(int depth);
+
// Accessors for the constant pool.
DECL_ACCESSORS(constant_pool, FixedArray)
@@ -4556,7 +4560,10 @@ class BytecodeArray : public FixedArrayBase {
static const int kFrameSizeOffset = kSourcePositionTableOffset + kPointerSize;
static const int kParameterSizeOffset = kFrameSizeOffset + kIntSize;
static const int kInterruptBudgetOffset = kParameterSizeOffset + kIntSize;
- static const int kHeaderSize = kInterruptBudgetOffset + kIntSize;
+ // TODO(4764): The OSR nesting level is guaranteed to be in [0;6] bounds and
+ // could potentially be merged with another field (e.g. parameter_size).
+ static const int kOSRNestingLevelOffset = kInterruptBudgetOffset + kIntSize;
+ static const int kHeaderSize = kOSRNestingLevelOffset + kIntSize;
// Maximal memory consumption for a single BytecodeArray.
static const int kMaxSize = 512 * MB;
@@ -5358,10 +5365,6 @@ class Code: public HeapObject {
static Handle<WeakCell> WeakCellFor(Handle<Code> code);
WeakCell* CachedWeakCell();
- // Max loop nesting marker used to postpose OSR. We don't take loop
- // nesting that is deeper than 5 levels into account.
- static const int kMaxLoopNestingMarker = 6;
-
static const int kConstantPoolSize =
FLAG_enable_embedded_constant_pool ? kIntSize : 0;
@@ -5465,7 +5468,6 @@ class Code: public HeapObject {
kIsCrankshaftedBit + 1, 27> {}; // NOLINT
class AllowOSRAtLoopNestingLevelField: public BitField<int,
kIsCrankshaftedBit + 1 + 27, 4> {}; // NOLINT
- STATIC_ASSERT(AllowOSRAtLoopNestingLevelField::kMax >= kMaxLoopNestingMarker);
static const int kArgumentsBits = 16;
static const int kMaxArguments = (1 << kArgumentsBits) - 1;
@@ -5537,6 +5539,12 @@ class AbstractCode : public HeapObject {
DECLARE_CAST(AbstractCode)
inline Code* GetCode();
inline BytecodeArray* GetBytecodeArray();
+
+ // Max loop nesting marker used to postpose OSR. We don't take loop
+ // nesting that is deeper than 5 levels into account.
+ static const int kMaxLoopNestingMarker = 6;
+ STATIC_ASSERT(Code::AllowOSRAtLoopNestingLevelField::kMax >=
+ kMaxLoopNestingMarker);
};
// Dependent code is a singly linked list of fixed arrays. Each array contains
« no previous file with comments | « src/heap/heap.cc ('k') | src/objects-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698