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

Side by Side Diff: src/x64/macro-assembler-x64.h

Issue 21014003: Optionally use 31-bits SMI value for 64-bit system (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 630 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 641
642 // Bitwise operations. 642 // Bitwise operations.
643 void SmiNot(Register dst, Register src); 643 void SmiNot(Register dst, Register src);
644 void SmiAnd(Register dst, Register src1, Register src2); 644 void SmiAnd(Register dst, Register src1, Register src2);
645 void SmiOr(Register dst, Register src1, Register src2); 645 void SmiOr(Register dst, Register src1, Register src2);
646 void SmiXor(Register dst, Register src1, Register src2); 646 void SmiXor(Register dst, Register src1, Register src2);
647 void SmiAndConstant(Register dst, Register src1, Smi* constant); 647 void SmiAndConstant(Register dst, Register src1, Smi* constant);
648 void SmiOrConstant(Register dst, Register src1, Smi* constant); 648 void SmiOrConstant(Register dst, Register src1, Smi* constant);
649 void SmiXorConstant(Register dst, Register src1, Smi* constant); 649 void SmiXorConstant(Register dst, Register src1, Smi* constant);
650 650
651 #if !V8_USE_31_BITS_SMI_VALUE
651 void SmiShiftLeftConstant(Register dst, 652 void SmiShiftLeftConstant(Register dst,
652 Register src, 653 Register src,
653 int shift_value); 654 int shift_value);
655 #else
656 void SmiShiftLeftConstant(Register dst,
657 Register src,
658 int shift_value,
659 Label* on_not_smi_result);
660 #endif
654 void SmiShiftLogicalRightConstant(Register dst, 661 void SmiShiftLogicalRightConstant(Register dst,
655 Register src, 662 Register src,
656 int shift_value, 663 int shift_value,
657 Label* on_not_smi_result, 664 Label* on_not_smi_result,
658 Label::Distance near_jump = Label::kFar); 665 Label::Distance near_jump = Label::kFar);
659 void SmiShiftArithmeticRightConstant(Register dst, 666 void SmiShiftArithmeticRightConstant(Register dst,
660 Register src, 667 Register src,
661 int shift_value); 668 int shift_value);
662 669
663 // Shifts a smi value to the left, and returns the result if that is a smi. 670 // Shifts a smi value to the left, and returns the result if that is a smi.
664 // Uses and clobbers rcx, so dst may not be rcx. 671 // Uses and clobbers rcx, so dst may not be rcx.
672 #if !V8_USE_31_BITS_SMI_VALUE
665 void SmiShiftLeft(Register dst, 673 void SmiShiftLeft(Register dst,
666 Register src1, 674 Register src1,
667 Register src2); 675 Register src2);
676 #else
677 void SmiShiftLeft(Register dst,
678 Register src1,
679 Register src2,
680 Label* on_not_smi_result);
681 #endif
668 // Shifts a smi value to the right, shifting in zero bits at the top, and 682 // Shifts a smi value to the right, shifting in zero bits at the top, and
669 // returns the unsigned intepretation of the result if that is a smi. 683 // returns the unsigned intepretation of the result if that is a smi.
670 // Uses and clobbers rcx, so dst may not be rcx. 684 // Uses and clobbers rcx, so dst may not be rcx.
671 void SmiShiftLogicalRight(Register dst, 685 void SmiShiftLogicalRight(Register dst,
672 Register src1, 686 Register src1,
673 Register src2, 687 Register src2,
674 Label* on_not_smi_result, 688 Label* on_not_smi_result,
675 Label::Distance near_jump = Label::kFar); 689 Label::Distance near_jump = Label::kFar);
676 // Shifts a smi value to the right, sign extending the top, and 690 // Shifts a smi value to the right, sign extending the top, and
677 // returns the signed intepretation of the result. That will always 691 // returns the signed intepretation of the result. That will always
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 masm->popfq(); \ 1549 masm->popfq(); \
1536 } \ 1550 } \
1537 masm-> 1551 masm->
1538 #else 1552 #else
1539 #define ACCESS_MASM(masm) masm-> 1553 #define ACCESS_MASM(masm) masm->
1540 #endif 1554 #endif
1541 1555
1542 } } // namespace v8::internal 1556 } } // namespace v8::internal
1543 1557
1544 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ 1558 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698