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

Side by Side Diff: src/x64/lithium-gap-resolver-x64.cc

Issue 53573004: Introduce orps for IA32/X64 (Closed) Base URL: git://github.com/v8/v8.git@upstream
Patch Set: Created 7 years, 1 month 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
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 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 ASSERT((source->IsDoubleRegister() && destination->IsDoubleStackSlot()) || 298 ASSERT((source->IsDoubleRegister() && destination->IsDoubleStackSlot()) ||
299 (source->IsDoubleStackSlot() && destination->IsDoubleRegister())); 299 (source->IsDoubleStackSlot() && destination->IsDoubleRegister()));
300 XMMRegister reg = cgen_->ToDoubleRegister(source->IsDoubleRegister() 300 XMMRegister reg = cgen_->ToDoubleRegister(source->IsDoubleRegister()
301 ? source 301 ? source
302 : destination); 302 : destination);
303 LOperand* other = source->IsDoubleRegister() ? destination : source; 303 LOperand* other = source->IsDoubleRegister() ? destination : source;
304 ASSERT(other->IsDoubleStackSlot()); 304 ASSERT(other->IsDoubleStackSlot());
305 Operand other_operand = cgen_->ToOperand(other); 305 Operand other_operand = cgen_->ToOperand(other);
306 __ movsd(xmm0, other_operand); 306 __ movsd(xmm0, other_operand);
307 __ movsd(other_operand, reg); 307 __ movsd(other_operand, reg);
308 __ movsd(reg, xmm0); 308 __ movaps(reg, xmm0);
309 309
310 } else { 310 } else {
311 // No other combinations are possible. 311 // No other combinations are possible.
312 UNREACHABLE(); 312 UNREACHABLE();
313 } 313 }
314 314
315 // The swap of source and destination has executed a move from source to 315 // The swap of source and destination has executed a move from source to
316 // destination. 316 // destination.
317 moves_[index].Eliminate(); 317 moves_[index].Eliminate();
318 318
319 // Any unperformed (including pending) move with a source of either 319 // Any unperformed (including pending) move with a source of either
320 // this move's source or destination needs to have their source 320 // this move's source or destination needs to have their source
321 // changed to reflect the state of affairs after the swap. 321 // changed to reflect the state of affairs after the swap.
322 for (int i = 0; i < moves_.length(); ++i) { 322 for (int i = 0; i < moves_.length(); ++i) {
323 LMoveOperands other_move = moves_[i]; 323 LMoveOperands other_move = moves_[i];
324 if (other_move.Blocks(source)) { 324 if (other_move.Blocks(source)) {
325 moves_[i].set_source(destination); 325 moves_[i].set_source(destination);
326 } else if (other_move.Blocks(destination)) { 326 } else if (other_move.Blocks(destination)) {
327 moves_[i].set_source(source); 327 moves_[i].set_source(source);
328 } 328 }
329 } 329 }
330 } 330 }
331 331
332 #undef __ 332 #undef __
333 333
334 } } // namespace v8::internal 334 } } // namespace v8::internal
335 335
336 #endif // V8_TARGET_ARCH_X64 336 #endif // V8_TARGET_ARCH_X64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698