Index: dart/runtime/vm/object.h |
=================================================================== |
--- dart/runtime/vm/object.h (revision 31530) |
+++ dart/runtime/vm/object.h (working copy) |
@@ -31,6 +31,7 @@ |
class Assembler; |
class Closure; |
class Code; |
+class DisassemblyFormatter; |
class DeoptInstr; |
class FinalizablePersistentHandle; |
class LocalScope; |
@@ -878,6 +879,8 @@ |
RawArray* fields() const { return raw_ptr()->fields_; } |
void SetFields(const Array& value) const; |
+ intptr_t FindFieldIndex(const Field& field) const; |
+ RawField* FieldFromIndex(intptr_t idx) const; |
// Returns an array of all fields of this class and its superclasses indexed |
// by offset in words. |
@@ -889,12 +892,18 @@ |
RawArray* functions() const { return raw_ptr()->functions_; } |
void SetFunctions(const Array& value) const; |
void AddFunction(const Function& function) const; |
+ intptr_t FindFunctionIndex(const Function& function) const; |
+ RawFunction* FunctionFromIndex(intptr_t idx) const; |
+ intptr_t FindImplicitClosureFunctionIndex(const Function& needle) const; |
+ RawFunction* ImplicitClosureFunctionFromIndex(intptr_t idx) const; |
RawGrowableObjectArray* closures() const { |
return raw_ptr()->closure_functions_; |
} |
void AddClosureFunction(const Function& function) const; |
RawFunction* LookupClosureFunction(intptr_t token_pos) const; |
+ intptr_t FindClosureIndex(const Function& function) const; |
+ RawFunction* ClosureFunctionFromIndex(intptr_t idx) const; |
RawFunction* LookupDynamicFunction(const String& name) const; |
RawFunction* LookupDynamicFunctionAllowPrivate(const String& name) const; |
@@ -991,6 +1000,9 @@ |
RawArray* constants() const; |
+ intptr_t FindInvocationDispatcherFunctionIndex(const Function& needle) const; |
+ RawFunction* InvocationDispatcherFunctionFromIndex(intptr_t idx) const; |
+ |
RawFunction* GetInvocationDispatcher(const String& target_name, |
const Array& args_desc, |
RawFunction::Kind kind) const; |
@@ -1209,7 +1221,7 @@ |
return this->raw(); |
} |
- // Do not canonicalize InstantiatedTypeArguments or null vectors. |
+ // Null vectors are canonical. |
virtual RawAbstractTypeArguments* Canonicalize() const { return this->raw(); } |
// The name of this type argument vector, e.g. "<T, dynamic, List<T>, Smi>". |
@@ -1383,6 +1395,7 @@ |
return false; |
} |
virtual bool IsBounded() const { return false; } // Bounds were checked. |
+ virtual RawAbstractTypeArguments* Canonicalize() const; |
RawAbstractTypeArguments* uninstantiated_type_arguments() const { |
return raw_ptr()->uninstantiated_type_arguments_; |
@@ -1595,6 +1608,8 @@ |
return KindBits::decode(raw_ptr()->kind_tag_); |
} |
+ static const char* KindToCString(RawFunction::Kind kind); |
+ |
bool is_static() const { return StaticBit::decode(raw_ptr()->kind_tag_); } |
bool is_const() const { return ConstBit::decode(raw_ptr()->kind_tag_); } |
bool is_external() const { return ExternalBit::decode(raw_ptr()->kind_tag_); } |
@@ -3238,7 +3253,7 @@ |
// Aborts if there is no static call at 'pc'. |
void SetStaticCallTargetCodeAt(uword pc, const Code& code) const; |
- void Disassemble() const; |
+ void Disassemble(DisassemblyFormatter* formatter = NULL) const; |
class Comments : public ZoneAllocated { |
public: |
@@ -3364,8 +3379,10 @@ |
: FindObjectVisitor(Isolate::Current()), pc_(pc) { } |
virtual ~FindRawCodeVisitor() { } |
+ virtual uword filter_addr() const { return pc_; } |
+ |
// Check if object matches find condition. |
- virtual bool FindObject(RawObject* obj); |
+ virtual bool FindObject(RawObject* obj) const; |
private: |
const uword pc_; |
@@ -5071,7 +5088,8 @@ |
intptr_t len); |
static RawString* EscapeSpecialCharacters(const String& str); |
- |
+ static RawString* EncodeURI(const String& str); |
+ static RawString* DecodeURI(const String& str); |
static RawString* Concat(const String& str1, |
const String& str2, |
Heap::Space space = Heap::kNew); |
@@ -5162,7 +5180,6 @@ |
*CharAddr(str, index) = code_point; |
} |
static RawOneByteString* EscapeSpecialCharacters(const String& str); |
- |
// We use the same maximum elements for all strings. |
static const intptr_t kBytesPerElement = 1; |
static const intptr_t kMaxElements = String::kMaxElements; |
@@ -5386,6 +5403,8 @@ |
} |
static RawOneByteString* EscapeSpecialCharacters(const String& str); |
+ static RawOneByteString* EncodeURI(const String& str); |
+ static RawOneByteString* DecodeURI(const String& str); |
static const ClassId kClassId = kExternalOneByteStringCid; |