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);