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

Side by Side Diff: runtime/vm/object.h

Issue 11642003: Create and cache method extraction stub in the ICData. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: lazyly inject extractors as getters into class Created 7 years, 11 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 | « runtime/vm/intermediate_language_x64.cc ('k') | runtime/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) 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 681 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 bool IsTopLevel() const; 692 bool IsTopLevel() const;
693 693
694 RawArray* fields() const { return raw_ptr()->fields_; } 694 RawArray* fields() const { return raw_ptr()->fields_; }
695 void SetFields(const Array& value) const; 695 void SetFields(const Array& value) const;
696 696
697 // Returns true if non-static fields are defined. 697 // Returns true if non-static fields are defined.
698 bool HasInstanceFields() const; 698 bool HasInstanceFields() const;
699 699
700 RawArray* functions() const { return raw_ptr()->functions_; } 700 RawArray* functions() const { return raw_ptr()->functions_; }
701 void SetFunctions(const Array& value) const; 701 void SetFunctions(const Array& value) const;
702 void AddFunction(const Function& function) const;
702 703
703 void AddClosureFunction(const Function& function) const; 704 void AddClosureFunction(const Function& function) const;
704 RawFunction* LookupClosureFunction(intptr_t token_pos) const; 705 RawFunction* LookupClosureFunction(intptr_t token_pos) const;
705 706
706 RawFunction* LookupDynamicFunction(const String& name) const; 707 RawFunction* LookupDynamicFunction(const String& name) const;
707 RawFunction* LookupStaticFunction(const String& name) const; 708 RawFunction* LookupStaticFunction(const String& name) const;
708 RawFunction* LookupConstructor(const String& name) const; 709 RawFunction* LookupConstructor(const String& name) const;
709 RawFunction* LookupFactory(const String& name) const; 710 RawFunction* LookupFactory(const String& name) const;
710 RawFunction* LookupFunction(const String& name) const; 711 RawFunction* LookupFunction(const String& name) const;
711 RawFunction* LookupGetterFunction(const String& name) const; 712 RawFunction* LookupGetterFunction(const String& name) const;
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 // Signature class of this closure function or signature function. 1189 // Signature class of this closure function or signature function.
1189 RawClass* signature_class() const; 1190 RawClass* signature_class() const;
1190 void set_signature_class(const Class& value) const; 1191 void set_signature_class(const Class& value) const;
1191 1192
1192 RawInstance* implicit_static_closure() const; 1193 RawInstance* implicit_static_closure() const;
1193 void set_implicit_static_closure(const Instance& closure) const; 1194 void set_implicit_static_closure(const Instance& closure) const;
1194 1195
1195 RawCode* closure_allocation_stub() const; 1196 RawCode* closure_allocation_stub() const;
1196 void set_closure_allocation_stub(const Code& value) const; 1197 void set_closure_allocation_stub(const Code& value) const;
1197 1198
1199 void set_extracted_method_closure(const Function& function) const;
1200 RawFunction* extracted_method_closure() const;
1201
1202 bool IsMethodExtractor() const {
1203 return kind() == RawFunction::kMethodExtractor;
1204 }
1205
1198 // Returns true iff an implicit closure function has been created 1206 // Returns true iff an implicit closure function has been created
1199 // for this function. 1207 // for this function.
1200 bool HasImplicitClosureFunction() const { 1208 bool HasImplicitClosureFunction() const {
1201 return implicit_closure_function() != null(); 1209 return implicit_closure_function() != null();
1202 } 1210 }
1203 1211
1204 // Return the closure function implicitly created for this function. 1212 // Return the closure function implicitly created for this function.
1205 // If none exists yet, create one and remember it. 1213 // If none exists yet, create one and remember it.
1206 RawFunction* ImplicitClosureFunction() const; 1214 RawFunction* ImplicitClosureFunction() const;
1207 1215
(...skipping 22 matching lines...) Expand all
1230 bool IsDynamicFunction() const { 1238 bool IsDynamicFunction() const {
1231 if (is_static() || is_abstract()) { 1239 if (is_static() || is_abstract()) {
1232 return false; 1240 return false;
1233 } 1241 }
1234 switch (kind()) { 1242 switch (kind()) {
1235 case RawFunction::kRegularFunction: 1243 case RawFunction::kRegularFunction:
1236 case RawFunction::kGetterFunction: 1244 case RawFunction::kGetterFunction:
1237 case RawFunction::kSetterFunction: 1245 case RawFunction::kSetterFunction:
1238 case RawFunction::kImplicitGetter: 1246 case RawFunction::kImplicitGetter:
1239 case RawFunction::kImplicitSetter: 1247 case RawFunction::kImplicitSetter:
1248 case RawFunction::kMethodExtractor:
1240 return true; 1249 return true;
1241 case RawFunction::kClosureFunction: 1250 case RawFunction::kClosureFunction:
1242 case RawFunction::kConstructor: 1251 case RawFunction::kConstructor:
1243 case RawFunction::kConstImplicitGetter: 1252 case RawFunction::kConstImplicitGetter:
1244 return false; 1253 return false;
1245 default: 1254 default:
1246 UNREACHABLE(); 1255 UNREACHABLE();
1247 return false; 1256 return false;
1248 } 1257 }
1249 } 1258 }
(...skipping 5003 matching lines...) Expand 10 before | Expand all | Expand 10 after
6253 6262
6254 6263
6255 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 6264 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
6256 intptr_t index) { 6265 intptr_t index) {
6257 return array.At((index * kEntryLength) + kTargetFunctionIndex); 6266 return array.At((index * kEntryLength) + kTargetFunctionIndex);
6258 } 6267 }
6259 6268
6260 } // namespace dart 6269 } // namespace dart
6261 6270
6262 #endif // VM_OBJECT_H_ 6271 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language_x64.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698