WebAssembly: stack trace improvement follow-ups
authorjfbastien@apple.com <jfbastien@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Dec 2017 22:19:03 +0000 (22:19 +0000)
committerjfbastien@apple.com <jfbastien@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Dec 2017 22:19:03 +0000 (22:19 +0000)
https://bugs.webkit.org/show_bug.cgi?id=180273

Reviewed by Saam Barati.

* wasm/WasmIndexOrName.cpp:
(JSC::Wasm::makeString):
* wasm/WasmIndexOrName.h:
(JSC::Wasm::IndexOrName::nameSection const):
* wasm/WasmNameSection.h:
(JSC::Wasm::NameSection::NameSection):
(JSC::Wasm::NameSection::get):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225416 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/wasm/WasmIndexOrName.cpp
Source/JavaScriptCore/wasm/WasmIndexOrName.h
Source/JavaScriptCore/wasm/WasmNameSection.h

index d7c3342..2ef5a43 100644 (file)
@@ -1,5 +1,20 @@
 2017-12-01  JF Bastien  <jfbastien@apple.com>
 
+        WebAssembly: stack trace improvement follow-ups
+        https://bugs.webkit.org/show_bug.cgi?id=180273
+
+        Reviewed by Saam Barati.
+
+        * wasm/WasmIndexOrName.cpp:
+        (JSC::Wasm::makeString):
+        * wasm/WasmIndexOrName.h:
+        (JSC::Wasm::IndexOrName::nameSection const):
+        * wasm/WasmNameSection.h:
+        (JSC::Wasm::NameSection::NameSection):
+        (JSC::Wasm::NameSection::get):
+
+2017-12-01  JF Bastien  <jfbastien@apple.com>
+
         WebAssembly: restore cached stack limit after out-call
         https://bugs.webkit.org/show_bug.cgi?id=179106
         <rdar://problem/35337525>
index 674a352..56dcd64 100644 (file)
@@ -46,11 +46,11 @@ IndexOrName::IndexOrName(Index index, std::pair<const Name*, RefPtr<NameSection>
 String makeString(const IndexOrName& ion)
 {
     if (ion.isEmpty())
-        return String("wasm-stub");
+        return ASCIILiteral("wasm-stub");
     const String moduleName = ion.nameSection()->moduleName.size() ? String(ion.nameSection()->moduleName.data(), ion.nameSection()->moduleName.size()) : String(ion.nameSection()->moduleHash.data(), ion.nameSection()->moduleHash.size());
     if (ion.isIndex())
-        return makeString(moduleName, ".wasm-function[", String::number(ion.m_indexName.index & ~IndexOrName::indexTag), "]");
-    return makeString(moduleName, ".wasm-function[", String(ion.m_indexName.name->data(), ion.m_indexName.name->size()), "]");
+        return makeString(moduleName, ".wasm-function[", String::number(ion.m_indexName.index & ~IndexOrName::indexTag), ']');
+    return makeString(moduleName, ".wasm-function[", String(ion.m_indexName.name->data(), ion.m_indexName.name->size()), ']');
 }
 
 } } // namespace JSC::Wasm
index bea1f3c..2c3c946 100644 (file)
@@ -43,7 +43,7 @@ struct IndexOrName {
     bool isEmpty() const { return bitwise_cast<Index>(m_indexName) & emptyTag; }
     bool isIndex() const { return bitwise_cast<Index>(m_indexName) & indexTag; }
     bool isName() const { return !(isEmpty() || isName()); }
-    NameSection* nameSection() const { return m_nameSection ? m_nameSection.get() : nullptr; }
+    NameSection* nameSection() const { return m_nameSection.get(); }
 
     friend String makeString(const IndexOrName&);
 
index 2a9b0b8..457057b 100644 (file)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include "WasmName.h"
+#include <wtf/Noncopyable.h>
 #include <wtf/text/CString.h>
 #include <wtf/ThreadSafeRefCounted.h>
 #include <wtf/Vector.h>
 namespace JSC { namespace Wasm {
 
 struct NameSection : public ThreadSafeRefCounted<NameSection> {
+    WTF_MAKE_NONCOPYABLE(NameSection);
+
+public:
     NameSection(const CString &hash)
         : moduleHash(hash.length())
     {
         for (size_t i = 0; i < hash.length(); ++i)
             moduleHash[i] = static_cast<uint8_t>(*(hash.data() + i));
     }
-    NameSection(const NameSection&) = delete;
 
     std::pair<const Name*, RefPtr<NameSection>> get(size_t functionIndexSpace)
     {
-        return std::make_pair(functionIndexSpace < functionNames.size() ? &functionNames[functionIndexSpace] : nullptr, RefPtr<NameSection>(this));
+        return std::make_pair(functionIndexSpace < functionNames.size() ? &functionNames[functionIndexSpace] : nullptr, makeRefPtr(this));
     }
     Name moduleName;
     Name moduleHash;