| Index: src/objects.h | 
| diff --git a/src/objects.h b/src/objects.h | 
| index 164f59bf53193dfd2123b4c93ada6a718018d1eb..48ccc099073a32254f9f5731518326602692e61d 100644 | 
| --- a/src/objects.h | 
| +++ b/src/objects.h | 
| @@ -6768,24 +6768,35 @@ class SharedFunctionInfo: public HeapObject { | 
| // [function data]: This field holds some additional data for function. | 
| // Currently it has one of: | 
| //  - a FunctionTemplateInfo to make benefit the API [IsApiFunction()]. | 
| -  //  - a Smi identifying a builtin function [HasBuiltinFunctionId()]. | 
| //  - a BytecodeArray for the interpreter [HasBytecodeArray()]. | 
| -  // In the long run we don't want all functions to have this field but | 
| -  // we can fix that when we have a better model for storing hidden data | 
| -  // on objects. | 
| DECL_ACCESSORS(function_data, Object) | 
|  | 
| inline bool IsApiFunction(); | 
| inline FunctionTemplateInfo* get_api_func_data(); | 
| inline void set_api_func_data(FunctionTemplateInfo* data); | 
| -  inline bool HasBuiltinFunctionId(); | 
| -  inline BuiltinFunctionId builtin_function_id(); | 
| -  inline void set_builtin_function_id(BuiltinFunctionId id); | 
| inline bool HasBytecodeArray(); | 
| inline BytecodeArray* bytecode_array(); | 
| inline void set_bytecode_array(BytecodeArray* bytecode); | 
| inline void ClearBytecodeArray(); | 
|  | 
| +  // [function identifier]: This field holds an additional identifier for the | 
| +  // function. | 
| +  //  - a Smi identifying a builtin function [HasBuiltinFunctionId()]. | 
| +  //  - a String identifying the function's inferred name [HasInferredName()]. | 
| +  // The inferred_name is inferred from variable or property | 
| +  // assignment of this function. It is used to facilitate debugging and | 
| +  // profiling of JavaScript code written in OO style, where almost | 
| +  // all functions are anonymous but are assigned to object | 
| +  // properties. | 
| +  DECL_ACCESSORS(function_identifier, Object) | 
| + | 
| +  inline bool HasBuiltinFunctionId(); | 
| +  inline BuiltinFunctionId builtin_function_id(); | 
| +  inline void set_builtin_function_id(BuiltinFunctionId id); | 
| +  inline bool HasInferredName(); | 
| +  inline String* inferred_name(); | 
| +  inline void set_inferred_name(String* inferred_name); | 
| + | 
| // [script info]: Script from which the function originates. | 
| DECL_ACCESSORS(script, Object) | 
|  | 
| @@ -6811,13 +6822,6 @@ class SharedFunctionInfo: public HeapObject { | 
| // [debug info]: Debug information. | 
| DECL_ACCESSORS(debug_info, Object) | 
|  | 
| -  // [inferred name]: Name inferred from variable or property | 
| -  // assignment of this function. Used to facilitate debugging and | 
| -  // profiling of JavaScript code written in OO style, where almost | 
| -  // all functions are anonymous but are assigned to object | 
| -  // properties. | 
| -  DECL_ACCESSORS(inferred_name, String) | 
| - | 
| // The function's name if it is non-empty, otherwise the inferred name. | 
| String* DebugName(); | 
|  | 
| @@ -7057,9 +7061,9 @@ class SharedFunctionInfo: public HeapObject { | 
| kInstanceClassNameOffset + kPointerSize; | 
| static const int kScriptOffset = kFunctionDataOffset + kPointerSize; | 
| static const int kDebugInfoOffset = kScriptOffset + kPointerSize; | 
| -  static const int kInferredNameOffset = kDebugInfoOffset + kPointerSize; | 
| +  static const int kFunctionIdentifierOffset = kDebugInfoOffset + kPointerSize; | 
| static const int kFeedbackVectorOffset = | 
| -      kInferredNameOffset + kPointerSize; | 
| +      kFunctionIdentifierOffset + kPointerSize; | 
| #if TRACE_MAPS | 
| static const int kUniqueIdOffset = kFeedbackVectorOffset + kPointerSize; | 
| static const int kLastPointerFieldOffset = kUniqueIdOffset; | 
|  |