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

Unified Diff: src/objects.h

Issue 1030353003: Enable constant pool support. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 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
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index cf9184ffe128f7da53051fe2939ee2e13a057f9d..4ff57aad64925038c932f07f9d5b6c48e5fa5107 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -5257,6 +5257,11 @@ class Code: public HeapObject {
inline int prologue_offset() const;
inline void set_prologue_offset(int offset);
+ // [constant_pool offset]: Offset of the constant pool.
+ // Valid for FLAG_enable_embedded_constant_pool only
+ inline int constant_pool_offset() const;
+ inline void set_constant_pool_offset(int offset);
+
// Unchecked accessors to be used during GC.
inline ByteArray* unchecked_relocation_info();
@@ -5394,7 +5399,8 @@ class Code: public HeapObject {
inline void set_marked_for_deoptimization(bool flag);
// [constant_pool]: The constant pool for this function.
- inline ConstantPoolArray* constant_pool();
+ inline Address constant_pool();
+ // Valid for FLAG_enable_ool_constant_pool only
inline void set_constant_pool(Object* constant_pool);
// Get the safepoint entry for the given pc.
@@ -5597,6 +5603,10 @@ class Code: public HeapObject {
// nesting that is deeper than 5 levels into account.
static const int kMaxLoopNestingMarker = 6;
+ static const int kOOLCPSize =
+ FLAG_enable_ool_constant_pool ? kPointerSize : 0;
+ static const int kECPSize = FLAG_enable_embedded_constant_pool ? kIntSize : 0;
+
// Layout description.
static const int kRelocationInfoOffset = HeapObject::kHeaderSize;
static const int kHandlerTableOffset = kRelocationInfoOffset + kPointerSize;
@@ -5615,16 +5625,22 @@ class Code: public HeapObject {
kKindSpecificFlags1Offset + kIntSize;
// Note: We might be able to squeeze this into the flags above.
static const int kPrologueOffset = kKindSpecificFlags2Offset + kIntSize;
- static const int kConstantPoolOffset = kPrologueOffset + kIntSize;
+ static const int kOOLConstantPoolOffset = kPrologueOffset + kIntSize;
rmcilroy 2015/04/08 12:38:55 Let's just have a single field here which points t
MTBrandyberry 2015/05/07 20:38:32 Acknowledged.
+ static const int kEmbeddedConstantPoolOffset =
+ kOOLConstantPoolOffset + kOOLCPSize;
+ static const int kHeaderPaddingStart = kEmbeddedConstantPoolOffset + kECPSize;
- static const int kHeaderPaddingStart = kConstantPoolOffset + kPointerSize;
+ static const int kConstantPoolOffset =
+ kOOLCPSize ? kOOLConstantPoolOffset
+ : (kECPSize ? kEmbeddedConstantPoolOffset : 0);
// Add padding to align the instruction start following right after
// the Code object header.
static const int kHeaderSize =
(kHeaderPaddingStart + kCodeAlignmentMask) & ~kCodeAlignmentMask;
// Ensure that the slot for the constant pool pointer is aligned.
- STATIC_ASSERT((kConstantPoolOffset & kPointerAlignmentMask) == 0);
+ STATIC_ASSERT(kOOLCPSize == 0 ||
+ (kOOLConstantPoolOffset & kPointerAlignmentMask) == 0);
// Byte offsets within kKindSpecificFlags1Offset.
static const int kOptimizableOffset = kKindSpecificFlags1Offset;

Powered by Google App Engine
This is Rietveld 408576698