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

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

Issue 6479014: Fix bug in register requirements for function.apply.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: added ARM files Created 9 years, 10 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/ia32/lithium-ia32.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 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 // temporaries and outputs because all registers 63 // temporaries and outputs because all registers
64 // are blocked by the calling convention. 64 // are blocked by the calling convention.
65 // Inputs can use either fixed register or have a short lifetime (be 65 // Inputs can use either fixed register or have a short lifetime (be
66 // used at start of the instruction). 66 // used at start of the instruction).
67 ASSERT(Output() == NULL || 67 ASSERT(Output() == NULL ||
68 LUnallocated::cast(Output())->HasFixedPolicy() || 68 LUnallocated::cast(Output())->HasFixedPolicy() ||
69 !LUnallocated::cast(Output())->HasRegisterPolicy()); 69 !LUnallocated::cast(Output())->HasRegisterPolicy());
70 for (UseIterator it(this); it.HasNext(); it.Advance()) { 70 for (UseIterator it(this); it.HasNext(); it.Advance()) {
71 LOperand* operand = it.Next(); 71 LOperand* operand = it.Next();
72 ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() || 72 ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
73 LUnallocated::cast(operand)->IsUsedAtStart() ||
74 !LUnallocated::cast(operand)->HasRegisterPolicy()); 73 !LUnallocated::cast(operand)->HasRegisterPolicy());
75 } 74 }
76 for (TempIterator it(this); it.HasNext(); it.Advance()) { 75 for (TempIterator it(this); it.HasNext(); it.Advance()) {
77 LOperand* operand = it.Next(); 76 LOperand* operand = it.Next();
78 ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() || 77 ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
79 !LUnallocated::cast(operand)->HasRegisterPolicy()); 78 !LUnallocated::cast(operand)->HasRegisterPolicy());
80 } 79 }
81 } 80 }
82 #endif 81 #endif
83 82
(...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after
1126 LInstanceOfKnownGlobal* result = 1125 LInstanceOfKnownGlobal* result =
1127 new LInstanceOfKnownGlobal(UseFixed(instr->value(), r0), FixedTemp(r4)); 1126 new LInstanceOfKnownGlobal(UseFixed(instr->value(), r0), FixedTemp(r4));
1128 MarkAsSaveDoubles(result); 1127 MarkAsSaveDoubles(result);
1129 return AssignEnvironment(AssignPointerMap(DefineFixed(result, r0))); 1128 return AssignEnvironment(AssignPointerMap(DefineFixed(result, r0)));
1130 } 1129 }
1131 1130
1132 1131
1133 LInstruction* LChunkBuilder::DoApplyArguments(HApplyArguments* instr) { 1132 LInstruction* LChunkBuilder::DoApplyArguments(HApplyArguments* instr) {
1134 LOperand* function = UseFixed(instr->function(), r1); 1133 LOperand* function = UseFixed(instr->function(), r1);
1135 LOperand* receiver = UseFixed(instr->receiver(), r0); 1134 LOperand* receiver = UseFixed(instr->receiver(), r0);
1136 LOperand* length = UseRegisterAtStart(instr->length()); 1135 LOperand* length = UseFixed(instr->length(), r2);
1137 LOperand* elements = UseRegisterAtStart(instr->elements()); 1136 LOperand* elements = UseFixed(instr->elements(), r3);
1138 LApplyArguments* result = new LApplyArguments(function, 1137 LApplyArguments* result = new LApplyArguments(function,
1139 receiver, 1138 receiver,
1140 length, 1139 length,
1141 elements); 1140 elements);
1142 return MarkAsCall(DefineFixed(result, r0), instr, CAN_DEOPTIMIZE_EAGERLY); 1141 return MarkAsCall(DefineFixed(result, r0), instr, CAN_DEOPTIMIZE_EAGERLY);
1143 } 1142 }
1144 1143
1145 1144
1146 LInstruction* LChunkBuilder::DoPushArgument(HPushArgument* instr) { 1145 LInstruction* LChunkBuilder::DoPushArgument(HPushArgument* instr) {
1147 ++argument_count_; 1146 ++argument_count_;
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
1948 1947
1949 1948
1950 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { 1949 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) {
1951 HEnvironment* outer = current_block_->last_environment()->outer(); 1950 HEnvironment* outer = current_block_->last_environment()->outer();
1952 current_block_->UpdateEnvironment(outer); 1951 current_block_->UpdateEnvironment(outer);
1953 return NULL; 1952 return NULL;
1954 } 1953 }
1955 1954
1956 1955
1957 } } // namespace v8::internal 1956 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/ia32/lithium-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698