| Index: src/objects.h | 
| diff --git a/src/objects.h b/src/objects.h | 
| index 8dc1ad98ab075c885531609ca52ba67f472adcf2..eaf56a7999523f0575583e056f1e7c44b6b49779 100644 | 
| --- a/src/objects.h | 
| +++ b/src/objects.h | 
| @@ -1535,7 +1535,10 @@ class Object : public MaybeObject { | 
| MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement( | 
| Handle<Object> object, | 
| Handle<Name> key); | 
| - | 
| +  MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( | 
| +      Isolate* isolate, | 
| +      Handle<Object> object, | 
| +      const char* key); | 
| MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( | 
| Handle<Object> object, | 
| Handle<Name> key); | 
| @@ -2108,6 +2111,14 @@ class JSReceiver: public HeapObject { | 
| bool search_hidden_prototypes = false); | 
| void Lookup(Name* name, LookupResult* result); | 
|  | 
| +  enum KeyCollectionType { LOCAL_ONLY, INCLUDE_PROTOS }; | 
| + | 
| +  // Computes the enumerable keys for a JSObject. Used for implementing | 
| +  // "for (n in object) { }". | 
| +  MUST_USE_RESULT static MaybeHandle<FixedArray> GetKeys( | 
| +      Handle<JSReceiver> object, | 
| +      KeyCollectionType type); | 
| + | 
| protected: | 
| Smi* GenerateIdentityHash(); | 
|  | 
| @@ -2523,6 +2534,15 @@ class JSObject: public JSReceiver { | 
| inline bool HasNamedInterceptor(); | 
| inline bool HasIndexedInterceptor(); | 
|  | 
| +  // Computes the enumerable keys from interceptors. Used for debug mirrors and | 
| +  // by JSReceiver::GetKeys. | 
| +  MUST_USE_RESULT static MaybeHandle<JSArray> GetKeysForNamedInterceptor( | 
| +      Handle<JSObject> object, | 
| +      Handle<JSReceiver> receiver); | 
| +  MUST_USE_RESULT static MaybeHandle<JSArray> GetKeysForIndexedInterceptor( | 
| +      Handle<JSObject> object, | 
| +      Handle<JSReceiver> receiver); | 
| + | 
| // Support functions for v8 api (needed for correct interceptor behavior). | 
| static bool HasRealNamedProperty(Handle<JSObject> object, | 
| Handle<Name> key); | 
| @@ -6841,6 +6861,22 @@ class Script: public Struct { | 
| // resource is accessible. Otherwise, always return true. | 
| inline bool HasValidSource(); | 
|  | 
| +  // Convert code position into column number. | 
| +  static int GetColumnNumber(Handle<Script> script, int code_pos); | 
| + | 
| +  // Convert code position into (zero-based) line number. | 
| +  // The non-handlified version does not allocate, but may be much slower. | 
| +  static int GetLineNumber(Handle<Script> script, int code_pos); | 
| +  int GetLineNumber(int code_pos); | 
| + | 
| +  static Handle<Object> GetNameOrSourceURL(Handle<Script> script); | 
| + | 
| +  // Init line_ends array with code positions of line ends inside script source. | 
| +  static void InitLineEnds(Handle<Script> script); | 
| + | 
| +  // Get the JS object wrapping the given script; create it if none exists. | 
| +  static Handle<JSObject> GetWrapper(Handle<Script> script); | 
| + | 
| // Dispatched behavior. | 
| DECLARE_PRINTER(Script) | 
| DECLARE_VERIFIER(Script) | 
| @@ -6862,6 +6898,8 @@ class Script: public Struct { | 
| static const int kSize = kFlagsOffset + kPointerSize; | 
|  | 
| private: | 
| +  int GetLineNumberWithArray(int code_pos); | 
| + | 
| // Bit positions in the flags field. | 
| static const int kCompilationTypeBit = 0; | 
| static const int kCompilationStateBit = 1; | 
| @@ -9239,6 +9277,9 @@ class String: public Name { | 
| return VisitFlat(visitor, string, offset, string->length(), type); | 
| } | 
|  | 
| +  static Handle<FixedArray> CalculateLineEnds(Handle<String> string, | 
| +                                              bool include_ending_line); | 
| + | 
| private: | 
| friend class Name; | 
|  | 
|  |