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

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

Issue 10910224: Using type feedback, eliminate store barriers for indexed stores. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 3 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/flow_graph_builder.h" 5 #include "vm/flow_graph_builder.h"
6 6
7 #include "vm/ast_printer.h" 7 #include "vm/ast_printer.h"
8 #include "vm/code_descriptors.h" 8 #include "vm/code_descriptors.h"
9 #include "vm/dart_entry.h" 9 #include "vm/dart_entry.h"
10 #include "vm/flags.h" 10 #include "vm/flags.h"
(...skipping 2251 matching lines...) Expand 10 before | Expand all | Expand 10 after
2262 node->value()->Visit(&for_value); 2262 node->value()->Visit(&for_value);
2263 Append(for_value); 2263 Append(for_value);
2264 Value* value = NULL; 2264 Value* value = NULL;
2265 if (result_is_needed) { 2265 if (result_is_needed) {
2266 value = Bind(BuildStoreExprTemp(for_value.value())); 2266 value = Bind(BuildStoreExprTemp(for_value.value()));
2267 } else { 2267 } else {
2268 value = for_value.value(); 2268 value = for_value.value();
2269 } 2269 }
2270 arguments->Add(PushArgument(value)); 2270 arguments->Add(PushArgument(value));
2271 2271
2272 const intptr_t checked_argument_count = 1; 2272 const intptr_t checked_argument_count = 3;
2273 const String& name = 2273 const String& name =
2274 String::ZoneHandle(Symbols::New(Token::Str(Token::kASSIGN_INDEX))); 2274 String::ZoneHandle(Symbols::New(Token::Str(Token::kASSIGN_INDEX)));
2275 InstanceCallInstr* store = new InstanceCallInstr(node->token_pos(), 2275 InstanceCallInstr* store = new InstanceCallInstr(node->token_pos(),
2276 name, 2276 name,
2277 Token::kASSIGN_INDEX, 2277 Token::kASSIGN_INDEX,
2278 arguments, 2278 arguments,
2279 Array::ZoneHandle(), 2279 Array::ZoneHandle(),
2280 checked_argument_count); 2280 checked_argument_count);
2281 if (result_is_needed) { 2281 if (result_is_needed) {
2282 Do(store); 2282 Do(store);
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
2631 intptr_t len = OS::SNPrint(NULL, 0, kFormat, function_name, reason) + 1; 2631 intptr_t len = OS::SNPrint(NULL, 0, kFormat, function_name, reason) + 1;
2632 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); 2632 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
2633 OS::SNPrint(chars, len, kFormat, function_name, reason); 2633 OS::SNPrint(chars, len, kFormat, function_name, reason);
2634 const Error& error = Error::Handle( 2634 const Error& error = Error::Handle(
2635 LanguageError::New(String::Handle(String::New(chars)))); 2635 LanguageError::New(String::Handle(String::New(chars))));
2636 Isolate::Current()->long_jump_base()->Jump(1, error); 2636 Isolate::Current()->long_jump_base()->Jump(1, error);
2637 } 2637 }
2638 2638
2639 2639
2640 } // namespace dart 2640 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698