hotspot/src/cpu/x86/vm/x86_32.ad
changeset 13952 e3cf184080bc
parent 13886 8d82c4dfa722
child 13974 791cba24758f
equal deleted inserted replaced
13918:b01a48301e67 13952:e3cf184080bc
 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