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

Side by Side Diff: src/arm/lithium-arm.cc

Issue 6708085: Enable GVN for polymorphic loads by not expanding them at the HIR level. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 9 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
OLDNEW
1 // Copyright 2011 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
(...skipping 1755 matching lines...) Expand 10 before | Expand all | Expand 10 after
1766 return new LStoreContextSlot(context, value); 1766 return new LStoreContextSlot(context, value);
1767 } 1767 }
1768 1768
1769 1769
1770 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { 1770 LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) {
1771 return DefineAsRegister( 1771 return DefineAsRegister(
1772 new LLoadNamedField(UseRegisterAtStart(instr->object()))); 1772 new LLoadNamedField(UseRegisterAtStart(instr->object())));
1773 } 1773 }
1774 1774
1775 1775
1776 LInstruction* LChunkBuilder::DoLoadNamedFieldPolymorphic(
1777 HLoadNamedFieldPolymorphic* instr) {
1778 ASSERT(instr->representation().IsTagged());
1779 if (instr->need_generic()) {
1780 LOperand* obj = UseFixed(instr->object(), r0);
1781 LLoadNamedFieldPolymorphic* result = new LLoadNamedFieldPolymorphic(obj);
1782 return MarkAsCall(DefineFixed(result, r0), instr);
1783 } else {
1784 LOperand* obj = UseRegisterAtStart(instr->object());
1785 LLoadNamedFieldPolymorphic* result = new LLoadNamedFieldPolymorphic(obj);
1786 return AssignEnvironment(DefineAsRegister(result));
1787 }
1788 }
1789
1790
1776 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { 1791 LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) {
1777 LOperand* object = UseFixed(instr->object(), r0); 1792 LOperand* object = UseFixed(instr->object(), r0);
1778 LInstruction* result = DefineFixed(new LLoadNamedGeneric(object), r0); 1793 LInstruction* result = DefineFixed(new LLoadNamedGeneric(object), r0);
1779 return MarkAsCall(result, instr); 1794 return MarkAsCall(result, instr);
1780 } 1795 }
1781 1796
1782 1797
1783 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( 1798 LInstruction* LChunkBuilder::DoLoadFunctionPrototype(
1784 HLoadFunctionPrototype* instr) { 1799 HLoadFunctionPrototype* instr) {
1785 return AssignEnvironment(DefineAsRegister( 1800 return AssignEnvironment(DefineAsRegister(
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
2071 2086
2072 2087
2073 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { 2088 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) {
2074 HEnvironment* outer = current_block_->last_environment()->outer(); 2089 HEnvironment* outer = current_block_->last_environment()->outer();
2075 current_block_->UpdateEnvironment(outer); 2090 current_block_->UpdateEnvironment(outer);
2076 return NULL; 2091 return NULL;
2077 } 2092 }
2078 2093
2079 2094
2080 } } // namespace v8::internal 2095 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698