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

Side by Side Diff: src/ia32/full-codegen-ia32.cc

Issue 6104004: Fix errors in x64 crankshaft port, add failing tests to test expectations. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 9 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 | src/x64/full-codegen-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 2010 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution. 11 // with the distribution.
(...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after
1490 VisitForAccumulatorValue(property->obj()); 1490 VisitForAccumulatorValue(property->obj());
1491 __ push(result_register()); 1491 __ push(result_register());
1492 } else { 1492 } else {
1493 VisitForStackValue(property->obj()); 1493 VisitForStackValue(property->obj());
1494 } 1494 }
1495 break; 1495 break;
1496 case KEYED_PROPERTY: { 1496 case KEYED_PROPERTY: {
1497 if (expr->is_compound()) { 1497 if (expr->is_compound()) {
1498 if (property->is_arguments_access()) { 1498 if (property->is_arguments_access()) {
1499 VariableProxy* obj_proxy = property->obj()->AsVariableProxy(); 1499 VariableProxy* obj_proxy = property->obj()->AsVariableProxy();
1500 __ push(EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx)); 1500 MemOperand slot_operand =
1501 EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx);
1502 __ push(slot_operand);
1501 __ mov(eax, Immediate(property->key()->AsLiteral()->handle())); 1503 __ mov(eax, Immediate(property->key()->AsLiteral()->handle()));
1502 } else { 1504 } else {
1503 VisitForStackValue(property->obj()); 1505 VisitForStackValue(property->obj());
1504 VisitForAccumulatorValue(property->key()); 1506 VisitForAccumulatorValue(property->key());
1505 } 1507 }
1506 __ mov(edx, Operand(esp, 0)); 1508 __ mov(edx, Operand(esp, 0));
1507 __ push(eax); 1509 __ push(eax);
1508 } else { 1510 } else {
1509 if (property->is_arguments_access()) { 1511 if (property->is_arguments_access()) {
1510 VariableProxy* obj_proxy = property->obj()->AsVariableProxy(); 1512 VariableProxy* obj_proxy = property->obj()->AsVariableProxy();
1511 __ push(EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx)); 1513 MemOperand slot_operand =
1514 EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx);
1515 __ push(slot_operand);
1512 __ push(Immediate(property->key()->AsLiteral()->handle())); 1516 __ push(Immediate(property->key()->AsLiteral()->handle()));
1513 } else { 1517 } else {
1514 VisitForStackValue(property->obj()); 1518 VisitForStackValue(property->obj());
1515 VisitForStackValue(property->key()); 1519 VisitForStackValue(property->key());
1516 } 1520 }
1517 } 1521 }
1518 break; 1522 break;
1519 } 1523 }
1520 } 1524 }
1521 1525
(...skipping 2210 matching lines...) Expand 10 before | Expand all | Expand 10 after
3732 __ push(Immediate(Smi::FromInt(0))); 3736 __ push(Immediate(Smi::FromInt(0)));
3733 } 3737 }
3734 if (assign_type == NAMED_PROPERTY) { 3738 if (assign_type == NAMED_PROPERTY) {
3735 // Put the object both on the stack and in the accumulator. 3739 // Put the object both on the stack and in the accumulator.
3736 VisitForAccumulatorValue(prop->obj()); 3740 VisitForAccumulatorValue(prop->obj());
3737 __ push(eax); 3741 __ push(eax);
3738 EmitNamedPropertyLoad(prop); 3742 EmitNamedPropertyLoad(prop);
3739 } else { 3743 } else {
3740 if (prop->is_arguments_access()) { 3744 if (prop->is_arguments_access()) {
3741 VariableProxy* obj_proxy = prop->obj()->AsVariableProxy(); 3745 VariableProxy* obj_proxy = prop->obj()->AsVariableProxy();
3742 __ push(EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx)); 3746 MemOperand slot_operand =
3747 EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx);
3748 __ push(slot_operand);
3743 __ mov(eax, Immediate(prop->key()->AsLiteral()->handle())); 3749 __ mov(eax, Immediate(prop->key()->AsLiteral()->handle()));
3744 } else { 3750 } else {
3745 VisitForStackValue(prop->obj()); 3751 VisitForStackValue(prop->obj());
3746 VisitForAccumulatorValue(prop->key()); 3752 VisitForAccumulatorValue(prop->key());
3747 } 3753 }
3748 __ mov(edx, Operand(esp, 0)); 3754 __ mov(edx, Operand(esp, 0));
3749 __ push(eax); 3755 __ push(eax);
3750 EmitKeyedPropertyLoad(prop); 3756 EmitKeyedPropertyLoad(prop);
3751 } 3757 }
3752 } 3758 }
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
4259 // And return. 4265 // And return.
4260 __ ret(0); 4266 __ ret(0);
4261 } 4267 }
4262 4268
4263 4269
4264 #undef __ 4270 #undef __
4265 4271
4266 } } // namespace v8::internal 4272 } } // namespace v8::internal
4267 4273
4268 #endif // V8_TARGET_ARCH_IA32 4274 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « no previous file | src/x64/full-codegen-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698