Remove equalAsStr (perflab can't detect the optimization)

There is only a single call-site for all of this thing.  I
figured perflab could be the judge on whether to reimplement the usage
in a more reasonable way, or just delete it---looks like option 2 is
good.
Esse commit está contido em:
Jordan DeLong
2013-06-23 12:54:15 -07:00
commit de Sara Golemon
commit 4d5f36126d
7 arquivos alterados com 1 adições e 324 exclusões
-64
Ver Arquivo
@@ -133,70 +133,6 @@ bool equal(int64_t v1, const StringData *v2) {
}
}
bool equalAsStr(bool v1, const StringData *v2) {
return same(toString(v1), v2);
}
bool equalAsStr(int v1, const StringData *v2) {
char tmpbuf[12];
char *p;
int is_negative;
int len;
const StringData *sd = String::GetIntegerStringData(v1);
if (sd) {
p = (char *)sd->data();
len = sd->size();
} else {
p = conv_10(v1, &is_negative, &tmpbuf[11], &len);
}
if (len != v2->size()) {
return false;
}
return memcmp(p, v2->data(), len) == 0;
}
bool equalAsStr(int64_t v1, const StringData *v2) {
char tmpbuf[21];
char *p;
int is_negative;
int len;
const StringData *sd = String::GetIntegerStringData(v1);
if (sd) {
p = (char *)sd->data();
len = sd->size();
} else {
p = conv_10(v1, &is_negative, &tmpbuf[20], &len);
}
if (len != v2->size()) {
return false;
}
return memcmp(p, v2->data(), len) == 0;
}
bool equalAsStr(int64_t v1, litstr v2) {
char tmpbuf[21];
char *p;
int is_negative;
int len;
const StringData *sd = String::GetIntegerStringData(v1);
if (sd) {
p = (char *)sd->data();
len = sd->size();
} else {
tmpbuf[20] = '\0';
p = conv_10(v1, &is_negative, &tmpbuf[20], &len);
}
return strcmp(p, v2) == 0;
}
bool equalAsStr(double v1, const StringData *v2) {
return equalAsStr(v2, String(v1));
}
bool equalAsStr(double v1, litstr v2) {
return same(String(v1), v2);
}
bool less(int v1, const StringData *v2) {
return less((int64_t)v1, v2);
}
-171
Ver Arquivo
@@ -63,20 +63,6 @@ inline bool equal(CVarRef v1, CVarRef v2) {
return tvEqual(v1.asTypedValue(), v2.asTypedValue());
}
inline bool equalAsStr(CVarRef v1, bool v2) { return v1.equalAsStr(v2);}
inline bool equalAsStr(CVarRef v1, int v2) { return v1.equalAsStr(v2);}
inline bool equalAsStr(CVarRef v1, int64_t v2) { return v1.equalAsStr(v2);}
inline bool equalAsStr(CVarRef v1, double v2) { return v1.equalAsStr(v2);}
inline bool equalAsStr(CVarRef v1, const StringData *v2) {
return v1.equalAsStr(v2);
}
inline bool equalAsStr(CVarRef v1, CStrRef v2) { return v1.equalAsStr(v2);}
inline bool equalAsStr(CVarRef v1, litstr v2) { return v1.equalAsStr(v2);}
inline bool equalAsStr(CVarRef v1, CArrRef v2) { return v1.equalAsStr(v2);}
inline bool equalAsStr(CVarRef v1, CObjRef v2) { return v1.equalAsStr(v2);}
inline bool equalAsStr(CVarRef v1, CVarRef v2) { return v1.equalAsStr(v2);}
inline bool less(CVarRef v1, bool v2) {
return cellLess(v1.asCell(), v2);
}
@@ -166,20 +152,6 @@ inline bool equal(bool v1, CArrRef v2) { return v1 == v2.toBoolean();}
inline bool equal(bool v1, CObjRef v2) { return v1 == v2.toBoolean();}
inline bool equal(bool v1, CVarRef v2) { return equal(v2, v1);}
inline bool equalAsStr(bool v1, bool v2) { return v1 == v2;}
inline bool equalAsStr(bool v1, int v2) { return v1 && v2 == 1;}
inline bool equalAsStr(bool v1, int64_t v2) { return v1 && v2 == 1;}
inline bool equalAsStr(bool v1, double v2) { return v1 && v2 == 1;}
bool equalAsStr(bool v1, const StringData *v2);
inline bool equalAsStr(bool v1, CStrRef v2) { return equalAsStr(v1, v2.get());}
inline bool equalAsStr(bool v1, litstr v2) {
return equalAsStr(v1, String(v2));
}
inline bool equalAsStr(bool v1, CArrRef v2) { return false;}
inline bool equalAsStr(bool v1, CObjRef v2) { return false;}
inline bool equalAsStr(bool v1, CVarRef v2) { return equalAsStr(v2, v1);}
inline bool less(bool v1, bool v2) { return (v1?1:0) < (v2?1:0);}
inline bool less(bool v1, int v2) { return less(v1,(v2 != 0));}
inline bool less(bool v1, int64_t v2) { return less(v1,(v2 != 0));}
@@ -233,19 +205,6 @@ inline bool equal(int v1, CObjRef v2) {
}
inline bool equal(int v1, CVarRef v2) { return equal(v2, v1);}
inline bool equalAsStr(int v1, bool v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(int v1, int v2) { return v1 == v2;}
inline bool equalAsStr(int v1, int64_t v2) { return v1 == v2;}
inline bool equalAsStr(int v1, double v2) { return v1 == v2;}
bool equalAsStr(int v1, const StringData *v2);
inline bool equalAsStr(int v1, CStrRef v2) { return equalAsStr(v1, v2.get());}
inline bool equalAsStr(int v1, litstr v2) { return equalAsStr(v1, String(v2));}
inline bool equalAsStr(int v1, CArrRef v2) { return false;}
inline bool equalAsStr(int v1, CObjRef v2) {
return equalAsStr(v1, v2.toString());
}
inline bool equalAsStr(int v1, CVarRef v2) { return equalAsStr(v2, v1);}
inline bool less(int v1, bool v2) { return more(v2, v1);}
inline bool less(int v1, int v2) { return v1 < v2;}
inline bool less(int v1, int64_t v2) { return v1 < v2;}
@@ -299,22 +258,6 @@ inline bool equal(int64_t v1, CObjRef v2) {
}
inline bool equal(int64_t v1, CVarRef v2) { return equal(v2, v1);}
inline bool equalAsStr(int64_t v1, bool v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(int64_t v1, int v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(int64_t v1, int64_t v2) { return v1 == v2;}
inline bool equalAsStr(int64_t v1, double v2) {
return v1 == v2 && v1 == (int64_t)v2;
}
bool equalAsStr(int64_t v1, const StringData *v2);
inline bool equalAsStr(int64_t v1, CStrRef v2) { return equalAsStr(v1, v2.get());}
bool equalAsStr(int64_t v1, litstr v2);
inline bool equalAsStr(int64_t v1, CArrRef v2) { return false;}
inline bool equalAsStr(int64_t v1, CObjRef v2) {
return equalAsStr(v1, v2.toString());
}
inline bool equalAsStr(int64_t v1, CVarRef v2) { return equalAsStr(v2, v1);}
inline bool less(int64_t v1, bool v2) { return more(v2, v1);}
inline bool less(int64_t v1, int v2) { return more(v2, v1);}
inline bool less(int64_t v1, int64_t v2) { return v1 < v2;}
@@ -371,22 +314,6 @@ inline bool equal(double v1, CObjRef v2) {
}
inline bool equal(double v1, CVarRef v2) { return equal(v2, v1);}
inline bool equalAsStr(double v1, bool v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(double v1, int v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(double v1, int64_t v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(double v1, double v2) { return v1 == v2;}
bool equalAsStr(double v1, const StringData *v2);
inline bool equalAsStr(double v1, CStrRef v2) {
return equalAsStr(v1, v2.get());
}
bool equalAsStr(double v1, litstr v2);
inline bool equalAsStr(double v1, CArrRef v2) { return false;}
inline bool equalAsStr(double v1, CObjRef v2) {
return equalAsStr(v1, v2.toString());
}
inline bool equalAsStr(double v1, CVarRef v2) { return equalAsStr(v2, v1);}
inline bool less(double v1, bool v2) { return more(v2, v1);}
inline bool less(double v1, int v2) { return more(v2, v1);}
inline bool less(double v1, int64_t v2) { return more(v2, v1);}
@@ -478,37 +405,6 @@ inline bool equal(const StringData *v1, CObjRef v2) {
}
inline bool equal(const StringData *v1, CVarRef v2) { return equal(v2, v1);}
inline bool equalAsStr(const StringData *v1, bool v2) {
return equalAsStr(v2, v1);
}
inline bool equalAsStr(const StringData *v1, int v2) {
return equalAsStr(v2, v1);
}
inline bool equalAsStr(const StringData *v1, int64_t v2) {
return equalAsStr(v2, v1);
}
inline bool equalAsStr(const StringData *v1, double v2) {
return equalAsStr(v2, v1);
}
inline bool equalAsStr(const StringData *v1, const StringData *v2) {
return same(v1, v2);
}
inline bool equalAsStr(const StringData *v1, CStrRef v2) {
return equalAsStr(v1, v2.get());
}
inline bool equalAsStr(const StringData *v1, litstr v2) {
return same(v1, v2);
}
inline bool equalAsStr(const StringData *v1, CArrRef v2) {
return equalAsStr(v1, "Array");
}
inline bool equalAsStr(const StringData *v1, CObjRef v2) {
return equalAsStr(v1, v2.toString());
}
inline bool equalAsStr(const StringData *v1, CVarRef v2) {
return equalAsStr(v2, v1);
}
inline bool less(const StringData *v1, bool v2) { return more(v2, v1);}
inline bool less(const StringData *v1, int v2) { return more(v2, v1);}
inline bool less(const StringData *v1, int64_t v2) { return more(v2, v1);}
@@ -612,25 +508,6 @@ inline bool equal(CStrRef v1, CArrRef v2) { return v1.equal(v2);}
inline bool equal(CStrRef v1, CObjRef v2) { return v1.equal(v2);}
inline bool equal(CStrRef v1, CVarRef v2) { return equal(v2, v1);}
inline bool equalAsStr(CStrRef v1, bool v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CStrRef v1, int v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CStrRef v1, int64_t v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CStrRef v1, double v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CStrRef v1, const StringData *v2) {
return equalAsStr(v2, v1);
}
inline bool equalAsStr(CStrRef v1, CStrRef v2) { return same(v1, v2);}
inline bool equalAsStr(CStrRef v1, litstr v2) {
return equalAsStr(v1, String(v2));
}
inline bool equalAsStr(CStrRef v1, CArrRef v2) {
return equalAsStr(v1.get(), v2);
}
inline bool equalAsStr(CStrRef v1, CObjRef v2) {
return equalAsStr(v1, v2.toString());
}
inline bool equalAsStr(CStrRef v1, CVarRef v2) { return equalAsStr(v2, v1);}
inline bool less(CStrRef v1, bool v2) { return more(v2, v1);}
inline bool less(CStrRef v1, int v2) { return more(v2, v1);}
inline bool less(CStrRef v1, int64_t v2) { return more(v2, v1);}
@@ -688,24 +565,6 @@ inline bool equal(litstr v1, CArrRef v2) { return equal(String(v1),v2);}
inline bool equal(litstr v1, CObjRef v2) { return equal(String(v1),v2);}
inline bool equal(litstr v1, CVarRef v2) { return equal(String(v1),v2);}
inline bool equalAsStr(litstr v1, bool v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(litstr v1, int v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(litstr v1, int64_t v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(litstr v1, double v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(litstr v1, const StringData *v2) {
return equalAsStr(v2, v1);
}
inline bool equalAsStr(litstr v1, CStrRef v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(litstr v1, litstr v2) { return same(v1, v2);}
inline bool equalAsStr(litstr v1, CArrRef v2) {
StackStringData sd1(v1);
return equalAsStr(&sd1, v2);
}
inline bool equalAsStr(litstr v1, CObjRef v2) {
return equalAsStr(v1, v2.toString());
}
inline bool equalAsStr(litstr v1, CVarRef v2) { return equalAsStr(v2, v1);}
inline bool less(litstr v1, bool v2) { return less(String(v1), v2);}
inline bool less(litstr v1, int v2) { return less(String(v1), v2);}
inline bool less(litstr v1, int64_t v2) { return less(String(v1), v2);}
@@ -759,21 +618,6 @@ inline bool equal(CArrRef v1, CArrRef v2) { return v1.equal(v2);}
inline bool equal(CArrRef v1, CObjRef v2) { return v1.equal(v2);}
inline bool equal(CArrRef v1, CVarRef v2) { return equal(v2, v1);}
inline bool equalAsStr(CArrRef v1, bool v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CArrRef v1, int v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CArrRef v1, int64_t v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CArrRef v1, double v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CArrRef v1, const StringData *v2) {
return equalAsStr(v2, v1);
}
inline bool equalAsStr(CArrRef v1, CStrRef v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CArrRef v1, litstr v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CArrRef v1, CArrRef v2) { return true;}
inline bool equalAsStr(CArrRef v1, CObjRef v2) {
return equalAsStr("Array", v2.toString());
}
inline bool equalAsStr(CArrRef v1, CVarRef v2) { return equalAsStr(v2, v1);}
inline bool less(CArrRef v1, bool v2) { return more(v2, v1);}
inline bool less(CArrRef v1, int v2) { return more(v2, v1);}
inline bool less(CArrRef v1, int64_t v2) { return more(v2, v1);}
@@ -821,21 +665,6 @@ inline bool equal(CObjRef v1, CArrRef v2) { return equal(v2, v1);}
inline bool equal(CObjRef v1, CObjRef v2) { return v1.equal(v2);}
inline bool equal(CObjRef v1, CVarRef v2) { return equal(v2, v1);}
inline bool equalAsStr(CObjRef v1, bool v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CObjRef v1, int v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CObjRef v1, int64_t v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CObjRef v1, double v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CObjRef v1, const StringData *v2) {
return equalAsStr(v2, v1);
}
inline bool equalAsStr(CObjRef v1, CStrRef v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CObjRef v1, litstr v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CObjRef v1, CArrRef v2) { return equalAsStr(v2, v1);}
inline bool equalAsStr(CObjRef v1, CObjRef v2) {
return equalAsStr(v1.toString(), v2.toString());
}
inline bool equalAsStr(CObjRef v1, CVarRef v2) { return equalAsStr(v2, v1);}
inline bool less(CObjRef v1, bool v2) { return more(v2, v1);}
inline bool less(CObjRef v1, int v2) { return more(v2, v1);}
inline bool less(CObjRef v1, int64_t v2) { return more(v2, v1);}
+1 -1
Ver Arquivo
@@ -135,7 +135,7 @@ Array Array::intersect(CVarRef array, bool by_key, bool by_value,
}
int Array::CompareAsStrings(CVarRef v1, CVarRef v2, const void *data) {
return equalAsStr(v1, v2) ? 0 : -1;
return HPHP::same(HPHP::toString(v1), HPHP::toString(v2)) ? 0 : -1;
}
Array Array::diffImpl(CArrRef array, bool by_key, bool by_value, bool match,
-35
Ver Arquivo
@@ -1525,41 +1525,6 @@ Variant::operator Object() const {
return toObject();
}
///////////////////////////////////////////////////////////////////////////////
// Array needs to convert to "Array" and Object to String
#define UNWRAP_STRING(reverse) \
auto const cell = asCell(); \
switch (cell->m_type) { \
case KindOfUninit: \
case KindOfNull: return HPHP::reverse(v2, empty_string); \
case KindOfBoolean: return HPHP::reverse(v2, !!cell->m_data.num); \
case KindOfInt64: return HPHP::reverse(v2, cell->m_data.num); \
case KindOfDouble: return HPHP::reverse(v2, cell->m_data.dbl); \
case KindOfStaticString: \
case KindOfString: return HPHP::reverse(v2, cell->m_data.pstr); \
case KindOfArray: return HPHP::reverse(v2, s_array); \
case KindOfObject: \
return HPHP::reverse(v2, Object(cell->m_data.pobj).toString()); \
default: \
assert(false); \
break; \
} \
return false;
bool Variant::equalAsStr(bool v2) const { UNWRAP_STRING(equalAsStr);}
bool Variant::equalAsStr(int v2) const { UNWRAP_STRING(equalAsStr);}
bool Variant::equalAsStr(int64_t v2) const { UNWRAP_STRING(equalAsStr);}
bool Variant::equalAsStr(double v2) const { UNWRAP_STRING(equalAsStr);}
bool Variant::equalAsStr(litstr v2) const { UNWRAP_STRING(equalAsStr);}
bool Variant::equalAsStr(const StringData *v2) const {
UNWRAP_STRING(equalAsStr);
}
bool Variant::equalAsStr(CStrRef v2) const { UNWRAP_STRING(equalAsStr);}
bool Variant::equalAsStr(CArrRef v2) const { UNWRAP_STRING(equalAsStr);}
bool Variant::equalAsStr(CObjRef v2) const { UNWRAP_STRING(equalAsStr);}
bool Variant::equalAsStr(CVarRef v2) const { UNWRAP_STRING(equalAsStr);}
///////////////////////////////////////////////////////////////////////////////
// offset functions
-15
Ver Arquivo
@@ -697,21 +697,6 @@ class Variant : private TypedValue {
return ObjNR(getObjectData());
}
/*
* Comparisons
*/
bool equalAsStr(bool v2) const;
bool equalAsStr(int v2) const;
bool equalAsStr(int64_t v2) const;
bool equalAsStr(double v2) const;
bool equalAsStr(litstr v2) const;
bool equalAsStr(const StringData *v2) const;
bool equalAsStr(CStrRef v2) const;
bool equalAsStr(CArrRef v2) const;
bool equalAsStr(CObjRef v2) const;
bool equalAsStr(CVarRef v2) const;
/**
* Output functions
*/
-35
Ver Arquivo
@@ -44,7 +44,6 @@ bool TestCppBase::RunTests(const std::string &which) {
RUN_TEST(TestObject);
RUN_TEST(TestVariant);
RUN_TEST(TestIpBlockMap);
RUN_TEST(TestEqualAsStr);
return ret;
}
@@ -942,37 +941,3 @@ bool TestCppBase::TestIpBlockMap() {
return Count(true);
}
bool TestCppBase::TestEqualAsStr() {
const int arr_len = 18;
Variant var_array[arr_len];
var_array[0] = false;
var_array[1] = true;
var_array[2] = 0;
var_array[3] = 1;
var_array[4] = 42;
var_array[5] = 0.0;
var_array[6] = 1.0;
var_array[7] = 42.2;
var_array[8] = String("0");
var_array[9] = String("1");
var_array[10] = String("42");
var_array[11] = String("x");
var_array[12] = Array::Create();
Variant v1("original");
var_array[13] = v1;
Variant v2("changed");
var_array[14] = v2;
var_array[15] = empty_string;
var_array[16] = String("Array");
var_array[17] = String("ARRAY");
for (int i = 0; i < arr_len; i++) {
for (int j = 0; j < arr_len; j++) {
bool eqAsStr = equalAsStr(var_array[i], var_array[j]);
bool sm = same(toString(var_array[i]), toString(var_array[j]));
VERIFY(eqAsStr == sm);
}
}
return Count(true);
}
-3
Ver Arquivo
@@ -58,9 +58,6 @@ class TestCppBase : public TestBase {
bool TestObject();
bool TestVariant();
bool TestListAssignment();
// EqualAsStr functions
bool TestEqualAsStr();
};
///////////////////////////////////////////////////////////////////////////////