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 28 matching lines...) Expand all Loading... |
39 using v8::internal::CodeDesc; | 39 using v8::internal::CodeDesc; |
40 using v8::internal::FUNCTION_CAST; | 40 using v8::internal::FUNCTION_CAST; |
41 using v8::internal::Immediate; | 41 using v8::internal::Immediate; |
42 using v8::internal::Isolate; | 42 using v8::internal::Isolate; |
43 using v8::internal::Label; | 43 using v8::internal::Label; |
44 using v8::internal::OS; | 44 using v8::internal::OS; |
45 using v8::internal::Operand; | 45 using v8::internal::Operand; |
46 using v8::internal::byte; | 46 using v8::internal::byte; |
47 using v8::internal::greater; | 47 using v8::internal::greater; |
48 using v8::internal::less_equal; | 48 using v8::internal::less_equal; |
| 49 using v8::internal::equal; |
49 using v8::internal::not_equal; | 50 using v8::internal::not_equal; |
50 using v8::internal::r13; | 51 using v8::internal::r13; |
51 using v8::internal::r15; | 52 using v8::internal::r15; |
52 using v8::internal::r8; | 53 using v8::internal::r8; |
53 using v8::internal::r9; | 54 using v8::internal::r9; |
54 using v8::internal::rax; | 55 using v8::internal::rax; |
55 using v8::internal::rbp; | 56 using v8::internal::rbp; |
56 using v8::internal::rcx; | 57 using v8::internal::rcx; |
57 using v8::internal::rdi; | 58 using v8::internal::rdi; |
58 using v8::internal::rdx; | 59 using v8::internal::rdx; |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 CHECK(!Operand(rbp, rax, times_1, offset).AddressUsesRegister(rsp)); | 339 CHECK(!Operand(rbp, rax, times_1, offset).AddressUsesRegister(rsp)); |
339 | 340 |
340 CHECK(Operand(rsp, rbp, times_1, offset).AddressUsesRegister(rsp)); | 341 CHECK(Operand(rsp, rbp, times_1, offset).AddressUsesRegister(rsp)); |
341 CHECK(Operand(rsp, rbp, times_1, offset).AddressUsesRegister(rbp)); | 342 CHECK(Operand(rsp, rbp, times_1, offset).AddressUsesRegister(rbp)); |
342 CHECK(!Operand(rsp, rbp, times_1, offset).AddressUsesRegister(rax)); | 343 CHECK(!Operand(rsp, rbp, times_1, offset).AddressUsesRegister(rax)); |
343 CHECK(!Operand(rsp, rbp, times_1, offset).AddressUsesRegister(r15)); | 344 CHECK(!Operand(rsp, rbp, times_1, offset).AddressUsesRegister(r15)); |
344 CHECK(!Operand(rsp, rbp, times_1, offset).AddressUsesRegister(r13)); | 345 CHECK(!Operand(rsp, rbp, times_1, offset).AddressUsesRegister(r13)); |
345 } | 346 } |
346 } | 347 } |
347 | 348 |
| 349 |
| 350 TEST(AssemblerX64LabelChaining) { |
| 351 // Test chaining of label usages within instructions (issue 1644). |
| 352 v8::HandleScope scope; |
| 353 Assembler assm(Isolate::Current(), NULL, 0); |
| 354 |
| 355 Label target; |
| 356 __ j(equal, &target); |
| 357 __ j(not_equal, &target); |
| 358 __ bind(&target); |
| 359 __ nop(); |
| 360 } |
| 361 |
348 #undef __ | 362 #undef __ |
OLD | NEW |