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

Side by Side Diff: src/ia32/macro-assembler-ia32.cc

Issue 553843002: Replace our home-grown BitCast with bit_cast from Chrome/Google3. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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 | « src/ia32/lithium-ia32.cc ('k') | src/ic/ia32/handler-compiler-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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_IA32 7 #if V8_TARGET_ARCH_IA32
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/division-by-constant.h" 10 #include "src/base/division-by-constant.h"
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 FixedArray::kHeaderSize - kHeapObjectTag)); 420 FixedArray::kHeaderSize - kHeapObjectTag));
421 421
422 RecordWrite(object, dst, value, save_fp, remembered_set_action, 422 RecordWrite(object, dst, value, save_fp, remembered_set_action,
423 OMIT_SMI_CHECK, pointers_to_here_check_for_value); 423 OMIT_SMI_CHECK, pointers_to_here_check_for_value);
424 424
425 bind(&done); 425 bind(&done);
426 426
427 // Clobber clobbered input registers when running with the debug-code flag 427 // Clobber clobbered input registers when running with the debug-code flag
428 // turned on to provoke errors. 428 // turned on to provoke errors.
429 if (emit_debug_code()) { 429 if (emit_debug_code()) {
430 mov(value, Immediate(BitCast<int32_t>(kZapValue))); 430 mov(value, Immediate(bit_cast<int32_t>(kZapValue)));
431 mov(index, Immediate(BitCast<int32_t>(kZapValue))); 431 mov(index, Immediate(bit_cast<int32_t>(kZapValue)));
432 } 432 }
433 } 433 }
434 434
435 435
436 void MacroAssembler::RecordWriteField( 436 void MacroAssembler::RecordWriteField(
437 Register object, 437 Register object,
438 int offset, 438 int offset,
439 Register value, 439 Register value,
440 Register dst, 440 Register dst,
441 SaveFPRegsMode save_fp, 441 SaveFPRegsMode save_fp,
(...skipping 23 matching lines...) Expand all
465 } 465 }
466 466
467 RecordWrite(object, dst, value, save_fp, remembered_set_action, 467 RecordWrite(object, dst, value, save_fp, remembered_set_action,
468 OMIT_SMI_CHECK, pointers_to_here_check_for_value); 468 OMIT_SMI_CHECK, pointers_to_here_check_for_value);
469 469
470 bind(&done); 470 bind(&done);
471 471
472 // Clobber clobbered input registers when running with the debug-code flag 472 // Clobber clobbered input registers when running with the debug-code flag
473 // turned on to provoke errors. 473 // turned on to provoke errors.
474 if (emit_debug_code()) { 474 if (emit_debug_code()) {
475 mov(value, Immediate(BitCast<int32_t>(kZapValue))); 475 mov(value, Immediate(bit_cast<int32_t>(kZapValue)));
476 mov(dst, Immediate(BitCast<int32_t>(kZapValue))); 476 mov(dst, Immediate(bit_cast<int32_t>(kZapValue)));
477 } 477 }
478 } 478 }
479 479
480 480
481 void MacroAssembler::RecordWriteForMap( 481 void MacroAssembler::RecordWriteForMap(
482 Register object, 482 Register object,
483 Handle<Map> map, 483 Handle<Map> map,
484 Register scratch1, 484 Register scratch1,
485 Register scratch2, 485 Register scratch2,
486 SaveFPRegsMode save_fp) { 486 SaveFPRegsMode save_fp) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 526
527 bind(&done); 527 bind(&done);
528 528
529 // Count number of write barriers in generated code. 529 // Count number of write barriers in generated code.
530 isolate()->counters()->write_barriers_static()->Increment(); 530 isolate()->counters()->write_barriers_static()->Increment();
531 IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1); 531 IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
532 532
533 // Clobber clobbered input registers when running with the debug-code flag 533 // Clobber clobbered input registers when running with the debug-code flag
534 // turned on to provoke errors. 534 // turned on to provoke errors.
535 if (emit_debug_code()) { 535 if (emit_debug_code()) {
536 mov(value, Immediate(BitCast<int32_t>(kZapValue))); 536 mov(value, Immediate(bit_cast<int32_t>(kZapValue)));
537 mov(scratch1, Immediate(BitCast<int32_t>(kZapValue))); 537 mov(scratch1, Immediate(bit_cast<int32_t>(kZapValue)));
538 mov(scratch2, Immediate(BitCast<int32_t>(kZapValue))); 538 mov(scratch2, Immediate(bit_cast<int32_t>(kZapValue)));
539 } 539 }
540 } 540 }
541 541
542 542
543 void MacroAssembler::RecordWrite( 543 void MacroAssembler::RecordWrite(
544 Register object, 544 Register object,
545 Register address, 545 Register address,
546 Register value, 546 Register value,
547 SaveFPRegsMode fp_mode, 547 SaveFPRegsMode fp_mode,
548 RememberedSetAction remembered_set_action, 548 RememberedSetAction remembered_set_action,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 596
597 bind(&done); 597 bind(&done);
598 598
599 // Count number of write barriers in generated code. 599 // Count number of write barriers in generated code.
600 isolate()->counters()->write_barriers_static()->Increment(); 600 isolate()->counters()->write_barriers_static()->Increment();
601 IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1); 601 IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
602 602
603 // Clobber clobbered registers when running with the debug-code flag 603 // Clobber clobbered registers when running with the debug-code flag
604 // turned on to provoke errors. 604 // turned on to provoke errors.
605 if (emit_debug_code()) { 605 if (emit_debug_code()) {
606 mov(address, Immediate(BitCast<int32_t>(kZapValue))); 606 mov(address, Immediate(bit_cast<int32_t>(kZapValue)));
607 mov(value, Immediate(BitCast<int32_t>(kZapValue))); 607 mov(value, Immediate(bit_cast<int32_t>(kZapValue)));
608 } 608 }
609 } 609 }
610 610
611 611
612 void MacroAssembler::DebugBreak() { 612 void MacroAssembler::DebugBreak() {
613 Move(eax, Immediate(0)); 613 Move(eax, Immediate(0));
614 mov(ebx, Immediate(ExternalReference(Runtime::kDebugBreak, isolate()))); 614 mov(ebx, Immediate(ExternalReference(Runtime::kDebugBreak, isolate())));
615 CEntryStub ces(isolate(), 1); 615 CEntryStub ces(isolate(), 1);
616 call(ces.GetCode(), RelocInfo::DEBUG_BREAK); 616 call(ces.GetCode(), RelocInfo::DEBUG_BREAK);
617 } 617 }
(...skipping 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after
2117 2117
2118 2118
2119 Operand ApiParameterOperand(int index) { 2119 Operand ApiParameterOperand(int index) {
2120 return Operand(esp, index * kPointerSize); 2120 return Operand(esp, index * kPointerSize);
2121 } 2121 }
2122 2122
2123 2123
2124 void MacroAssembler::PrepareCallApiFunction(int argc) { 2124 void MacroAssembler::PrepareCallApiFunction(int argc) {
2125 EnterApiExitFrame(argc); 2125 EnterApiExitFrame(argc);
2126 if (emit_debug_code()) { 2126 if (emit_debug_code()) {
2127 mov(esi, Immediate(BitCast<int32_t>(kZapValue))); 2127 mov(esi, Immediate(bit_cast<int32_t>(kZapValue)));
2128 } 2128 }
2129 } 2129 }
2130 2130
2131 2131
2132 void MacroAssembler::CallApiFunctionAndReturn( 2132 void MacroAssembler::CallApiFunctionAndReturn(
2133 Register function_address, 2133 Register function_address,
2134 ExternalReference thunk_ref, 2134 ExternalReference thunk_ref,
2135 Operand thunk_last_arg, 2135 Operand thunk_last_arg,
2136 int stack_space, 2136 int stack_space,
2137 Operand return_value_operand, 2137 Operand return_value_operand,
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
2652 } 2652 }
2653 2653
2654 2654
2655 void MacroAssembler::Move(const Operand& dst, const Immediate& x) { 2655 void MacroAssembler::Move(const Operand& dst, const Immediate& x) {
2656 mov(dst, x); 2656 mov(dst, x);
2657 } 2657 }
2658 2658
2659 2659
2660 void MacroAssembler::Move(XMMRegister dst, double val) { 2660 void MacroAssembler::Move(XMMRegister dst, double val) {
2661 // TODO(titzer): recognize double constants with ExternalReferences. 2661 // TODO(titzer): recognize double constants with ExternalReferences.
2662 uint64_t int_val = BitCast<uint64_t, double>(val); 2662 uint64_t int_val = bit_cast<uint64_t, double>(val);
2663 if (int_val == 0) { 2663 if (int_val == 0) {
2664 xorps(dst, dst); 2664 xorps(dst, dst);
2665 } else { 2665 } else {
2666 int32_t lower = static_cast<int32_t>(int_val); 2666 int32_t lower = static_cast<int32_t>(int_val);
2667 int32_t upper = static_cast<int32_t>(int_val >> kBitsPerInt); 2667 int32_t upper = static_cast<int32_t>(int_val >> kBitsPerInt);
2668 push(Immediate(upper)); 2668 push(Immediate(upper));
2669 push(Immediate(lower)); 2669 push(Immediate(lower));
2670 movsd(dst, Operand(esp, 0)); 2670 movsd(dst, Operand(esp, 0));
2671 add(esp, Immediate(kDoubleSize)); 2671 add(esp, Immediate(kDoubleSize));
2672 } 2672 }
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
3434 if (mag.shift > 0) sar(edx, mag.shift); 3434 if (mag.shift > 0) sar(edx, mag.shift);
3435 mov(eax, dividend); 3435 mov(eax, dividend);
3436 shr(eax, 31); 3436 shr(eax, 31);
3437 add(edx, eax); 3437 add(edx, eax);
3438 } 3438 }
3439 3439
3440 3440
3441 } } // namespace v8::internal 3441 } } // namespace v8::internal
3442 3442
3443 #endif // V8_TARGET_ARCH_IA32 3443 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/ia32/lithium-ia32.cc ('k') | src/ic/ia32/handler-compiler-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698