| Index: src/objects.h
 | 
| diff --git a/src/objects.h b/src/objects.h
 | 
| index 7a1ae26bd6e874307accd856d1f905ed32204ab6..c7725788e803c8b71b5f77cd5de678050530377c 100644
 | 
| --- a/src/objects.h
 | 
| +++ b/src/objects.h
 | 
| @@ -5497,8 +5497,6 @@ class Code: public HeapObject {
 | 
|    void ClearInlineCaches();
 | 
|    void ClearInlineCaches(Kind kind);
 | 
|  
 | 
| -  void ClearTypeFeedbackInfo(Heap* heap);
 | 
| -
 | 
|    BailoutId TranslatePcOffsetToAstId(uint32_t pc_offset);
 | 
|    uint32_t TranslateAstIdToPcOffset(BailoutId ast_id);
 | 
|  
 | 
| @@ -6694,6 +6692,8 @@ class SharedFunctionInfo: public HeapObject {
 | 
|    // Removed a specific optimized code object from the optimized code map.
 | 
|    void EvictFromOptimizedCodeMap(Code* optimized_code, const char* reason);
 | 
|  
 | 
| +  void ClearTypeFeedbackInfo(Heap* heap);
 | 
| +
 | 
|    // Trims the optimized code map after entries have been removed.
 | 
|    void TrimOptimizedCodeMap(int shrink_by);
 | 
|  
 | 
| @@ -6802,6 +6802,12 @@ class SharedFunctionInfo: public HeapObject {
 | 
|    inline int construction_count();
 | 
|    inline void set_construction_count(int value);
 | 
|  
 | 
| +  // [feedback_vector] - accumulates ast node feedback from full-codegen and
 | 
| +  // (increasingly) from crankshafted code where sufficient feedback isn't
 | 
| +  // available. Currently the field is duplicated in
 | 
| +  // TypeFeedbackInfo::feedback_vector, but the allocation is done here.
 | 
| +  DECL_ACCESSORS(feedback_vector, FixedArray)
 | 
| +
 | 
|    // [initial_map]: initial map of the first function called as a constructor.
 | 
|    // Saved for the duration of the tracking phase.
 | 
|    // This is a weak link (GC resets it to undefined_value if no other live
 | 
| @@ -7082,8 +7088,10 @@ class SharedFunctionInfo: public HeapObject {
 | 
|    static const int kScriptOffset = kFunctionDataOffset + kPointerSize;
 | 
|    static const int kDebugInfoOffset = kScriptOffset + kPointerSize;
 | 
|    static const int kInferredNameOffset = kDebugInfoOffset + kPointerSize;
 | 
| -  static const int kInitialMapOffset =
 | 
| +  static const int kFeedbackVectorOffset =
 | 
|        kInferredNameOffset + kPointerSize;
 | 
| +  static const int kInitialMapOffset =
 | 
| +      kFeedbackVectorOffset + kPointerSize;
 | 
|    // ast_node_count is a Smi field. It could be grouped with another Smi field
 | 
|    // into a PSEUDO_SMI_ACCESSORS pair (on x64), if one becomes available.
 | 
|    static const int kAstNodeCountOffset =
 | 
| @@ -8169,8 +8177,6 @@ class TypeFeedbackInfo: public Struct {
 | 
|    inline void set_inlined_type_change_checksum(int checksum);
 | 
|    inline bool matches_inlined_type_change_checksum(int checksum);
 | 
|  
 | 
| -  DECL_ACCESSORS(feedback_vector, FixedArray)
 | 
| -
 | 
|    static inline TypeFeedbackInfo* cast(Object* obj);
 | 
|  
 | 
|    // Dispatched behavior.
 | 
| @@ -8179,10 +8185,9 @@ class TypeFeedbackInfo: public Struct {
 | 
|  
 | 
|    static const int kStorage1Offset = HeapObject::kHeaderSize;
 | 
|    static const int kStorage2Offset = kStorage1Offset + kPointerSize;
 | 
| -  static const int kFeedbackVectorOffset =
 | 
| -      kStorage2Offset + kPointerSize;
 | 
| -  static const int kSize = kFeedbackVectorOffset + kPointerSize;
 | 
| +  static const int kSize = kStorage2Offset + kPointerSize;
 | 
|  
 | 
| +  // TODO(mvstanton): move these sentinel declarations to shared function info.
 | 
|    // The object that indicates an uninitialized cache.
 | 
|    static inline Handle<Object> UninitializedSentinel(Isolate* isolate);
 | 
|  
 | 
| @@ -8198,9 +8203,6 @@ class TypeFeedbackInfo: public Struct {
 | 
|    // garbage collection (e.g., for patching the cache).
 | 
|    static inline Object* RawUninitializedSentinel(Heap* heap);
 | 
|  
 | 
| -  static const int kForInFastCaseMarker = 0;
 | 
| -  static const int kForInSlowCaseMarker = 1;
 | 
| -
 | 
|   private:
 | 
|    static const int kTypeChangeChecksumBits = 7;
 | 
|  
 | 
| 
 |