/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2014 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
struct CallIdentifier {
WTF_MAKE_FAST_ALLOCATED;
public:
- String m_name;
- String m_url;
- unsigned m_lineNumber;
-
CallIdentifier()
: m_lineNumber(0)
+ , m_columnNumber(0)
{
}
- CallIdentifier(const String& name, const String& url, int lineNumber)
- : m_name(name)
+ CallIdentifier(const String& functionName, const String& url, unsigned lineNumber, unsigned columnNumber)
+ : m_functionName(functionName)
, m_url(!url.isNull() ? url : "")
, m_lineNumber(lineNumber)
+ , m_columnNumber(columnNumber)
{
}
- inline bool operator==(const CallIdentifier& ci) const { return ci.m_lineNumber == m_lineNumber && ci.m_name == m_name && ci.m_url == m_url; }
- inline bool operator!=(const CallIdentifier& ci) const { return !(*this == ci); }
+ const String& functionName() const { return m_functionName; }
+
+ const String& url() const { return m_url; }
+ unsigned lineNumber() const { return m_lineNumber; }
+ unsigned columnNumber() const { return m_columnNumber; }
+
+ inline bool operator==(const CallIdentifier& other) const { return other.m_lineNumber == m_lineNumber && other.m_columnNumber == m_columnNumber && other.m_functionName == m_functionName && other.m_url == m_url; }
+ inline bool operator!=(const CallIdentifier& other) const { return !(*this == other); }
struct Hash {
static unsigned hash(const CallIdentifier& key)
{
- unsigned hashCodes[3] = {
- key.m_name.impl()->hash(),
+ unsigned hashCodes[4] = {
+ key.m_functionName.impl()->hash(),
key.m_url.impl()->hash(),
- key.m_lineNumber
+ key.m_lineNumber,
+ key.m_columnNumber
};
return StringHasher::hashMemory<sizeof(hashCodes)>(hashCodes);
}
#ifndef NDEBUG
operator const char*() const { return c_str(); }
- const char* c_str() const { return m_name.utf8().data(); }
+ const char* c_str() const { return m_functionName.utf8().data(); }
#endif
+
+ private:
+ String m_functionName;
+ String m_url;
+ unsigned m_lineNumber;
+ unsigned m_columnNumber;
};
} // namespace JSC
template<> struct HashTraits<JSC::CallIdentifier> : GenericHashTraits<JSC::CallIdentifier> {
static void constructDeletedValue(JSC::CallIdentifier& slot)
{
- new (NotNull, &slot) JSC::CallIdentifier(String(), String(), std::numeric_limits<unsigned>::max());
+ new (NotNull, &slot) JSC::CallIdentifier(String(), String(), std::numeric_limits<unsigned>::max(), std::numeric_limits<unsigned>::max());
}
+
static bool isDeletedValue(const JSC::CallIdentifier& value)
{
- return value.m_name.isNull() && value.m_url.isNull() && value.m_lineNumber == std::numeric_limits<unsigned>::max();
+ return value.functionName().isNull() && value.url().isNull() && value.lineNumber() == std::numeric_limits<unsigned>::max() && value.columnNumber() == std::numeric_limits<unsigned>::max();
}
};
} // namespace WTF
#endif // CallIdentifier_h
-