| Index: src/objects.h
 | 
| diff --git a/src/objects.h b/src/objects.h
 | 
| index 8c63022db8a0ac94928987882ddf258aabc599fd..c9b3757df98db567d59d1771d4651a5e21597fe3 100644
 | 
| --- a/src/objects.h
 | 
| +++ b/src/objects.h
 | 
| @@ -54,7 +54,8 @@
 | 
|  //           - JSGlobalObject
 | 
|  //           - JSBuiltinsObject
 | 
|  //         - JSGlobalProxy
 | 
| -//        - JSValue
 | 
| +//         - JSValue
 | 
| +//         - JSMessageObject
 | 
|  //       - ByteArray
 | 
|  //       - PixelArray
 | 
|  //       - ExternalArray
 | 
| @@ -288,6 +289,8 @@ static const int kVariableSizeSentinel = 0;
 | 
|    V(FIXED_ARRAY_TYPE)                                                          \
 | 
|    V(SHARED_FUNCTION_INFO_TYPE)                                                 \
 | 
|                                                                                 \
 | 
| +  V(JS_MESSAGE_OBJECT_TYPE)                                                    \
 | 
| +                                                                               \
 | 
|    V(JS_VALUE_TYPE)                                                             \
 | 
|    V(JS_OBJECT_TYPE)                                                            \
 | 
|    V(JS_CONTEXT_EXTENSION_OBJECT_TYPE)                                          \
 | 
| @@ -518,6 +521,8 @@ enum InstanceType {
 | 
|    FIXED_ARRAY_TYPE,
 | 
|    SHARED_FUNCTION_INFO_TYPE,
 | 
|  
 | 
| +  JS_MESSAGE_OBJECT_TYPE,
 | 
| +
 | 
|    JS_VALUE_TYPE,  // FIRST_JS_OBJECT_TYPE
 | 
|    JS_OBJECT_TYPE,
 | 
|    JS_CONTEXT_EXTENSION_OBJECT_TYPE,
 | 
| @@ -675,6 +680,7 @@ class MaybeObject BASE_EMBEDDED {
 | 
|    V(Oddball)                                   \
 | 
|    V(SharedFunctionInfo)                        \
 | 
|    V(JSValue)                                   \
 | 
| +  V(JSMessageObject)                           \
 | 
|    V(StringWrapper)                             \
 | 
|    V(Proxy)                                     \
 | 
|    V(Boolean)                                   \
 | 
| @@ -4696,6 +4702,68 @@ class JSValue: public JSObject {
 | 
|    DISALLOW_IMPLICIT_CONSTRUCTORS(JSValue);
 | 
|  };
 | 
|  
 | 
| +
 | 
| +// Representation of message objects used for error reporting through
 | 
| +// the API. The messages are formatted in JavaScript so this object is
 | 
| +// a real JavaScript object. The information used for formatting the
 | 
| +// error messages are not directly accessible from JavaScript to
 | 
| +// prevent leaking information to user code called during error
 | 
| +// formatting.
 | 
| +class JSMessageObject: public JSObject {
 | 
| + public:
 | 
| +  // [type]: the type of error message.
 | 
| +  DECL_ACCESSORS(type, String)
 | 
| +
 | 
| +  // [arguments]: the arguments for formatting the error message.
 | 
| +  DECL_ACCESSORS(arguments, JSArray)
 | 
| +
 | 
| +  // [script]: the script from which the error message originated.
 | 
| +  DECL_ACCESSORS(script, Object)
 | 
| +
 | 
| +  // [stack_trace]: the stack trace for this error message.
 | 
| +  DECL_ACCESSORS(stack_trace, Object)
 | 
| +
 | 
| +  // [stack_frames]: an array of stack frames for this error object.
 | 
| +  DECL_ACCESSORS(stack_frames, Object)
 | 
| +
 | 
| +  // [start_position]: the start position in the script for the error message.
 | 
| +  inline int start_position();
 | 
| +  inline void set_start_position(int value);
 | 
| +
 | 
| +  // [end_position]: the end position in the script for the error message.
 | 
| +  inline int end_position();
 | 
| +  inline void set_end_position(int value);
 | 
| +
 | 
| +  // Casting.
 | 
| +  static inline JSMessageObject* cast(Object* obj);
 | 
| +
 | 
| +  // Dispatched behavior.
 | 
| +#ifdef OBJECT_PRINT
 | 
| +  inline void JSMessageObjectPrint() {
 | 
| +    JSMessageObjectPrint(stdout);
 | 
| +  }
 | 
| +  void JSMessageObjectPrint(FILE* out);
 | 
| +#endif
 | 
| +#ifdef DEBUG
 | 
| +  void JSMessageObjectVerify();
 | 
| +#endif
 | 
| +
 | 
| +  // Layout description.
 | 
| +  static const int kTypeOffset = JSObject::kHeaderSize;
 | 
| +  static const int kArgumentsOffset = kTypeOffset + kPointerSize;
 | 
| +  static const int kScriptOffset = kArgumentsOffset + kPointerSize;
 | 
| +  static const int kStackTraceOffset = kScriptOffset + kPointerSize;
 | 
| +  static const int kStackFramesOffset = kStackTraceOffset + kPointerSize;
 | 
| +  static const int kStartPositionOffset = kStackFramesOffset + kPointerSize;
 | 
| +  static const int kEndPositionOffset = kStartPositionOffset + kPointerSize;
 | 
| +  static const int kSize = kEndPositionOffset + kPointerSize;
 | 
| +
 | 
| +  typedef FixedBodyDescriptor<HeapObject::kMapOffset,
 | 
| +                              kStackFramesOffset + kPointerSize,
 | 
| +                              kSize> BodyDescriptor;
 | 
| +};
 | 
| +
 | 
| +
 | 
|  // Regular expressions
 | 
|  // The regular expression holds a single reference to a FixedArray in
 | 
|  // the kDataOffset field.
 | 
| 
 |