| Index: src/objects.h | 
| diff --git a/src/objects.h b/src/objects.h | 
| index ef3f31df4793aefb3cdfbc7012a9c889589b8fb7..3aa26e15413e63d89d26944e5e3e07ca1595f4d7 100644 | 
| --- a/src/objects.h | 
| +++ b/src/objects.h | 
| @@ -20,6 +20,7 @@ | 
| #include "src/list.h" | 
| #include "src/messages.h" | 
| #include "src/property-details.h" | 
| +#include "src/source-position.h" | 
| #include "src/unicode-decoder.h" | 
| #include "src/unicode.h" | 
| #include "src/zone/zone.h" | 
| @@ -4955,6 +4956,25 @@ class ByteArray: public FixedArrayBase { | 
| DISALLOW_IMPLICIT_CONSTRUCTORS(ByteArray); | 
| }; | 
|  | 
| +template <class T> | 
| +class PodArray : public ByteArray { | 
| + public: | 
| +  STATIC_ASSERT(std::is_pod<T>::value); | 
| +  T get(int index) { | 
| +    T result; | 
| +    copy_out(index * sizeof(T), reinterpret_cast<byte*>(&result), sizeof(T)); | 
| +    return result; | 
| +  } | 
| +  void set(int index, const T& value) { | 
| +    copy_in(index * sizeof(T), reinterpret_cast<const byte*>(&value), | 
| +            sizeof(T)); | 
| +  } | 
| +  int length() { return ByteArray::length() / sizeof(T); } | 
| +  DECLARE_CAST(PodArray<T>); | 
| + | 
| + private: | 
| +  DISALLOW_IMPLICIT_CONSTRUCTORS(PodArray<T>); | 
| +}; | 
|  | 
| // BytecodeArray represents a sequence of interpreter bytecodes. | 
| class BytecodeArray : public FixedArrayBase { | 
| @@ -5187,7 +5207,6 @@ TYPED_ARRAYS(FIXED_TYPED_ARRAY_TRAITS) | 
|  | 
| #undef FIXED_TYPED_ARRAY_TRAITS | 
|  | 
| - | 
| // DeoptimizationInputData is a fixed array used to hold the deoptimization | 
| // data for code generated by the Hydrogen/Lithium compiler.  It also | 
| // contains information about functions that were inlined.  If N different | 
| @@ -5206,7 +5225,8 @@ class DeoptimizationInputData: public FixedArray { | 
| static const int kOptimizationIdIndex = 5; | 
| static const int kSharedFunctionInfoIndex = 6; | 
| static const int kWeakCellCacheIndex = 7; | 
| -  static const int kFirstDeoptEntryIndex = 8; | 
| +  static const int kInliningPositionsIndex = 8; | 
| +  static const int kFirstDeoptEntryIndex = 9; | 
|  | 
| // Offsets of deopt entry elements relative to the start of the entry. | 
| static const int kAstIdRawOffset = 0; | 
| @@ -5228,6 +5248,7 @@ class DeoptimizationInputData: public FixedArray { | 
| DECLARE_ELEMENT_ACCESSORS(OptimizationId, Smi) | 
| DECLARE_ELEMENT_ACCESSORS(SharedFunctionInfo, Object) | 
| DECLARE_ELEMENT_ACCESSORS(WeakCellCache, Object) | 
| +  DECLARE_ELEMENT_ACCESSORS(InliningPositions, PodArray<InliningPosition>) | 
|  | 
| #undef DECLARE_ELEMENT_ACCESSORS | 
|  | 
| @@ -5269,7 +5290,6 @@ class DeoptimizationInputData: public FixedArray { | 
| static int LengthFor(int entry_count) { return IndexForEntry(entry_count); } | 
| }; | 
|  | 
| - | 
| // DeoptimizationOutputData is a fixed array used to hold the deoptimization | 
| // data for code generated by the full compiler. | 
| // The format of the these objects is | 
|  |