Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 387afd602eec1390a71f1de30ac40d28614d946c..ec01ea4e1fcce490e34150471dfbee06ad72ca80 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -145,6 +145,7 @@ |
// - DebugInfo |
// - BreakPointInfo |
// - StackFrameInfo |
+// - SourcePositionTableWithFrameCache |
// - CodeCache |
// - PrototypeInfo |
// - Module |
@@ -1098,7 +1099,8 @@ template <class C> inline bool Is(Object* obj); |
V(ObjectHashSet) \ |
V(WeakHashTable) \ |
V(OrderedHashTable) \ |
- V(SloppyArgumentsElements) |
+ V(SloppyArgumentsElements) \ |
+ V(SourcePositionTableWithFrameCache) |
#define ODDBALL_LIST(V) \ |
V(Undefined, undefined_value) \ |
@@ -3294,8 +3296,10 @@ class BytecodeArray : public FixedArrayBase { |
DECL_ACCESSORS(handler_table, FixedArray) |
// Accessors for source position table containing mappings between byte code |
- // offset and source position. |
- DECL_ACCESSORS(source_position_table, ByteArray) |
+ // offset and source position or SourcePositionTableWithFrameCache. |
+ DECL_ACCESSORS(source_position_table, Object) |
+ |
+ inline ByteArray* SourcePositionTable(); |
DECLARE_CAST(BytecodeArray) |
@@ -3707,8 +3711,11 @@ class Code: public HeapObject { |
// [deoptimization_data]: Array containing data for deopt. |
DECL_ACCESSORS(deoptimization_data, FixedArray) |
- // [source_position_table]: ByteArray for the source positions table. |
- DECL_ACCESSORS(source_position_table, ByteArray) |
+ // [source_position_table]: ByteArray for the source positions table or |
+ // SourcePositionTableWithFrameCache. |
+ DECL_ACCESSORS(source_position_table, Object) |
+ |
+ inline ByteArray* SourcePositionTable(); |
// [trap_handler_index]: An index into the trap handler's master list of code |
// objects. |
@@ -4240,6 +4247,11 @@ class AbstractCode : public HeapObject { |
// Set the source position table. |
inline void set_source_position_table(ByteArray* source_position_table); |
+ inline Object* stack_frame_cache(); |
+ static void SetStackFrameCache(Handle<AbstractCode> abstract_code, |
+ Handle<UnseededNumberDictionary> cache); |
+ void DropStackFrameCache(); |
+ |
// Returns the size of instructions and the metadata. |
inline int SizeIncludingMetadata(); |
@@ -10147,6 +10159,22 @@ class StackFrameInfo : public Struct { |
DISALLOW_IMPLICIT_CONSTRUCTORS(StackFrameInfo); |
}; |
+class SourcePositionTableWithFrameCache : public Tuple2 { |
+ public: |
+ DECL_ACCESSORS(source_position_table, ByteArray) |
+ DECL_ACCESSORS(stack_frame_cache, UnseededNumberDictionary) |
+ |
+ DECLARE_CAST(SourcePositionTableWithFrameCache) |
+ |
+ static const int kSourcePositionTableIndex = Struct::kHeaderSize; |
+ static const int kStackFrameCacheIndex = |
+ kSourcePositionTableIndex + kPointerSize; |
+ static const int kSize = kStackFrameCacheIndex + kPointerSize; |
+ |
+ private: |
+ DISALLOW_IMPLICIT_CONSTRUCTORS(SourcePositionTableWithFrameCache); |
+}; |
+ |
#define VISITOR_SYNCHRONIZATION_TAGS_LIST(V) \ |
V(kStringTable, "string_table", "(Internalized strings)") \ |
V(kExternalStringsTable, "external_strings_table", "(External strings)") \ |