Title: [293492] trunk/Source/_javascript_Core
Revision
293492
Author
dbezhets...@igalia.com
Date
2022-04-26 19:00:03 -0700 (Tue, 26 Apr 2022)

Log Message

[WASM] Fix warning: cast from ‘char*’ to ‘JSC::Wasm::Type*’ increases required alignment of target type [-Wcast-align]
https://bugs.webkit.org/show_bug.cgi?id=239698

Reviewed by Darin Adler.

There is a warning inside TypeDefinition on some platforms so this
patch fixes it.

* wasm/WasmTypeDefinition.h:
(JSC::Wasm::FunctionSignature::FunctionSignature):
(JSC::Wasm::FunctionSignature::storage):
(JSC::Wasm::FunctionSignature::storage const):
(JSC::Wasm::StructType::StructType):
(JSC::Wasm::StructType::storage):
(JSC::Wasm::StructType::storage const):
(JSC::Wasm::TypeDefinition::payload):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (293491 => 293492)


--- trunk/Source/_javascript_Core/ChangeLog	2022-04-27 01:15:17 UTC (rev 293491)
+++ trunk/Source/_javascript_Core/ChangeLog	2022-04-27 02:00:03 UTC (rev 293492)
@@ -1,3 +1,22 @@
+2022-04-26  Dmitry Bezhetskov  <dbezhets...@igalia.com>
+
+        [WASM] Fix warning: cast from ‘char*’ to ‘JSC::Wasm::Type*’ increases required alignment of target type [-Wcast-align]
+        https://bugs.webkit.org/show_bug.cgi?id=239698
+
+        Reviewed by Darin Adler.
+        
+        There is a warning inside TypeDefinition on some platforms so this
+        patch fixes it.
+
+        * wasm/WasmTypeDefinition.h:
+        (JSC::Wasm::FunctionSignature::FunctionSignature):
+        (JSC::Wasm::FunctionSignature::storage):
+        (JSC::Wasm::FunctionSignature::storage const):
+        (JSC::Wasm::StructType::StructType):
+        (JSC::Wasm::StructType::storage):
+        (JSC::Wasm::StructType::storage const):
+        (JSC::Wasm::TypeDefinition::payload):
+
 2022-04-26  Elliott Williams  <e...@apple.com>
 
         Unreviewed, reverting "[Xcode] Compute PGO profdata paths instead of searching for them at build time"

Modified: trunk/Source/_javascript_Core/wasm/WasmTypeDefinition.h (293491 => 293492)


--- trunk/Source/_javascript_Core/wasm/WasmTypeDefinition.h	2022-04-27 01:15:17 UTC (rev 293491)
+++ trunk/Source/_javascript_Core/wasm/WasmTypeDefinition.h	2022-04-27 02:00:03 UTC (rev 293492)
@@ -47,7 +47,7 @@
 
 class FunctionSignature {
 public:
-    FunctionSignature(const char* payload, FunctionArgCount argumentCount, FunctionArgCount returnCount)
+    FunctionSignature(Type* payload, FunctionArgCount argumentCount, FunctionArgCount returnCount)
         : m_payload(payload)
         , m_argCount(argumentCount)
         , m_retCount(returnCount)
@@ -75,13 +75,13 @@
     Type& getReturnType(FunctionArgCount i) { ASSERT(i < returnCount()); return *storage(i); }
     Type& getArgumentType(FunctionArgCount i) { ASSERT(i < argumentCount()); return *storage(returnCount() + i); }
 
-    Type* storage(FunctionArgCount i) { return i + reinterpret_cast<Type*>(const_cast<char*>(m_payload)); }
-    Type* storage(FunctionArgCount i) const { return const_cast<FunctionSignature*>(this)->storage(i); }
+    Type* storage(FunctionArgCount i) { return i + m_payload; }
+    const Type* storage(FunctionArgCount i) const { return const_cast<FunctionSignature*>(this)->storage(i); }
 
 private:
     friend class TypeInformation;
 
-    const char* m_payload;
+    Type* m_payload;
     FunctionArgCount m_argCount;
     FunctionArgCount m_retCount;
 };
@@ -102,7 +102,7 @@
 
 class StructType {
 public:
-    StructType(const char* payload, StructFieldCount fieldCount)
+    StructType(StructField* payload, StructFieldCount fieldCount)
         : m_payload(payload)
         , m_fieldCount(fieldCount)
     {
@@ -115,11 +115,11 @@
     void dump(WTF::PrintStream& out) const;
 
     StructField& getField(StructFieldCount i) { ASSERT(i < fieldCount()); return *storage(i); }
-    StructField* storage(StructFieldCount i) { return i + reinterpret_cast<StructField*>(const_cast<char*>(m_payload)); }
-    StructField* storage(StructFieldCount i) const { return const_cast<StructType*>(this)->storage(i); }
+    StructField* storage(StructFieldCount i) { return i + m_payload; }
+    const StructField* storage(StructFieldCount i) const { return const_cast<StructType*>(this)->storage(i); }
 
 private:
-    const char* m_payload;
+    StructField* m_payload;
     StructFieldCount m_fieldCount;
 };
 
@@ -130,16 +130,18 @@
     TypeDefinition(const TypeDefinition&) = delete;
 
     TypeDefinition(FunctionArgCount retCount, FunctionArgCount argCount)
-        : m_typeHeader { FunctionSignature { payload(), argCount, retCount } }
+        : m_typeHeader { FunctionSignature { static_cast<Type*>(payload()), argCount, retCount } }
     {
     }
 
     TypeDefinition(StructFieldCount fieldCount)
-        : m_typeHeader { StructType { payload(), fieldCount } }
+        : m_typeHeader { StructType { static_cast<StructField*>(payload()), fieldCount } }
     {
     }
 
-    char* payload() { return reinterpret_cast<char*>(this) + sizeof(TypeDefinition); }
+    // Payload starts past end of this object.
+    void* payload() { return this + 1; }
+
     static size_t allocatedFunctionSize(Checked<FunctionArgCount> retCount, Checked<FunctionArgCount> argCount) { return sizeof(TypeDefinition) + (retCount + argCount) * sizeof(Type); }
     static size_t allocatedStructSize(Checked<StructFieldCount> fieldCount) { return sizeof(TypeDefinition) + fieldCount * sizeof(StructField); }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to