src/cpu/x86/vm/x86_32.ad

changeset 4142
d8ce2825b193
parent 4106
7eca5de9e0b6
child 4164
d804e148cff8
equal deleted inserted replaced
4122:1b582b1bf7cb 4142:d8ce2825b193
12143 match(Set result (PartialSubtypeCheck sub super)); 12143 match(Set result (PartialSubtypeCheck sub super));
12144 effect( KILL rcx, KILL cr ); 12144 effect( KILL rcx, KILL cr );
12145 12145
12146 ins_cost(1100); // slightly larger than the next version 12146 ins_cost(1100); // slightly larger than the next version
12147 format %{ "MOV EDI,[$sub+Klass::secondary_supers]\n\t" 12147 format %{ "MOV EDI,[$sub+Klass::secondary_supers]\n\t"
12148 "MOV ECX,[EDI+arrayKlass::length]\t# length to scan\n\t" 12148 "MOV ECX,[EDI+ArrayKlass::length]\t# length to scan\n\t"
12149 "ADD EDI,arrayKlass::base_offset\t# Skip to start of data; set NZ in case count is zero\n\t" 12149 "ADD EDI,ArrayKlass::base_offset\t# Skip to start of data; set NZ in case count is zero\n\t"
12150 "REPNE SCASD\t# Scan *EDI++ for a match with EAX while CX-- != 0\n\t" 12150 "REPNE SCASD\t# Scan *EDI++ for a match with EAX while CX-- != 0\n\t"
12151 "JNE,s miss\t\t# Missed: EDI not-zero\n\t" 12151 "JNE,s miss\t\t# Missed: EDI not-zero\n\t"
12152 "MOV [$sub+Klass::secondary_super_cache],$super\t# Hit: update cache\n\t" 12152 "MOV [$sub+Klass::secondary_super_cache],$super\t# Hit: update cache\n\t"
12153 "XOR $result,$result\t\t Hit: EDI zero\n\t" 12153 "XOR $result,$result\t\t Hit: EDI zero\n\t"
12154 "miss:\t" %} 12154 "miss:\t" %}
12162 match(Set cr (CmpP (PartialSubtypeCheck sub super) zero)); 12162 match(Set cr (CmpP (PartialSubtypeCheck sub super) zero));
12163 effect( KILL rcx, KILL result ); 12163 effect( KILL rcx, KILL result );
12164 12164
12165 ins_cost(1000); 12165 ins_cost(1000);
12166 format %{ "MOV EDI,[$sub+Klass::secondary_supers]\n\t" 12166 format %{ "MOV EDI,[$sub+Klass::secondary_supers]\n\t"
12167 "MOV ECX,[EDI+arrayKlass::length]\t# length to scan\n\t" 12167 "MOV ECX,[EDI+ArrayKlass::length]\t# length to scan\n\t"
12168 "ADD EDI,arrayKlass::base_offset\t# Skip to start of data; set NZ in case count is zero\n\t" 12168 "ADD EDI,ArrayKlass::base_offset\t# Skip to start of data; set NZ in case count is zero\n\t"
12169 "REPNE SCASD\t# Scan *EDI++ for a match with EAX while CX-- != 0\n\t" 12169 "REPNE SCASD\t# Scan *EDI++ for a match with EAX while CX-- != 0\n\t"
12170 "JNE,s miss\t\t# Missed: flags NZ\n\t" 12170 "JNE,s miss\t\t# Missed: flags NZ\n\t"
12171 "MOV [$sub+Klass::secondary_super_cache],$super\t# Hit: update cache, flags Z\n\t" 12171 "MOV [$sub+Klass::secondary_super_cache],$super\t# Hit: update cache, flags Z\n\t"
12172 "miss:\t" %} 12172 "miss:\t" %}
12173 12173

mercurial