comparison src/cpu/x86/vm/x86_64.ad @ 186:cf1821c649d9

Merge
author never
date Fri, 06 Jun 2008 14:34:24 -0700
parents 44abbb0d4c18
children d1605aabd0a1 1e026f8da827
comparison
equal deleted inserted replaced
179:1f809e010142 186:cf1821c649d9
6147 instruct loadNKlass(rRegN dst, memory mem) 6147 instruct loadNKlass(rRegN dst, memory mem)
6148 %{ 6148 %{
6149 match(Set dst (LoadNKlass mem)); 6149 match(Set dst (LoadNKlass mem));
6150 6150
6151 ins_cost(125); // XXX 6151 ins_cost(125); // XXX
6152 format %{ "movl $dst, $mem\t# compressed klass ptr\n\t" %} 6152 format %{ "movl $dst, $mem\t# compressed klass ptr" %}
6153 ins_encode %{ 6153 ins_encode %{
6154 Address addr = build_address($mem$$base, $mem$$index, $mem$$scale, $mem$$disp); 6154 Address addr = build_address($mem$$base, $mem$$index, $mem$$scale, $mem$$disp);
6155 Register dst = as_Register($dst$$reg); 6155 Register dst = as_Register($dst$$reg);
6156 __ movl(dst, addr); 6156 __ movl(dst, addr);
6157 %} 6157 %}
7087 %} 7087 %}
7088 ins_pipe(ialu_reg_long); 7088 ins_pipe(ialu_reg_long);
7089 %} 7089 %}
7090 7090
7091 instruct decodeHeapOop(rRegP dst, rRegN src, rFlagsReg cr) %{ 7091 instruct decodeHeapOop(rRegP dst, rRegN src, rFlagsReg cr) %{
7092 predicate(n->bottom_type()->is_oopptr()->ptr() != TypePtr::NotNull); 7092 predicate(n->bottom_type()->is_oopptr()->ptr() != TypePtr::NotNull &&
7093 n->bottom_type()->is_oopptr()->ptr() != TypePtr::Constant);
7093 match(Set dst (DecodeN src)); 7094 match(Set dst (DecodeN src));
7094 effect(KILL cr); 7095 effect(KILL cr);
7095 format %{ "decode_heap_oop $dst,$src" %} 7096 format %{ "decode_heap_oop $dst,$src" %}
7096 ins_encode %{ 7097 ins_encode %{
7097 Register s = $src$$Register; 7098 Register s = $src$$Register;
7103 %} 7104 %}
7104 ins_pipe(ialu_reg_long); 7105 ins_pipe(ialu_reg_long);
7105 %} 7106 %}
7106 7107
7107 instruct decodeHeapOop_not_null(rRegP dst, rRegN src) %{ 7108 instruct decodeHeapOop_not_null(rRegP dst, rRegN src) %{
7108 predicate(n->bottom_type()->is_oopptr()->ptr() == TypePtr::NotNull); 7109 predicate(n->bottom_type()->is_oopptr()->ptr() == TypePtr::NotNull ||
7110 n->bottom_type()->is_oopptr()->ptr() == TypePtr::Constant);
7109 match(Set dst (DecodeN src)); 7111 match(Set dst (DecodeN src));
7110 format %{ "decode_heap_oop_not_null $dst,$src" %} 7112 format %{ "decode_heap_oop_not_null $dst,$src" %}
7111 ins_encode %{ 7113 ins_encode %{
7112 Register s = $src$$Register; 7114 Register s = $src$$Register;
7113 Register d = $dst$$Register; 7115 Register d = $dst$$Register;