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