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

Side by Side Diff: runtime/vm/precompiler.cc

Issue 1584223006: Remove signature classes from the VM. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: sync Created 4 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
« no previous file with comments | « runtime/vm/parser_test.cc ('k') | runtime/vm/profiler_test.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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 #include "vm/precompiler.h" 5 #include "vm/precompiler.h"
6 6
7 #include "vm/cha.h" 7 #include "vm/cha.h"
8 #include "vm/code_patcher.h" 8 #include "vm/code_patcher.h"
9 #include "vm/compiler.h" 9 #include "vm/compiler.h"
10 #include "vm/hash_table.h" 10 #include "vm/hash_table.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 // discovered through _getMainClosure. 147 // discovered through _getMainClosure.
148 148
149 AddSelector(Symbols::NoSuchMethod()); 149 AddSelector(Symbols::NoSuchMethod());
150 150
151 AddSelector(Symbols::Call()); // For speed, not correctness. 151 AddSelector(Symbols::Call()); // For speed, not correctness.
152 152
153 // Allocated from C++. 153 // Allocated from C++.
154 static const intptr_t kExternallyAllocatedCids[] = { 154 static const intptr_t kExternallyAllocatedCids[] = {
155 kBoolCid, 155 kBoolCid,
156 kNullCid, 156 kNullCid,
157 kClosureCid,
157 158
158 kSmiCid, 159 kSmiCid,
159 kMintCid, 160 kMintCid,
160 kBigintCid, 161 kBigintCid,
161 kDoubleCid, 162 kDoubleCid,
162 163
163 kOneByteStringCid, 164 kOneByteStringCid,
164 kTwoByteStringCid, 165 kTwoByteStringCid,
165 kExternalOneByteStringCid, 166 kExternalOneByteStringCid,
166 kExternalTwoByteStringCid, 167 kExternalTwoByteStringCid,
(...skipping 27 matching lines...) Expand all
194 195
195 kTypedDataFloat32x4ArrayCid, 196 kTypedDataFloat32x4ArrayCid,
196 kTypedDataInt32x4ArrayCid, 197 kTypedDataInt32x4ArrayCid,
197 kTypedDataFloat64x2ArrayCid, 198 kTypedDataFloat64x2ArrayCid,
198 199
199 kInt32x4Cid, 200 kInt32x4Cid,
200 kFloat32x4Cid, 201 kFloat32x4Cid,
201 kFloat64x2Cid, 202 kFloat64x2Cid,
202 203
203 kTypeCid, 204 kTypeCid,
205 kFunctionTypeCid,
204 kTypeRefCid, 206 kTypeRefCid,
205 kTypeParameterCid, 207 kTypeParameterCid,
206 kBoundedTypeCid, 208 kBoundedTypeCid,
207 kLibraryPrefixCid, 209 kLibraryPrefixCid,
208 210
209 kJSRegExpCid, 211 kJSRegExpCid,
210 kUserTagCid, 212 kUserTagCid,
211 kStacktraceCid, 213 kStacktraceCid,
212 kWeakPropertyCid, 214 kWeakPropertyCid,
213 kCapabilityCid, 215 kCapabilityCid,
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 } 463 }
462 } 464 }
463 465
464 466
465 void Precompiler::AddConstObject(const Instance& instance) { 467 void Precompiler::AddConstObject(const Instance& instance) {
466 const Class& cls = Class::Handle(Z, instance.clazz()); 468 const Class& cls = Class::Handle(Z, instance.clazz());
467 AddInstantiatedClass(cls); 469 AddInstantiatedClass(cls);
468 470
469 if (instance.IsClosure()) { 471 if (instance.IsClosure()) {
470 // An implicit static closure. 472 // An implicit static closure.
471 const Function& func = Function::Handle(Z, Closure::function(instance)); 473 const Function& func =
474 Function::Handle(Z, Closure::Cast(instance).function());
472 ASSERT(func.is_static()); 475 ASSERT(func.is_static());
473 AddFunction(func); 476 AddFunction(func);
474 return; 477 return;
475 } 478 }
476 479
477 // Can't ask immediate objects if they're canoncial. 480 // Can't ask immediate objects if they're canoncial.
478 if (instance.IsSmi()) return; 481 if (instance.IsSmi()) return;
479 482
480 // Some Instances in the ObjectPool aren't const objects, such as 483 // Some Instances in the ObjectPool aren't const objects, such as
481 // argument descriptors. 484 // argument descriptors.
(...skipping 22 matching lines...) Expand all
504 }; 507 };
505 508
506 ConstObjectVisitor visitor(this, I); 509 ConstObjectVisitor visitor(this, I);
507 instance.raw()->VisitPointers(&visitor); 510 instance.raw()->VisitPointers(&visitor);
508 } 511 }
509 512
510 513
511 void Precompiler::AddClosureCall(const ICData& call_site) { 514 void Precompiler::AddClosureCall(const ICData& call_site) {
512 const Array& arguments_descriptor = 515 const Array& arguments_descriptor =
513 Array::Handle(Z, call_site.arguments_descriptor()); 516 Array::Handle(Z, call_site.arguments_descriptor());
514 const Type& function_impl =
515 Type::Handle(Z, I->object_store()->function_impl_type());
516 const Class& cache_class = 517 const Class& cache_class =
517 Class::Handle(Z, function_impl.type_class()); 518 Class::Handle(Z, I->object_store()->closure_class());
518 const Function& dispatcher = Function::Handle(Z, 519 const Function& dispatcher = Function::Handle(Z,
519 cache_class.GetInvocationDispatcher(Symbols::Call(), 520 cache_class.GetInvocationDispatcher(Symbols::Call(),
520 arguments_descriptor, 521 arguments_descriptor,
521 RawFunction::kInvokeFieldDispatcher, 522 RawFunction::kInvokeFieldDispatcher,
522 true /* create_if_absent */)); 523 true /* create_if_absent */));
523 AddFunction(dispatcher); 524 AddFunction(dispatcher);
524 } 525 }
525 526
526 527
527 void Precompiler::AddField(const Field& field) { 528 void Precompiler::AddField(const Field& field) {
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
1140 cls = it.GetNextClass(); 1141 cls = it.GetNextClass();
1141 if (cls.IsDynamicClass()) { 1142 if (cls.IsDynamicClass()) {
1142 continue; // class 'dynamic' is in the read-only VM isolate. 1143 continue; // class 'dynamic' is in the read-only VM isolate.
1143 } 1144 }
1144 cls.set_is_allocated(false); 1145 cls.set_is_allocated(false);
1145 } 1146 }
1146 } 1147 }
1147 } 1148 }
1148 1149
1149 } // namespace dart 1150 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/parser_test.cc ('k') | runtime/vm/profiler_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698