Skip to content

Commit

Permalink
webkitgtk: rollback to version 2.44.3
Browse files Browse the repository at this point in the history
Until the following issue [1] has been fixed.

[1] https://bugs.webkit.org/show_bug.cgi?id=271371

Signed-off-by: Thomas Perrot <[email protected]>
  • Loading branch information
tprrt committed Dec 31, 2024
1 parent 181244a commit 44556b8
Show file tree
Hide file tree
Showing 10 changed files with 729 additions and 0 deletions.
2 changes: 2 additions & 0 deletions conf/distro/freedom-u-sdk.conf
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ PROVIDES:pn-clang = "llvm"
PROVIDES:pn-clang-native = "llvm-native"
PROVIDES:pn-nativesdk-clang = "nativesdk-llvm"

PREFERRED_VERSION_webkitgtk ?= "2.44.3"

SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
SDKPATHINSTALL = "/opt/${DISTRO}/${SDK_VERSION}"

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
From 99a21305ae683a216e9299e5dbdd763190a8cfe3 Mon Sep 17 00:00:00 2001
From: Kai Kang <[email protected]>
Date: Fri, 11 Aug 2023 14:20:48 +0800
Subject: [PATCH] Add a variable to control macro
__PAS_ALWAYS_INLINE_BUT_NOT_INLINE
https://bugs.webkit.org/show_bug.cgi?id=260065

Reviewed by NOBODY (OOPS!).

It fails to compile webkitgtk with option `-Og` of gcc/g++:

| In file included from Source/bmalloc/libpas/src/libpas/pas_heap_page_provider.h:30,
| from Source/bmalloc/libpas/src/libpas/pas_bootstrap_heap_page_provider.h:29,
| from Source/bmalloc/libpas/src/libpas/pas_large_heap_physical_page_sharing_cache.h:29,
| from Source/bmalloc/libpas/src/libpas/pas_basic_heap_page_caches.h:29,
| from Source/bmalloc/libpas/src/libpas/pas_heap_config_utils.h:32,
| from Source/bmalloc/libpas/src/libpas/bmalloc_heap_config.h:34,
| from Source/bmalloc/libpas/src/libpas/bmalloc_heap_inlines.h:34,
| from Source/bmalloc/bmalloc/bmalloc.h:39,
| from Source/bmalloc/bmalloc/bmalloc.cpp:26:
| In function 'pas_allocation_result pas_local_allocator_try_allocate(pas_local_allocator*, size_t, size_t, pas_heap_config, pas_allocator_counts*, pas_allocation_result_filter)',
| inlined from 'pas_allocation_result pas_try_allocate_common_impl_fast(pas_heap_config, pas_allocator_counts*, pas_allocation_result_filter, pas_local_allocator*, size_t, size_t)' at webkitgtk-2.40.2/Source/bmalloc/libpas/src/libpas/pas_try_allocate_common.h:85:46,
| inlined from 'pas_allocation_result bmalloc_try_allocate_with_alignment_impl_impl_fast(pas_local_allocator*, size_t, size_t)' at webkitgtk-2.40.2/Source/bmalloc/libpas/src/libpas/bmalloc_heap_inlines.h:59:1,
| inlined from 'pas_allocation_result pas_try_allocate_intrinsic_impl_casual_case(__pas_heap*, size_t, size_t, pas_intrinsic_heap_support*, pas_heap_config, pas_try_allocate_common_fast, pas_try_allocate_common_slow, pas_intrinsic_heap_designation_mode)' at webkitgtk-2.40.2/Source/bmalloc/libpas/src/libpas/pas_try_allocate_intrinsic.h:167:44,
| inlined from 'pas_allocation_result bmalloc_try_allocate_with_alignment_impl_casual_case(size_t, size_t)' at webkitgtk-2.40.2/Source/bmalloc/libpas/src/libpas/bmalloc_heap_inlines.h:59:1:
| webkitgtk-2.40.2/Source/bmalloc/libpas/src/libpas/pas_allocation_result.h:76:1: error: inlining failed in call to 'always_inline' 'pas_allocation_result pas_allocation_result_identity(pas_allocation_result)': function not considered for inlining
| 76 | pas_allocation_result_identity(pas_allocation_result result)
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Add an variable `WEBKIT_NO_INLINE_HINTS` to control macro
__PAS_ALWAYS_INLINE_BUT_NOT_INLINE whether includes function attribute
`always_inline`. It could set the variable to make compilation pass when
gcc option `-Og` is used.

* Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h:
* Source/cmake/WebKitCompilerFlags.cmake:

Upstream-Status: Submitted [https://github.com/WebKit/WebKit/pull/16601]

Signed-off-by: Kai Kang <[email protected]>
---
Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h | 2 +-
Source/cmake/WebKitCompilerFlags.cmake | 7 +++++++
2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h b/Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h
index 5d5fb38c..a554f700 100644
--- a/Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h
+++ b/Source/bmalloc/libpas/src/libpas/pas_utils_prefix.h
@@ -44,7 +44,7 @@ __PAS_BEGIN_EXTERN_C;
#define __SUSPICIOUS__
#define __BROKEN__

-#ifdef __OPTIMIZE__
+#if defined(__OPTIMIZE__) && !defined(WEBKIT_NO_INLINE_HINTS)
#define __PAS_ALWAYS_INLINE_BUT_NOT_INLINE __attribute__((__always_inline__))
#else
#define __PAS_ALWAYS_INLINE_BUT_NOT_INLINE
diff --git a/Source/cmake/WebKitCompilerFlags.cmake b/Source/cmake/WebKitCompilerFlags.cmake
index 0732785e..4879ec40 100644
--- a/Source/cmake/WebKitCompilerFlags.cmake
+++ b/Source/cmake/WebKitCompilerFlags.cmake
@@ -452,3 +452,10 @@ endif ()

# FIXME: Enable pre-compiled headers for all ports <https://webkit.org/b/139438>
set(CMAKE_DISABLE_PRECOMPILE_HEADERS ON)
+
+# It fails to compile with `gcc -Og`
+set(WEBKIT_NO_INLINE_HINTS OFF CACHE BOOL "Disable funtion attribute always_inline for WebKit")
+
+if (WEBKIT_NO_INLINE_HINTS)
+ add_definitions(-DWEBKIT_NO_INLINE_HINTS)
+endif ()
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
From d1f6a1b6a1298f6ef2f1677e9996aa60a002134a Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <[email protected]>
Date: Tue, 27 Oct 2015 16:02:19 +0200
Subject: [PATCH] FindGObjectIntrospection.cmake: prefix variables obtained
from pkg-config with PKG_CONFIG_SYSROOT_DIR

See discussion at https://bugs.webkit.org/show_bug.cgi?id=232933 for
reasons why this is not approproiate for upstream submission.

Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <[email protected]>
---
Source/cmake/FindGI.cmake | 3 +++
1 file changed, 3 insertions(+)

diff --git a/Source/cmake/FindGI.cmake b/Source/cmake/FindGI.cmake
index fdc56b21..d42eca52 100644
--- a/Source/cmake/FindGI.cmake
+++ b/Source/cmake/FindGI.cmake
@@ -72,6 +72,9 @@ if (PKG_CONFIG_FOUND)
endif ()
endif ()

+set(_GI_SCANNER_EXE "$ENV{PKG_CONFIG_SYSROOT_DIR}${_GI_SCANNER_EXE}")
+set(_GI_COMPILER_EXE "$ENV{PKG_CONFIG_SYSROOT_DIR}${_GI_COMPILER_EXE}")
+
find_program(GI_SCANNER_EXE NAMES ${_GI_SCANNER_EXE} g-ir-scanner)
find_program(GI_COMPILER_EXE NAMES ${_GI_COMPILER_EXE} g-ir-compiler)

Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
From 257ed304fb3e71d412568dcbed7129c145812fdf Mon Sep 17 00:00:00 2001
From: Khem Raj <[email protected]>
Date: Mon, 2 Sep 2024 21:38:12 -0700
Subject: [PATCH] Fix build issues with latest Clang
https://bugs.webkit.org/show_bug.cgi?id=276198 rdar://130933637

Reviewed by Yusuke Suzuki.

The use of the template keyword to reference template members without a template argument list was deprecated in the C++ standard.
e.g. `foo.template bar()` nows needs to be `foo.template bar<>()`. I ran into a different issue with `std::reference_wrapper` that
blocked me from going any further, which AFAICT is a bug on the Clang side.

This also fixes a few other warnings that popped up while building with the new Clang denoted inline

* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq): Clang didn't like the implicit static_cast<int32_t>(UINT32_MAX) so make it explicit with a static_assert no data was lost.
* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::emitNonNullDecodeZeroExtendedStructureID): Clang didn't like the implicit static_cast<int32_t>(UINT32_MAX) so make it explicit with a static_assert no data was lost.
* Source/JavaScriptCore/llint/InPlaceInterpreter.cpp:
* Source/JavaScriptCore/llint/LLIntData.h:
(JSC::LLInt::getCodeFunctionPtr):
(JSC::LLInt::getWide16CodeFunctionPtr):
(JSC::LLInt::getWide32CodeFunctionPtr):
* Source/JavaScriptCore/parser/Nodes.h: Missing definition of ModuleScopeData added include.
* Source/JavaScriptCore/runtime/JSCast.h:
(JSC::JSCastingHelpers::inherits):
(JSC::jsDynamicCast):
* Source/ThirdParty/libwebrtc/Source/third_party/boringssl/src/crypto/bio/connect.c:
(conn_callback_ctrl): Had a warning about an incompatible function type. Seems like this is intentional suppressed the warning.
* Source/WTF/wtf/cf/TypeCastsCF.h: Had a warning about extra namespace qualification. I just moved it out of the namespace. That said, it feels like this warning shouldn't apply to macro expansions...
* Source/WebCore/PAL/ThirdParty/libavif/ThirdParty/dav1d/src/decode.c:
(decode_b): Had a warning about different types on the middle/right of a ternary expression. I just pushed the comparison inside the ternary.

Canonical link: https://commits.webkit.org/280700@main

Upstream-Status: Backport [https://github.com/WebKit/WebKit/commit/62b6e2db547e#diff-136d848d7c1b400da9b486916b67592b54e5abf7c66ac247697a93ae2fb743a9]
Signed-off-by: Khem Raj <[email protected]>
---
Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp | 6 ++++--
Source/JavaScriptCore/jit/AssemblyHelpers.cpp | 6 ++++--
.../JavaScriptCore/llint/InPlaceInterpreter.cpp | 16 ++++++++--------
Source/JavaScriptCore/llint/LLIntData.h | 12 ++++++------
Source/JavaScriptCore/llint/LLIntThunks.cpp | 2 +-
Source/JavaScriptCore/parser/Nodes.h | 4 ++--
Source/JavaScriptCore/runtime/JSCast.h | 4 ++--
7 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp b/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
index 42a4eae7..dd987726 100644
--- a/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
+++ b/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
@@ -22930,8 +22930,10 @@ IGNORE_CLANG_WARNINGS_END
return m_out.shl(m_out.zeroExtPtr(structureID), m_out.constIntPtr(StructureID::encodeShiftAmount));
#else
LValue maskedStructureID = structureID;
- if constexpr (structureHeapAddressSize < 4 * GB)
- maskedStructureID = m_out.bitAnd(structureID, m_out.constInt32(StructureID::structureIDMask));
+ if constexpr (structureHeapAddressSize < 4 * GB) {
+ static_assert(static_cast<uint32_t>(StructureID::structureIDMask) == StructureID::structureIDMask);
+ maskedStructureID = m_out.bitAnd(structureID, m_out.constInt32(static_cast<uint32_t>(StructureID::structureIDMask)));
+ }
return m_out.bitOr(m_out.constIntPtr(startOfStructureHeap()), m_out.zeroExtPtr(maskedStructureID));
#endif
}
diff --git a/Source/JavaScriptCore/jit/AssemblyHelpers.cpp b/Source/JavaScriptCore/jit/AssemblyHelpers.cpp
index c939d27a..982dc46f 100644
--- a/Source/JavaScriptCore/jit/AssemblyHelpers.cpp
+++ b/Source/JavaScriptCore/jit/AssemblyHelpers.cpp
@@ -677,8 +677,10 @@ void AssemblyHelpers::emitNonNullDecodeZeroExtendedStructureID(RegisterID source
if constexpr (structureHeapAddressSize >= 4 * GB) {
ASSERT(structureHeapAddressSize == 4 * GB);
move(source, dest);
- } else
- and32(TrustedImm32(StructureID::structureIDMask), source, dest);
+ } else {
+ static_assert(static_cast<uint32_t>(StructureID::structureIDMask) == StructureID::structureIDMask);
+ and32(TrustedImm32(static_cast<uint32_t>(StructureID::structureIDMask)), source, dest);
+ }
or64(TrustedImm64(startOfStructureHeap()), dest);
#else // not CPU(ADDRESS64)
move(source, dest);
diff --git a/Source/JavaScriptCore/llint/InPlaceInterpreter.cpp b/Source/JavaScriptCore/llint/InPlaceInterpreter.cpp
index b9442b4f..a1d5a6c4 100644
--- a/Source/JavaScriptCore/llint/InPlaceInterpreter.cpp
+++ b/Source/JavaScriptCore/llint/InPlaceInterpreter.cpp
@@ -43,8 +43,8 @@ namespace JSC { namespace IPInt {
do { \
void* base = reinterpret_cast<void*>(ipint_unreachable_validate); \
void* ptr = reinterpret_cast<void*>(ipint_ ## name ## _validate); \
- void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr(); \
- void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr(); \
+ void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr<>(); \
+ void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>(); \
RELEASE_ASSERT_WITH_MESSAGE((char*)(untaggedPtr) - (char*)(untaggedBase) == opcode * 256, #name); \
} while (false);

@@ -52,8 +52,8 @@ do { \
do { \
void* base = reinterpret_cast<void*>(ipint_i32_trunc_sat_f32_s_validate); \
void* ptr = reinterpret_cast<void*>(ipint_ ## name ## _validate); \
- void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr(); \
- void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr(); \
+ void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr<>(); \
+ void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>(); \
RELEASE_ASSERT_WITH_MESSAGE((char*)(untaggedPtr) - (char*)(untaggedBase) == opcode * 256, #name); \
} while (false);

@@ -61,8 +61,8 @@ do { \
do { \
void* base = reinterpret_cast<void*>(ipint_simd_v128_load_mem_validate); \
void* ptr = reinterpret_cast<void*>(ipint_ ## name ## _validate); \
- void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr(); \
- void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr(); \
+ void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr<>(); \
+ void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>(); \
RELEASE_ASSERT_WITH_MESSAGE((char*)(untaggedPtr) - (char*)(untaggedBase) == opcode * 256, #name); \
} while (false);

@@ -70,8 +70,8 @@ do { \
do { \
void* base = reinterpret_cast<void*>(ipint_memory_atomic_notify_validate); \
void* ptr = reinterpret_cast<void*>(ipint_ ## name ## _validate); \
- void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr(); \
- void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr(); \
+ void* untaggedBase = CodePtr<CFunctionPtrTag>::fromTaggedPtr(base).template untaggedPtr<>(); \
+ void* untaggedPtr = CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>(); \
RELEASE_ASSERT_WITH_MESSAGE((char*)(untaggedPtr) - (char*)(untaggedBase) == opcode * 256, #name); \
} while (false);

diff --git a/Source/JavaScriptCore/llint/LLIntData.h b/Source/JavaScriptCore/llint/LLIntData.h
index 97de867e..87a2971d 100644
--- a/Source/JavaScriptCore/llint/LLIntData.h
+++ b/Source/JavaScriptCore/llint/LLIntData.h
@@ -217,7 +217,7 @@ ALWAYS_INLINE LLIntCode getCodeFunctionPtr(OpcodeID opcodeID)
#if COMPILER(MSVC)
return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).taggedPtr());
#else
- return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).template taggedPtr());
+ return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).template taggedPtr<>());
#endif
}

@@ -227,7 +227,7 @@ ALWAYS_INLINE LLIntCode getWide16CodeFunctionPtr(OpcodeID opcodeID)
#if COMPILER(MSVC)
return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).taggedPtr());
#else
- return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).template taggedPtr());
+ return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).template taggedPtr<>());
#endif
}

@@ -237,7 +237,7 @@ ALWAYS_INLINE LLIntCode getWide32CodeFunctionPtr(OpcodeID opcodeID)
#if COMPILER(MSVC)
return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).taggedPtr());
#else
- return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).template taggedPtr());
+ return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).template taggedPtr<>());
#endif
}
#else // not ENABLE(JIT)
@@ -361,7 +361,7 @@ ALWAYS_INLINE LLIntCode getCodeFunctionPtr(WasmOpcodeID opcodeID)
#if COMPILER(MSVC)
return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).taggedPtr());
#else
- return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).template taggedPtr());
+ return reinterpret_cast<LLIntCode>(getCodePtr<tag>(opcodeID).template taggedPtr<>());
#endif
}

@@ -371,7 +371,7 @@ ALWAYS_INLINE LLIntCode getWide16CodeFunctionPtr(WasmOpcodeID opcodeID)
#if COMPILER(MSVC)
return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).taggedPtr());
#else
- return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).template taggedPtr());
+ return reinterpret_cast<LLIntCode>(getWide16CodePtr<tag>(opcodeID).template taggedPtr<>());
#endif
}

@@ -381,7 +381,7 @@ ALWAYS_INLINE LLIntCode getWide32CodeFunctionPtr(WasmOpcodeID opcodeID)
#if COMPILER(MSVC)
return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).taggedPtr());
#else
- return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).template taggedPtr());
+ return reinterpret_cast<LLIntCode>(getWide32CodePtr<tag>(opcodeID).template taggedPtr<>());
#endif
}
#else // not ENABLE(JIT)
diff --git a/Source/JavaScriptCore/llint/LLIntThunks.cpp b/Source/JavaScriptCore/llint/LLIntThunks.cpp
index 13269469..e41fa5b8 100644
--- a/Source/JavaScriptCore/llint/LLIntThunks.cpp
+++ b/Source/JavaScriptCore/llint/LLIntThunks.cpp
@@ -227,7 +227,7 @@ ALWAYS_INLINE void* untaggedPtr(void* ptr)
#if COMPILER(MSVC)
return CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).untaggedPtr();
#else
- return CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr();
+ return CodePtr<CFunctionPtrTag>::fromTaggedPtr(ptr).template untaggedPtr<>();
#endif
}

diff --git a/Source/JavaScriptCore/parser/Nodes.h b/Source/JavaScriptCore/parser/Nodes.h
index 01af81b7..70b87088 100644
--- a/Source/JavaScriptCore/parser/Nodes.h
+++ b/Source/JavaScriptCore/parser/Nodes.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1999-2000 Harri Porten ([email protected])
* Copyright (C) 2001 Peter Kelly ([email protected])
- * Copyright (C) 2003-2019 Apple Inc. All rights reserved.
+ * Copyright (C) 2003-2024 Apple Inc. All rights reserved.
* Copyright (C) 2007 Cameron Zwarich ([email protected])
* Copyright (C) 2007 Maks Orlovich
* Copyright (C) 2007 Eric Seidel <[email protected]>
@@ -29,6 +29,7 @@
#include "ImplementationVisibility.h"
#include "JITCode.h"
#include "Label.h"
+#include "ModuleScopeData.h"
#include "ParserArena.h"
#include "ParserModes.h"
#include "ParserTokens.h"
@@ -49,7 +50,6 @@ namespace JSC {
class FunctionMetadataNode;
class FunctionParameters;
class ModuleAnalyzer;
- class ModuleScopeData;
class PropertyListNode;
class ReadModifyResolveNode;
class RegisterID;
diff --git a/Source/JavaScriptCore/runtime/JSCast.h b/Source/JavaScriptCore/runtime/JSCast.h
index a44b6e38..e5664a8b 100644
--- a/Source/JavaScriptCore/runtime/JSCast.h
+++ b/Source/JavaScriptCore/runtime/JSCast.h
@@ -236,7 +236,7 @@ template<typename Target, typename From>
bool inherits(From* from)
{
using Dispatcher = InheritsTraits<Target>;
- return Dispatcher::template inherits(from);
+ return Dispatcher::template inherits<>(from);
}

} // namespace JSCastingHelpers
@@ -245,7 +245,7 @@ template<typename To, typename From>
To jsDynamicCast(From* from)
{
using Dispatcher = JSCastingHelpers::InheritsTraits<typename std::remove_cv<typename std::remove_pointer<To>::type>::type>;
- if (LIKELY(Dispatcher::template inherits(from)))
+ if (LIKELY(Dispatcher::template inherits<>(from)))
return static_cast<To>(from);
return nullptr;
}
Loading

0 comments on commit 44556b8

Please sign in to comment.