OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 1862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1873 ASSERT(is_int8(mask.value_) || is_uint8(mask.value_)); | 1873 ASSERT(is_int8(mask.value_) || is_uint8(mask.value_)); |
1874 EnsureSpace ensure_space(this); | 1874 EnsureSpace ensure_space(this); |
1875 last_pc_ = pc_; | 1875 last_pc_ = pc_; |
1876 emit_optional_rex_32(rax, op); | 1876 emit_optional_rex_32(rax, op); |
1877 emit(0xF6); | 1877 emit(0xF6); |
1878 emit_operand(rax, op); // Operation code 0 | 1878 emit_operand(rax, op); // Operation code 0 |
1879 emit(mask.value_); // Low byte emitted. | 1879 emit(mask.value_); // Low byte emitted. |
1880 } | 1880 } |
1881 | 1881 |
1882 | 1882 |
| 1883 void Assembler::testb(const Operand& op, Register reg) { |
| 1884 EnsureSpace ensure_space(this); |
| 1885 last_pc_ = pc_; |
| 1886 if (reg.code() > 3) { |
| 1887 // Register is not one of al, bl, cl, dl. Its encoding needs REX. |
| 1888 emit_rex_32(reg, op); |
| 1889 } else { |
| 1890 emit_optional_rex_32(reg, op); |
| 1891 } |
| 1892 emit(0x84); |
| 1893 emit_operand(reg, op); |
| 1894 } |
| 1895 |
| 1896 |
1883 void Assembler::testl(Register dst, Register src) { | 1897 void Assembler::testl(Register dst, Register src) { |
1884 EnsureSpace ensure_space(this); | 1898 EnsureSpace ensure_space(this); |
1885 last_pc_ = pc_; | 1899 last_pc_ = pc_; |
1886 emit_optional_rex_32(dst, src); | 1900 emit_optional_rex_32(dst, src); |
1887 emit(0x85); | 1901 emit(0x85); |
1888 emit_modrm(dst, src); | 1902 emit_modrm(dst, src); |
1889 } | 1903 } |
1890 | 1904 |
1891 | 1905 |
1892 void Assembler::testl(Register reg, Immediate mask) { | 1906 void Assembler::testl(Register reg, Immediate mask) { |
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2530 written_position_ = current_position_; | 2544 written_position_ = current_position_; |
2531 } | 2545 } |
2532 } | 2546 } |
2533 | 2547 |
2534 | 2548 |
2535 const int RelocInfo::kApplyMask = RelocInfo::kCodeTargetMask | | 2549 const int RelocInfo::kApplyMask = RelocInfo::kCodeTargetMask | |
2536 1 << RelocInfo::INTERNAL_REFERENCE | | 2550 1 << RelocInfo::INTERNAL_REFERENCE | |
2537 1 << RelocInfo::JS_RETURN; | 2551 1 << RelocInfo::JS_RETURN; |
2538 | 2552 |
2539 } } // namespace v8::internal | 2553 } } // namespace v8::internal |
OLD | NEW |