src/share/vm/adlc/formssel.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hs-comp-bmi1 Cdiff src/share/vm/adlc/formssel.cpp

src/share/vm/adlc/formssel.cpp

Print this page

        

*** 658,667 **** --- 658,668 ---- // Machine independent loads must be checked for anti-dependences // Check if instruction has a USE of a memory operand class, or a def. int USE_of_memory = 0; int DEF_of_memory = 0; const char* last_memory_DEF = NULL; // to test DEF/USE pairing in asserts + const char* last_memory_USE = NULL; Component *unique = NULL; Component *comp = NULL; ComponentList &components = (ComponentList &)_components; components.reset();
*** 679,689 **** --- 680,699 ---- } else if( comp->isa(Component::USE) ) { if( last_memory_DEF != NULL ) { assert(0 == strcmp(last_memory_DEF, comp->_name), "every memory DEF is followed by a USE of the same name"); last_memory_DEF = NULL; } + // Handles same memory being used multiple times in the case of BMI1 instructions. + if (last_memory_USE != NULL) { + if (strcmp(comp->_name, last_memory_USE) != 0) { USE_of_memory++; + } + } else { + USE_of_memory++; + } + last_memory_USE = comp->_name; + if (DEF_of_memory == 0) // defs take precedence unique = comp; } else { assert(last_memory_DEF == NULL, "unpaired memory DEF"); }
src/share/vm/adlc/formssel.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File