Mercurial > hg > truffle
comparison src/cpu/x86/vm/x86_64.ad @ 5984:fd09f2d8283e
7157141: crash in 64 bit with corrupted oops
Reviewed-by: kvn, iveresov
author | never |
---|---|
date | Mon, 02 Apr 2012 16:05:56 -0700 |
parents | 61b82be3b1ff |
children | 6759698e3140 |
comparison
equal
deleted
inserted
replaced
5977:e02867d10860 | 5984:fd09f2d8283e |
---|---|
3367 op_cost(5); | 3367 op_cost(5); |
3368 format %{ %} | 3368 format %{ %} |
3369 interface(CONST_INTER); | 3369 interface(CONST_INTER); |
3370 %} | 3370 %} |
3371 | 3371 |
3372 operand immP_poll() %{ | |
3373 predicate(n->get_ptr() != 0 && n->get_ptr() == (intptr_t)os::get_polling_page()); | |
3374 match(ConP); | |
3375 | |
3376 // formats are generated automatically for constants and base registers | |
3377 format %{ %} | |
3378 interface(CONST_INTER); | |
3379 %} | |
3380 | |
3381 // Pointer Immediate | 3372 // Pointer Immediate |
3382 operand immN() %{ | 3373 operand immN() %{ |
3383 match(ConN); | 3374 match(ConN); |
3384 | 3375 |
3385 op_cost(10); | 3376 op_cost(10); |
5722 ins_cost(50); | 5713 ins_cost(50); |
5723 format %{ "xorl $dst, $dst\t# ptr" %} | 5714 format %{ "xorl $dst, $dst\t# ptr" %} |
5724 opcode(0x33); /* + rd */ | 5715 opcode(0x33); /* + rd */ |
5725 ins_encode(REX_reg_reg(dst, dst), OpcP, reg_reg(dst, dst)); | 5716 ins_encode(REX_reg_reg(dst, dst), OpcP, reg_reg(dst, dst)); |
5726 ins_pipe(ialu_reg); | 5717 ins_pipe(ialu_reg); |
5727 %} | |
5728 | |
5729 instruct loadConP_poll(rRegP dst, immP_poll src) %{ | |
5730 match(Set dst src); | |
5731 format %{ "movq $dst, $src\t!ptr" %} | |
5732 ins_encode %{ | |
5733 AddressLiteral polling_page(os::get_polling_page(), relocInfo::poll_type); | |
5734 __ lea($dst$$Register, polling_page); | |
5735 %} | |
5736 ins_pipe(ialu_reg_fat); | |
5737 %} | 5718 %} |
5738 | 5719 |
5739 instruct loadConP31(rRegP dst, immP31 src, rFlagsReg cr) | 5720 instruct loadConP31(rRegP dst, immP31 src, rFlagsReg cr) |
5740 %{ | 5721 %{ |
5741 match(Set dst src); | 5722 match(Set dst src); |