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

Unified Diff: runtime/vm/code_generator_ia32.cc

Issue 9592031: Eliminate IncrOpStaticFieldNode, replace a set of nodes. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/code_generator_ia32.cc
===================================================================
--- runtime/vm/code_generator_ia32.cc (revision 5046)
+++ runtime/vm/code_generator_ia32.cc (working copy)
@@ -1207,51 +1207,6 @@
}
-void CodeGenerator::VisitIncrOpStaticFieldNode(IncrOpStaticFieldNode* node) {
- ASSERT((node->kind() == Token::kINCR) || (node->kind() == Token::kDECR));
- MarkDeoptPoint(node->id(), node->token_index());
- if (node->field().IsNull()) {
- GenerateStaticGetterCall(node->token_index(),
- node->field_class(),
- node->field_name());
- } else {
- __ LoadObject(EDX, node->field());
- __ movl(EAX, FieldAddress(EDX, Field::value_offset()));
- }
- // Value in EAX.
- if (!node->prefix() && IsResultNeeded(node)) {
- // Preserve as result.
- __ pushl(EAX);
- }
- const Immediate value = Immediate(reinterpret_cast<int32_t>(Smi::New(1)));
- const char* operator_name = (node->kind() == Token::kINCR) ? "+" : "-";
- __ pushl(EAX); // Left operand.
- __ pushl(value); // Right operand.
- GenerateBinaryOperatorCall(node->id(), node->token_index(), operator_name);
- // result is in EAX.
- if (node->prefix() && IsResultNeeded(node)) {
- __ pushl(EAX);
- }
- if (node->field().IsNull()) {
- __ pushl(EAX);
- // It is not necessary to generate a type test of the assigned value here,
- // because the setter will check the type of its incoming arguments.
- GenerateStaticSetterCall(node->token_index(),
- node->field_class(),
- node->field_name());
- } else {
- if (FLAG_enable_type_checks) {
- GenerateAssertAssignable(node->id(),
- node->token_index(),
- AbstractType::ZoneHandle(node->field().type()),
- String::ZoneHandle(node->field().name()));
- }
- __ LoadObject(EDX, node->field());
- __ StoreIntoObject(EDX, FieldAddress(EDX, Field::value_offset()), EAX);
- }
-}
-
-
void CodeGenerator::VisitIncrOpIndexedNode(IncrOpIndexedNode* node) {
ASSERT((node->kind() == Token::kINCR) || (node->kind() == Token::kDECR));
node->array()->Visit(this);

Powered by Google App Engine
This is Rietveld 408576698