mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 21:29:06 +00:00
LibGC: Enable EXPLICIT_SYMBOL_EXPORT
This commit is contained in:
parent
1d62bf7049
commit
83846b3861
Notes:
github-actions[bot]
2025-06-30 16:51:58 +00:00
Author: https://github.com/ayeteadoe
Commit: 83846b3861
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5215
Reviewed-by: https://github.com/ADKaster ✅
18 changed files with 22 additions and 24 deletions
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class BlockAllocator {
|
||||
class GC_API BlockAllocator {
|
||||
public:
|
||||
BlockAllocator() = default;
|
||||
~BlockAllocator();
|
||||
|
|
|
@ -12,7 +12,7 @@ set(SOURCES
|
|||
WeakContainer.cpp
|
||||
)
|
||||
|
||||
serenity_lib(LibGC gc)
|
||||
serenity_lib(LibGC gc EXPLICIT_SYMBOL_EXPORT)
|
||||
target_link_libraries(LibGC PRIVATE LibCore)
|
||||
|
||||
if (ENABLE_SWIFT)
|
||||
|
|
|
@ -37,7 +37,7 @@ public: \
|
|||
} \
|
||||
friend class GC::Heap;
|
||||
|
||||
class Cell {
|
||||
class GC_API Cell {
|
||||
AK_MAKE_NONCOPYABLE(Cell);
|
||||
AK_MAKE_NONMOVABLE(Cell);
|
||||
|
||||
|
@ -57,7 +57,7 @@ public:
|
|||
|
||||
virtual StringView class_name() const = 0;
|
||||
|
||||
class Visitor {
|
||||
class GC_API Visitor {
|
||||
public:
|
||||
void visit(Cell* cell)
|
||||
{
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class CellAllocator {
|
||||
class GC_API CellAllocator {
|
||||
public:
|
||||
CellAllocator(size_t cell_size, char const* class_name = nullptr);
|
||||
~CellAllocator() = default;
|
||||
|
@ -68,7 +68,7 @@ private:
|
|||
};
|
||||
|
||||
template<typename T>
|
||||
class TypeIsolatingCellAllocator {
|
||||
class GC_API TypeIsolatingCellAllocator {
|
||||
public:
|
||||
using CellType = T;
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class ConservativeVectorBase {
|
||||
class GC_API ConservativeVectorBase {
|
||||
public:
|
||||
virtual ReadonlySpan<FlatPtr> possible_values() const = 0;
|
||||
|
||||
|
@ -32,7 +32,7 @@ public:
|
|||
};
|
||||
|
||||
template<typename T, size_t inline_capacity>
|
||||
class ConservativeVector final
|
||||
class GC_API ConservativeVector final
|
||||
: public ConservativeVectorBase
|
||||
, public Vector<T, inline_capacity> {
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class DeferGC {
|
||||
class GC_API DeferGC {
|
||||
public:
|
||||
explicit DeferGC(Heap& heap)
|
||||
: m_heap(heap)
|
||||
|
|
|
@ -24,7 +24,7 @@ struct ForeignPtr;
|
|||
using Base = base_class; \
|
||||
friend class GC::Heap;
|
||||
|
||||
class ForeignCell : public Cell {
|
||||
class GC_API ForeignCell : public Cell {
|
||||
FOREIGN_CELL(ForeignCell, Cell);
|
||||
|
||||
public:
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/Types.h>
|
||||
#include <LibGC/Export.h>
|
||||
|
||||
namespace GC {
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class Heap : public HeapBase {
|
||||
class GC_API Heap : public HeapBase {
|
||||
AK_MAKE_NONCOPYABLE(Heap);
|
||||
AK_MAKE_NONMOVABLE(Heap);
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class HeapBlock : public HeapBlockBase {
|
||||
class GC_API HeapBlock : public HeapBlockBase {
|
||||
AK_MAKE_NONCOPYABLE(HeapBlock);
|
||||
AK_MAKE_NONMOVABLE(HeapBlock);
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
struct HeapRoot {
|
||||
struct GC_API HeapRoot {
|
||||
enum class Type {
|
||||
HeapFunctionCapturedPointer,
|
||||
Root,
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class HeapBase {
|
||||
class GC_API HeapBase {
|
||||
AK_MAKE_NONCOPYABLE(HeapBase);
|
||||
AK_MAKE_NONMOVABLE(HeapBase);
|
||||
|
||||
|
@ -29,12 +29,12 @@ protected:
|
|||
void* m_private_data;
|
||||
};
|
||||
|
||||
class HeapBlockBase {
|
||||
class GC_API HeapBlockBase {
|
||||
AK_MAKE_NONMOVABLE(HeapBlockBase);
|
||||
AK_MAKE_NONCOPYABLE(HeapBlockBase);
|
||||
|
||||
public:
|
||||
GC_API static size_t block_size;
|
||||
static size_t block_size;
|
||||
static HeapBlockBase* from_cell(Cell const* cell)
|
||||
{
|
||||
return reinterpret_cast<HeapBlockBase*>(bit_cast<FlatPtr>(cell) & ~(HeapBlockBase::block_size - 1));
|
||||
|
|
|
@ -55,7 +55,7 @@ static constexpr u64 TAG_SHIFT = 48;
|
|||
static constexpr u64 TAG_EXTRACTION = 0xFFFF000000000000;
|
||||
static constexpr u64 SHIFTED_IS_CELL_PATTERN = IS_CELL_PATTERN << TAG_SHIFT;
|
||||
|
||||
class NanBoxedValue {
|
||||
class GC_API NanBoxedValue {
|
||||
public:
|
||||
bool is_cell() const { return (m_value.tag & IS_CELL_PATTERN) == IS_CELL_PATTERN; }
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class RootImpl : public RefCounted<RootImpl> {
|
||||
class GC_API RootImpl : public RefCounted<RootImpl> {
|
||||
AK_MAKE_NONCOPYABLE(RootImpl);
|
||||
AK_MAKE_NONMOVABLE(RootImpl);
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class RootHashMapBase {
|
||||
class GC_API RootHashMapBase {
|
||||
public:
|
||||
virtual void gather_roots(HashMap<Cell*, GC::HeapRoot>&) const = 0;
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class RootVectorBase {
|
||||
class GC_API RootVectorBase {
|
||||
public:
|
||||
virtual void gather_roots(HashMap<Cell*, GC::HeapRoot>&) const = 0;
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class WeakContainer {
|
||||
class GC_API WeakContainer {
|
||||
public:
|
||||
explicit WeakContainer(Heap&);
|
||||
virtual ~WeakContainer();
|
||||
|
|
|
@ -281,9 +281,6 @@ endif()
|
|||
if (WIN32)
|
||||
# FIXME: Windows on ARM
|
||||
target_link_libraries(LibJS PRIVATE clang_rt.builtins-x86_64.lib)
|
||||
# FIXME: This is a hack to get around lld-link error undefined symbol GC::HeapBlockBase::block_size
|
||||
# LibGC HeapBlock.obj is given directly to LibJS linker
|
||||
target_link_libraries(LibJS PRIVATE $<FILTER:$<TARGET_OBJECTS:LibGC>,INCLUDE,HeapBlock>)
|
||||
else()
|
||||
# This flag has no effect on Windows
|
||||
target_compile_options(LibJS PRIVATE -fno-omit-frame-pointer)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue