// Test whether two MDefinitions are congruent. bool ValueNumberer::VisibleValues::ValueHasher::match(Key k, Lookup l) { // If one of the instructions depends on a store, and the other instruction // does not depend on the same store, the instructions are not congruent. if (k->dependency() != l->dependency()) return false; bool congruent = k->congruentTo(l); // Ask the values themselves what they think. MOZ_ASSERT(congruent == l->congruentTo(k), "congruentTo relation is not symmetric"); return congruent; }
// Test whether two MDefinitions are congruent. bool ValueNumberer::VisibleValues::ValueHasher::match(Key k, Lookup l) { // If one of the instructions depends on a store, and the other instruction // does not depend on the same store, the instructions are not congruent. if (k->dependency() != l->dependency()) return false; bool congruent = k->congruentTo(l); // Ask the values themselves what they think. #ifdef DEBUG if (congruent != l->congruentTo(k)) { JitSpew(JitSpew_GVN, " congruentTo relation is not symmetric between %s%u and %s%u!!", k->opName(), k->id(), l->opName(), l->id()); } #endif return congruent; }