#include "Comment.h"
#include "Document.h"
-#include "RuntimeEnabledFeatures.h"
namespace WebCore {
-static constexpr unsigned s_maxDataLength = 100u;
-
inline Comment::Comment(Document& document, const String& text)
: CharacterData(document, text, CreateOther)
{
- if (RuntimeEnabledFeatures::sharedFeatures().spectreGadgetsEnabled()) {
- setReadLength(text.length());
- m_data.resize(s_maxDataLength);
- m_data.fill(0);
- m_dataPtr = m_data.data();
-
- for (size_t i = 0; i < m_readLength; i++)
- m_data[i] = text.characterAt(i);
- } else {
- setReadLength(0);
- m_dataPtr = nullptr;
- }
}
Ref<Comment> Comment::create(Document& document, const String& text)
return false;
}
-void Comment::setReadLength(unsigned readLength)
-{
- m_readLength = std::min(readLength, s_maxDataLength);
-}
-
-unsigned Comment::charCodeAt(unsigned index)
-{
- if (index < m_readLength)
- return m_dataPtr[index];
-
- return 0;
-}
-
-void Comment::clflushReadLength()
-{
-#if CPU(X86_64) && !OS(WINDOWS)
- auto clflush = [] (void* ptr) {
- char* ptrToFlush = static_cast<char*>(ptr);
- asm volatile ("clflush %0" :: "m"(*ptrToFlush) : "memory");
- };
-
- clflush(&m_readLength);
-#endif
-}
-
} // namespace WebCore