Mercurial > hg > truffle
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; |