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

Side by Side Diff: vm/code_generator_ia32.cc

Issue 9265021: Improve compile times for swarm application startup (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 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 | « no previous file | vm/code_generator_x64.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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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/globals.h" // Needed here to get TARGET_ARCH_IA32. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32.
6 #if defined(TARGET_ARCH_IA32) 6 #if defined(TARGET_ARCH_IA32)
7 7
8 #include "vm/code_generator.h" 8 #include "vm/code_generator.h"
9 9
10 #include "lib/error.h" 10 #include "lib/error.h"
(...skipping 2472 matching lines...) Expand 10 before | Expand all | Expand 10 after
2483 2483
2484 // Pop out all the other arguments on the stack. 2484 // Pop out all the other arguments on the stack.
2485 __ addl(ESP, Immediate(num_args * kWordSize)); 2485 __ addl(ESP, Immediate(num_args * kWordSize));
2486 } 2486 }
2487 2487
2488 2488
2489 // Expects receiver on stack, returns result in EAX.. 2489 // Expects receiver on stack, returns result in EAX..
2490 void CodeGenerator::GenerateInstanceGetterCall(intptr_t node_id, 2490 void CodeGenerator::GenerateInstanceGetterCall(intptr_t node_id,
2491 intptr_t token_index, 2491 intptr_t token_index,
2492 const String& field_name) { 2492 const String& field_name) {
2493 const String& getter_name = String::ZoneHandle(Field::GetterName(field_name)); 2493 const String& getter_name =
2494 String::ZoneHandle(Field::GetterSymbol(field_name));
2494 const int kNumberOfArguments = 1; 2495 const int kNumberOfArguments = 1;
2495 const Array& kNoArgumentNames = Array::Handle(); 2496 const Array& kNoArgumentNames = Array::Handle();
2496 const int kNumArgumentsChecked = 1; 2497 const int kNumArgumentsChecked = 1;
2497 GenerateInstanceCall(node_id, 2498 GenerateInstanceCall(node_id,
2498 token_index, 2499 token_index,
2499 getter_name, 2500 getter_name,
2500 kNumberOfArguments, 2501 kNumberOfArguments,
2501 kNoArgumentNames, 2502 kNoArgumentNames,
2502 kNumArgumentsChecked); 2503 kNumArgumentsChecked);
2503 } 2504 }
2504 2505
2505 2506
2506 // Call to the instance getter. 2507 // Call to the instance getter.
2507 void CodeGenerator::VisitInstanceGetterNode(InstanceGetterNode* node) { 2508 void CodeGenerator::VisitInstanceGetterNode(InstanceGetterNode* node) {
2508 node->receiver()->Visit(this); 2509 node->receiver()->Visit(this);
2509 MarkDeoptPoint(node->id(), node->token_index()); 2510 MarkDeoptPoint(node->id(), node->token_index());
2510 GenerateInstanceGetterCall(node->id(), 2511 GenerateInstanceGetterCall(node->id(),
2511 node->token_index(), 2512 node->token_index(),
2512 node->field_name()); 2513 node->field_name());
2513 if (IsResultNeeded(node)) { 2514 if (IsResultNeeded(node)) {
2514 __ pushl(EAX); 2515 __ pushl(EAX);
2515 } 2516 }
2516 } 2517 }
2517 2518
2518 2519
2519 // Expects receiver and value on stack. 2520 // Expects receiver and value on stack.
2520 void CodeGenerator::GenerateInstanceSetterCall(intptr_t node_id, 2521 void CodeGenerator::GenerateInstanceSetterCall(intptr_t node_id,
2521 intptr_t token_index, 2522 intptr_t token_index,
2522 const String& field_name) { 2523 const String& field_name) {
2523 const String& setter_name = String::ZoneHandle(Field::SetterName(field_name)); 2524 const String& setter_name =
2525 String::ZoneHandle(Field::SetterSymbol(field_name));
2524 const int kNumberOfArguments = 2; // receiver + value. 2526 const int kNumberOfArguments = 2; // receiver + value.
2525 const Array& kNoArgumentNames = Array::Handle(); 2527 const Array& kNoArgumentNames = Array::Handle();
2526 const int kNumArgumentsChecked = 1; 2528 const int kNumArgumentsChecked = 1;
2527 GenerateInstanceCall(node_id, 2529 GenerateInstanceCall(node_id,
2528 token_index, 2530 token_index,
2529 setter_name, 2531 setter_name,
2530 kNumberOfArguments, 2532 kNumberOfArguments,
2531 kNoArgumentNames, 2533 kNoArgumentNames,
2532 kNumArgumentsChecked); 2534 kNumArgumentsChecked);
2533 } 2535 }
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
2798 const Error& error = Error::Handle( 2800 const Error& error = Error::Handle(
2799 Parser::FormatError(script, token_index, "Error", format, args)); 2801 Parser::FormatError(script, token_index, "Error", format, args));
2800 va_end(args); 2802 va_end(args);
2801 Isolate::Current()->long_jump_base()->Jump(1, error); 2803 Isolate::Current()->long_jump_base()->Jump(1, error);
2802 UNREACHABLE(); 2804 UNREACHABLE();
2803 } 2805 }
2804 2806
2805 } // namespace dart 2807 } // namespace dart
2806 2808
2807 #endif // defined TARGET_ARCH_IA32 2809 #endif // defined TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « no previous file | vm/code_generator_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698