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; |