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

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

Issue 183193005: A64: Minor improvement in FullCodeGenerator::VisitObjectLiteral. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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
(...skipping 1672 matching lines...) Expand 10 before | Expand all | Expand 10 after
1683 VisitForAccumulatorValue(value); 1683 VisitForAccumulatorValue(value);
1684 __ Mov(x2, Operand(key->value())); 1684 __ Mov(x2, Operand(key->value()));
1685 __ Peek(x1, 0); 1685 __ Peek(x1, 0);
1686 CallStoreIC(key->LiteralFeedbackId()); 1686 CallStoreIC(key->LiteralFeedbackId());
1687 PrepareForBailoutForId(key->id(), NO_REGISTERS); 1687 PrepareForBailoutForId(key->id(), NO_REGISTERS);
1688 } else { 1688 } else {
1689 VisitForEffect(value); 1689 VisitForEffect(value);
1690 } 1690 }
1691 break; 1691 break;
1692 } 1692 }
1693 // Duplicate receiver on stack.
1694 __ Peek(x0, 0);
1695 __ Push(x0);
1696 VisitForStackValue(key);
1697 VisitForStackValue(value);
1698 if (property->emit_store()) { 1693 if (property->emit_store()) {
1694 // Duplicate receiver on stack.
1695 __ Peek(x0, 0);
1696 __ Push(x0);
1697 VisitForStackValue(key);
1698 VisitForStackValue(value);
1699 __ Mov(x0, Operand(Smi::FromInt(NONE))); // PropertyAttributes 1699 __ Mov(x0, Operand(Smi::FromInt(NONE))); // PropertyAttributes
1700 __ Push(x0); 1700 __ Push(x0);
1701 __ CallRuntime(Runtime::kSetProperty, 4); 1701 __ CallRuntime(Runtime::kSetProperty, 4);
1702 } else { 1702 } else {
1703 __ Drop(3); 1703 VisitForEffect(key);
1704 VisitForEffect(value);
1704 } 1705 }
1705 break; 1706 break;
1706 case ObjectLiteral::Property::PROTOTYPE: 1707 case ObjectLiteral::Property::PROTOTYPE:
1707 // Duplicate receiver on stack.
1708 __ Peek(x0, 0);
1709 // TODO(jbramley): This push shouldn't be necessary if we don't call the
1710 // runtime below. In that case, skip it.
1711 __ Push(x0);
1712 VisitForStackValue(value);
1713 if (property->emit_store()) { 1708 if (property->emit_store()) {
1709 // Duplicate receiver on stack.
1710 __ Peek(x0, 0);
1711 __ Push(x0);
1712 VisitForStackValue(value);
1714 __ CallRuntime(Runtime::kSetPrototype, 2); 1713 __ CallRuntime(Runtime::kSetPrototype, 2);
1715 } else { 1714 } else {
1716 __ Drop(2); 1715 VisitForEffect(value);
1717 } 1716 }
1718 break; 1717 break;
1719 case ObjectLiteral::Property::GETTER: 1718 case ObjectLiteral::Property::GETTER:
1720 accessor_table.lookup(key)->second->getter = value; 1719 accessor_table.lookup(key)->second->getter = value;
1721 break; 1720 break;
1722 case ObjectLiteral::Property::SETTER: 1721 case ObjectLiteral::Property::SETTER:
1723 accessor_table.lookup(key)->second->setter = value; 1722 accessor_table.lookup(key)->second->setter = value;
1724 break; 1723 break;
1725 } 1724 }
1726 } 1725 }
(...skipping 3257 matching lines...) Expand 10 before | Expand all | Expand 10 after
4984 return previous_; 4983 return previous_;
4985 } 4984 }
4986 4985
4987 4986
4988 #undef __ 4987 #undef __
4989 4988
4990 4989
4991 } } // namespace v8::internal 4990 } } // namespace v8::internal
4992 4991
4993 #endif // V8_TARGET_ARCH_A64 4992 #endif // V8_TARGET_ARCH_A64
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698