| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 "include/dart_api.h" | 8 #include "include/dart_api.h" |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "platform/utils.h" | 10 #include "platform/utils.h" |
| (...skipping 908 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 919 return OFFSET_OF(RawClass, num_native_fields_); | 919 return OFFSET_OF(RawClass, num_native_fields_); |
| 920 } | 920 } |
| 921 | 921 |
| 922 RawCode* allocation_stub() const { | 922 RawCode* allocation_stub() const { |
| 923 return raw_ptr()->allocation_stub_; | 923 return raw_ptr()->allocation_stub_; |
| 924 } | 924 } |
| 925 void set_allocation_stub(const Code& value) const; | 925 void set_allocation_stub(const Code& value) const; |
| 926 | 926 |
| 927 RawArray* constants() const; | 927 RawArray* constants() const; |
| 928 | 928 |
| 929 RawFunction* GetNoSuchMethodDispatcher(const String& target_name, | 929 RawFunction* GetInvocationDispatcher(const String& target_name, |
| 930 const Array& args_desc) const; | 930 const Array& args_desc, |
| 931 RawFunction::Kind kind) const; |
| 931 | 932 |
| 932 void Finalize() const; | 933 void Finalize() const; |
| 933 | 934 |
| 934 const char* ApplyPatch(const Class& patch) const; | 935 const char* ApplyPatch(const Class& patch) const; |
| 935 | 936 |
| 936 RawError* EnsureIsFinalized(Isolate* isolate) const; | 937 RawError* EnsureIsFinalized(Isolate* isolate) const; |
| 937 | 938 |
| 938 // Allocate a class used for VM internal objects. | 939 // Allocate a class used for VM internal objects. |
| 939 template <class FakeObject> static RawClass* New(); | 940 template <class FakeObject> static RawClass* New(); |
| 940 | 941 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1011 void set_signature_function(const Function& value) const; | 1012 void set_signature_function(const Function& value) const; |
| 1012 void set_signature_type(const AbstractType& value) const; | 1013 void set_signature_type(const AbstractType& value) const; |
| 1013 void set_class_state(RawClass::ClassState state) const; | 1014 void set_class_state(RawClass::ClassState state) const; |
| 1014 void set_state_bits(intptr_t bits) const; | 1015 void set_state_bits(intptr_t bits) const; |
| 1015 | 1016 |
| 1016 void set_constants(const Array& value) const; | 1017 void set_constants(const Array& value) const; |
| 1017 | 1018 |
| 1018 void set_canonical_types(const Array& value) const; | 1019 void set_canonical_types(const Array& value) const; |
| 1019 RawArray* canonical_types() const; | 1020 RawArray* canonical_types() const; |
| 1020 | 1021 |
| 1021 RawArray* no_such_method_cache() const; | 1022 RawArray* invocation_dispatcher_cache() const; |
| 1022 void set_no_such_method_cache(const Array& cache) const; | 1023 void set_invocation_dispatcher_cache(const Array& cache) const; |
| 1023 RawFunction* CreateNoSuchMethodDispatcher(const String& target_name, | 1024 RawFunction* CreateInvocationDispatcher(const String& target_name, |
| 1024 const Array& args_desc) const; | 1025 const Array& args_desc, |
| 1026 RawFunction::Kind kind) const; |
| 1025 void CalculateFieldOffsets() const; | 1027 void CalculateFieldOffsets() const; |
| 1026 | 1028 |
| 1027 // Assigns empty array to all raw class array fields. | 1029 // Assigns empty array to all raw class array fields. |
| 1028 void InitEmptyFields(); | 1030 void InitEmptyFields(); |
| 1029 | 1031 |
| 1030 static RawFunction* CheckFunctionType(const Function& func, intptr_t type); | 1032 static RawFunction* CheckFunctionType(const Function& func, intptr_t type); |
| 1031 RawFunction* LookupFunction(const String& name, intptr_t type) const; | 1033 RawFunction* LookupFunction(const String& name, intptr_t type) const; |
| 1032 RawFunction* LookupFunctionAllowPrivate(const String& name, | 1034 RawFunction* LookupFunctionAllowPrivate(const String& name, |
| 1033 intptr_t type) const; | 1035 intptr_t type) const; |
| 1034 RawField* LookupField(const String& name, intptr_t type) const; | 1036 RawField* LookupField(const String& name, intptr_t type) const; |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1432 RawArray* saved_args_desc() const; | 1434 RawArray* saved_args_desc() const; |
| 1433 | 1435 |
| 1434 bool IsMethodExtractor() const { | 1436 bool IsMethodExtractor() const { |
| 1435 return kind() == RawFunction::kMethodExtractor; | 1437 return kind() == RawFunction::kMethodExtractor; |
| 1436 } | 1438 } |
| 1437 | 1439 |
| 1438 bool IsNoSuchMethodDispatcher() const { | 1440 bool IsNoSuchMethodDispatcher() const { |
| 1439 return kind() == RawFunction::kNoSuchMethodDispatcher; | 1441 return kind() == RawFunction::kNoSuchMethodDispatcher; |
| 1440 } | 1442 } |
| 1441 | 1443 |
| 1444 bool IsInvokeFieldDispatcher() const { |
| 1445 return kind() == RawFunction::kInvokeFieldDispatcher; |
| 1446 } |
| 1447 |
| 1442 // Returns true iff an implicit closure function has been created | 1448 // Returns true iff an implicit closure function has been created |
| 1443 // for this function. | 1449 // for this function. |
| 1444 bool HasImplicitClosureFunction() const { | 1450 bool HasImplicitClosureFunction() const { |
| 1445 return implicit_closure_function() != null(); | 1451 return implicit_closure_function() != null(); |
| 1446 } | 1452 } |
| 1447 | 1453 |
| 1448 // Return the closure function implicitly created for this function. | 1454 // Return the closure function implicitly created for this function. |
| 1449 // If none exists yet, create one and remember it. | 1455 // If none exists yet, create one and remember it. |
| 1450 RawFunction* ImplicitClosureFunction() const; | 1456 RawFunction* ImplicitClosureFunction() const; |
| 1451 | 1457 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1477 return false; | 1483 return false; |
| 1478 } | 1484 } |
| 1479 switch (kind()) { | 1485 switch (kind()) { |
| 1480 case RawFunction::kRegularFunction: | 1486 case RawFunction::kRegularFunction: |
| 1481 case RawFunction::kGetterFunction: | 1487 case RawFunction::kGetterFunction: |
| 1482 case RawFunction::kSetterFunction: | 1488 case RawFunction::kSetterFunction: |
| 1483 case RawFunction::kImplicitGetter: | 1489 case RawFunction::kImplicitGetter: |
| 1484 case RawFunction::kImplicitSetter: | 1490 case RawFunction::kImplicitSetter: |
| 1485 case RawFunction::kMethodExtractor: | 1491 case RawFunction::kMethodExtractor: |
| 1486 case RawFunction::kNoSuchMethodDispatcher: | 1492 case RawFunction::kNoSuchMethodDispatcher: |
| 1493 case RawFunction::kInvokeFieldDispatcher: |
| 1487 return true; | 1494 return true; |
| 1488 case RawFunction::kClosureFunction: | 1495 case RawFunction::kClosureFunction: |
| 1489 case RawFunction::kConstructor: | 1496 case RawFunction::kConstructor: |
| 1490 case RawFunction::kConstImplicitGetter: | 1497 case RawFunction::kConstImplicitGetter: |
| 1491 return false; | 1498 return false; |
| 1492 default: | 1499 default: |
| 1493 UNREACHABLE(); | 1500 UNREACHABLE(); |
| 1494 return false; | 1501 return false; |
| 1495 } | 1502 } |
| 1496 } | 1503 } |
| (...skipping 4498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5995 | 6002 |
| 5996 | 6003 |
| 5997 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 6004 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
| 5998 intptr_t index) { | 6005 intptr_t index) { |
| 5999 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 6006 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
| 6000 } | 6007 } |
| 6001 | 6008 |
| 6002 } // namespace dart | 6009 } // namespace dart |
| 6003 | 6010 |
| 6004 #endif // VM_OBJECT_H_ | 6011 #endif // VM_OBJECT_H_ |
| OLD | NEW |