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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « vm/isolate.cc ('k') | vm/object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "vm/assert.h" 8 #include "vm/assert.h"
9 #include "vm/dart.h" 9 #include "vm/dart.h"
10 #include "vm/globals.h" 10 #include "vm/globals.h"
(...skipping 1407 matching lines...) Expand 10 before | Expand all | Expand 10 after
1418 void set_source(const String& value) const; 1418 void set_source(const String& value) const;
1419 void set_kind(RawScript::Kind value) const; 1419 void set_kind(RawScript::Kind value) const;
1420 void set_tokens(const TokenStream& value) const; 1420 void set_tokens(const TokenStream& value) const;
1421 static RawScript* New(); 1421 static RawScript* New();
1422 1422
1423 HEAP_OBJECT_IMPLEMENTATION(Script, Object); 1423 HEAP_OBJECT_IMPLEMENTATION(Script, Object);
1424 friend class Class; 1424 friend class Class;
1425 }; 1425 };
1426 1426
1427 1427
1428 class ClassDictionaryIterator : public ValueObject { 1428 class DictionaryIterator : public ValueObject {
1429 public: 1429 public:
1430 explicit ClassDictionaryIterator(const Library& library); 1430 explicit DictionaryIterator(const Library& library);
1431 bool HasNext() const { 1431
1432 return next_ix_ < size_; 1432 bool HasNext() const { return next_ix_ < size_; }
1433 } 1433
1434 // Returns a non-null raw object. 1434 // Returns next non-null raw object.
1435 RawClass* GetNext(); 1435 RawObject* GetNext();
1436 1436
1437 private: 1437 private:
1438 void MoveToNextClass(); 1438 void MoveToNextObject();
1439 1439
1440 const Array& array_; 1440 const Array& array_;
1441 const int size_; // Number of elements to iterate over. 1441 const int size_; // Number of elements to iterate over.
1442 int next_ix_; // Index of next element. 1442 int next_ix_; // Index of next element.
1443 1443
1444 friend class ClassDictionaryIterator;
1445 DISALLOW_COPY_AND_ASSIGN(DictionaryIterator);
1446 };
1447
1448
1449 class ClassDictionaryIterator : public DictionaryIterator {
1450 public:
1451 explicit ClassDictionaryIterator(const Library& library);
1452
1453 // Returns a non-null raw class.
1454 RawClass* GetNextClass();
1455
1456 private:
1457 void MoveToNextClass();
1458
1444 DISALLOW_COPY_AND_ASSIGN(ClassDictionaryIterator); 1459 DISALLOW_COPY_AND_ASSIGN(ClassDictionaryIterator);
1445 }; 1460 };
1446 1461
1447 1462
1448 class Library : public Object { 1463 class Library : public Object {
1449 public: 1464 public:
1450 RawString* name() const { return raw_ptr()->name_; } 1465 RawString* name() const { return raw_ptr()->name_; }
1451 void SetName(const String& name) const; 1466 void SetName(const String& name) const;
1452 1467
1453 RawString* url() const { return raw_ptr()->url_; } 1468 RawString* url() const { return raw_ptr()->url_; }
(...skipping 22 matching lines...) Expand all
1476 // Resolving native methods for script loaded in the library. 1491 // Resolving native methods for script loaded in the library.
1477 Dart_NativeEntryResolver native_entry_resolver() const { 1492 Dart_NativeEntryResolver native_entry_resolver() const {
1478 return raw_ptr()->native_entry_resolver_; 1493 return raw_ptr()->native_entry_resolver_;
1479 } 1494 }
1480 void set_native_entry_resolver(Dart_NativeEntryResolver value) const { 1495 void set_native_entry_resolver(Dart_NativeEntryResolver value) const {
1481 raw_ptr()->native_entry_resolver_ = value; 1496 raw_ptr()->native_entry_resolver_ = value;
1482 } 1497 }
1483 1498
1484 void Register() const; 1499 void Register() const;
1485 static RawLibrary* LookupLibrary(const String& url); 1500 static RawLibrary* LookupLibrary(const String& url);
1501 static RawString* CheckForDuplicateDefinition();
1486 static bool IsKeyUsed(intptr_t key); 1502 static bool IsKeyUsed(intptr_t key);
1487 1503
1488 static void InitCoreLibrary(Isolate* isolate); 1504 static void InitCoreLibrary(Isolate* isolate);
1489 static RawLibrary* CoreLibrary(); 1505 static RawLibrary* CoreLibrary();
1490 static RawLibrary* CoreImplLibrary(); 1506 static RawLibrary* CoreImplLibrary();
1491 1507
1492 // Eagerly compile all classes and functions in the library. 1508 // Eagerly compile all classes and functions in the library.
1493 static void CompileAll(); 1509 static void CompileAll();
1494 1510
1495 private: 1511 private:
1496 static const int kInitialImportsCapacity = 4; 1512 static const int kInitialImportsCapacity = 4;
1497 static const int kImportsCapacityIncrement = 8; 1513 static const int kImportsCapacityIncrement = 8;
1514 static const int kInitialImportedIntoCapacity = 1;
1515 static const int kImportedIntoCapacityIncrement = 2;
1498 static RawLibrary* New(); 1516 static RawLibrary* New();
1499 1517
1500 intptr_t num_imports() const { return raw_ptr()->num_imports_; } 1518 intptr_t num_imports() const { return raw_ptr()->num_imports_; }
1501 void set_num_imports(intptr_t value) const { 1519 void set_num_imports(intptr_t value) const {
1502 raw_ptr()->num_imports_ = value; 1520 raw_ptr()->num_imports_ = value;
1503 } 1521 }
1522 intptr_t num_imported_into() const { return raw_ptr()->num_imported_into_; }
1523 void set_num_imported_into(intptr_t value) const {
1524 raw_ptr()->num_imported_into_ = value;
1525 }
1504 RawArray* imports() const { return raw_ptr()->imports_; } 1526 RawArray* imports() const { return raw_ptr()->imports_; }
1527 RawArray* imported_into() const { return raw_ptr()->imported_into_; }
1505 RawArray* dictionary() const { return raw_ptr()->dictionary_; } 1528 RawArray* dictionary() const { return raw_ptr()->dictionary_; }
1506 RawLibrary* next_registered() const { return raw_ptr()->next_registered_; } 1529 RawLibrary* next_registered() const { return raw_ptr()->next_registered_; }
1507 void InitClassDictionary() const; 1530 void InitClassDictionary() const;
1508 void InitImportList() const; 1531 void InitImportList() const;
1532 void InitImportedIntoList() const;
1509 void GrowDictionary(const Array& dict, intptr_t dict_size) const; 1533 void GrowDictionary(const Array& dict, intptr_t dict_size) const;
1510 static RawLibrary* NewLibraryHelper(const String& url, 1534 static RawLibrary* NewLibraryHelper(const String& url,
1511 bool import_core_lib); 1535 bool import_core_lib);
1536 void AddImportedInto(const Library& library) const;
1537 RawObject* LookupObjectFiltered(const String& name,
1538 const Library& filter_lib) const;
1539 RawLibrary* LookupObjectInImporter(const String& name) const;
1540 RawString* DuplicateDefineErrorString(const String& entry_name,
1541 const Library& conflicting_lib) const;
1542 RawString* FindDuplicateDefinition(Library* conflicting_lib) const;
1543
1512 HEAP_OBJECT_IMPLEMENTATION(Library, Object); 1544 HEAP_OBJECT_IMPLEMENTATION(Library, Object);
1513 friend class Class; 1545 friend class Class;
1514 friend class ClassDictionaryIterator; 1546 friend class DictionaryIterator;
1515 friend class Isolate; 1547 friend class Isolate;
1516 }; 1548 };
1517 1549
1518 1550
1519 class LibraryPrefix : public Object { 1551 class LibraryPrefix : public Object {
1520 public: 1552 public:
1521 RawString* name() const { return raw_ptr()->name_; } 1553 RawString* name() const { return raw_ptr()->name_; }
1522 RawLibrary* library() const { return raw_ptr()->library_; } 1554 RawLibrary* library() const { return raw_ptr()->library_; }
1523 1555
1524 static intptr_t InstanceSize() { 1556 static intptr_t InstanceSize() {
(...skipping 1377 matching lines...) Expand 10 before | Expand all | Expand 10 after
2902 } 2934 }
2903 2935
2904 2936
2905 void Context::SetAt(intptr_t index, const Instance& value) const { 2937 void Context::SetAt(intptr_t index, const Instance& value) const {
2906 StorePointer(InstanceAddr(index), value.raw()); 2938 StorePointer(InstanceAddr(index), value.raw());
2907 } 2939 }
2908 2940
2909 } // namespace dart 2941 } // namespace dart
2910 2942
2911 #endif // VM_OBJECT_H_ 2943 #endif // VM_OBJECT_H_
OLDNEW
« 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