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

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

Issue 10827288: - Support for patching of class methods and fields. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 4 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
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 #include "vm/intermediate_language.h" 5 #include "vm/intermediate_language.h"
6 6
7 #include "vm/bit_vector.h" 7 #include "vm/bit_vector.h"
8 #include "vm/dart_entry.h" 8 #include "vm/dart_entry.h"
9 #include "vm/flow_graph_allocator.h" 9 #include "vm/flow_graph_allocator.h"
10 #include "vm/flow_graph_builder.h" 10 #include "vm/flow_graph_builder.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 } 61 }
62 definition_->set_use_list(this); 62 definition_->set_use_list(this);
63 } 63 }
64 64
65 65
66 MethodRecognizer::Kind MethodRecognizer::RecognizeKind( 66 MethodRecognizer::Kind MethodRecognizer::RecognizeKind(
67 const Function& function) { 67 const Function& function) {
68 // Only core library methods can be recognized. 68 // Only core library methods can be recognized.
69 const Library& core_lib = Library::Handle(Library::CoreLibrary()); 69 const Library& core_lib = Library::Handle(Library::CoreLibrary());
70 const Library& core_impl_lib = Library::Handle(Library::CoreImplLibrary()); 70 const Library& core_impl_lib = Library::Handle(Library::CoreImplLibrary());
71 const Class& function_class = Class::Handle(function.owner()); 71 const Class& function_class = Class::Handle(function.Owner());
72 if ((function_class.library() != core_lib.raw()) && 72 if ((function_class.library() != core_lib.raw()) &&
73 (function_class.library() != core_impl_lib.raw())) { 73 (function_class.library() != core_impl_lib.raw())) {
74 return kUnknown; 74 return kUnknown;
75 } 75 }
76 const String& recognize_name = String::Handle(function.name()); 76 const String& recognize_name = String::Handle(function.name());
77 const String& recognize_class = String::Handle(function_class.Name()); 77 const String& recognize_class = String::Handle(function_class.Name());
78 String& test_function_name = String::Handle(); 78 String& test_function_name = String::Handle();
79 String& test_class_name = String::Handle(); 79 String& test_class_name = String::Handle();
80 #define RECOGNIZE_FUNCTION(class_name, function_name, enum_name) \ 80 #define RECOGNIZE_FUNCTION(class_name, function_name, enum_name) \
81 test_function_name = Symbols::New(#function_name); \ 81 test_function_name = Symbols::New(#function_name); \
(...skipping 1167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 value_reg); 1249 value_reg);
1250 } 1250 }
1251 1251
1252 1252
1253 LocationSummary* AllocateObjectComp::MakeLocationSummary() const { 1253 LocationSummary* AllocateObjectComp::MakeLocationSummary() const {
1254 return MakeCallSummary(); 1254 return MakeCallSummary();
1255 } 1255 }
1256 1256
1257 1257
1258 void AllocateObjectComp::EmitNativeCode(FlowGraphCompiler* compiler) { 1258 void AllocateObjectComp::EmitNativeCode(FlowGraphCompiler* compiler) {
1259 const Class& cls = Class::ZoneHandle(constructor().owner()); 1259 const Class& cls = Class::ZoneHandle(constructor().Owner());
1260 const Code& stub = Code::Handle(StubCode::GetAllocationStubForClass(cls)); 1260 const Code& stub = Code::Handle(StubCode::GetAllocationStubForClass(cls));
1261 const ExternalLabel label(cls.ToCString(), stub.EntryPoint()); 1261 const ExternalLabel label(cls.ToCString(), stub.EntryPoint());
1262 compiler->GenerateCall(token_pos(), 1262 compiler->GenerateCall(token_pos(),
1263 try_index(), 1263 try_index(),
1264 &label, 1264 &label,
1265 PcDescriptors::kOther); 1265 PcDescriptors::kOther);
1266 __ Drop(ArgumentCount()); // Discard arguments. 1266 __ Drop(ArgumentCount()); // Discard arguments.
1267 } 1267 }
1268 1268
1269 1269
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 if (compiler->is_ssa()) { 1303 if (compiler->is_ssa()) {
1304 ASSERT(locs()->in(0).IsRegister()); 1304 ASSERT(locs()->in(0).IsRegister());
1305 __ PushRegister(locs()->in(0).reg()); 1305 __ PushRegister(locs()->in(0).reg());
1306 } 1306 }
1307 } 1307 }
1308 1308
1309 1309
1310 #undef __ 1310 #undef __
1311 1311
1312 } // namespace dart 1312 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698