Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Unified Diff: vm/object.h

Issue 8342046: Add an imported into list for libraries so that it is possible to lookup (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: '' Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « vm/isolate.cc ('k') | vm/object.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/object.h
===================================================================
--- vm/object.h (revision 591)
+++ vm/object.h (working copy)
@@ -1425,22 +1425,37 @@
};
-class ClassDictionaryIterator : public ValueObject {
+class DictionaryIterator : public ValueObject {
public:
- explicit ClassDictionaryIterator(const Library& library);
- bool HasNext() const {
- return next_ix_ < size_;
- }
- // Returns a non-null raw object.
- RawClass* GetNext();
+ explicit DictionaryIterator(const Library& library);
+ bool HasNext() const { return next_ix_ < size_; }
+
+ // Returns next non-null raw object.
+ RawObject* GetNext();
+
private:
- void MoveToNextClass();
+ void MoveToNextObject();
const Array& array_;
const int size_; // Number of elements to iterate over.
int next_ix_; // Index of next element.
+ friend class ClassDictionaryIterator;
+ DISALLOW_COPY_AND_ASSIGN(DictionaryIterator);
+};
+
+
+class ClassDictionaryIterator : public DictionaryIterator {
+ public:
+ explicit ClassDictionaryIterator(const Library& library);
+
+ // Returns a non-null raw class.
+ RawClass* GetNextClass();
+
+ private:
+ void MoveToNextClass();
+
DISALLOW_COPY_AND_ASSIGN(ClassDictionaryIterator);
};
@@ -1483,6 +1498,7 @@
void Register() const;
static RawLibrary* LookupLibrary(const String& url);
+ static RawString* CheckForDuplicateDefinition();
static bool IsKeyUsed(intptr_t key);
static void InitCoreLibrary(Isolate* isolate);
@@ -1495,23 +1511,39 @@
private:
static const int kInitialImportsCapacity = 4;
static const int kImportsCapacityIncrement = 8;
+ static const int kInitialImportedIntoCapacity = 1;
+ static const int kImportedIntoCapacityIncrement = 2;
static RawLibrary* New();
intptr_t num_imports() const { return raw_ptr()->num_imports_; }
void set_num_imports(intptr_t value) const {
raw_ptr()->num_imports_ = value;
}
+ intptr_t num_imported_into() const { return raw_ptr()->num_imported_into_; }
+ void set_num_imported_into(intptr_t value) const {
+ raw_ptr()->num_imported_into_ = value;
+ }
RawArray* imports() const { return raw_ptr()->imports_; }
+ RawArray* imported_into() const { return raw_ptr()->imported_into_; }
RawArray* dictionary() const { return raw_ptr()->dictionary_; }
RawLibrary* next_registered() const { return raw_ptr()->next_registered_; }
void InitClassDictionary() const;
void InitImportList() const;
+ void InitImportedIntoList() const;
void GrowDictionary(const Array& dict, intptr_t dict_size) const;
static RawLibrary* NewLibraryHelper(const String& url,
bool import_core_lib);
+ void AddImportedInto(const Library& library) const;
+ RawObject* LookupObjectFiltered(const String& name,
+ const Library& filter_lib) const;
+ RawLibrary* LookupObjectInImporter(const String& name) const;
+ RawString* DuplicateDefineErrorString(const String& entry_name,
+ const Library& conflicting_lib) const;
+ RawString* FindDuplicateDefinition(Library* conflicting_lib) const;
+
HEAP_OBJECT_IMPLEMENTATION(Library, Object);
friend class Class;
- friend class ClassDictionaryIterator;
+ friend class DictionaryIterator;
friend class Isolate;
};
« no previous file with comments | « vm/isolate.cc ('k') | vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698