Skip to content

Commit 4339c66

Browse files
authored
WasmFS: Stop always including _wasmfs_read_file (#19516)
Instead, treat it like everything else. After recent fixes this now works ok, and it helps a lot with code size: see the minimal metadce test, which goes from 42,976 bytes to just 88 (which is basically us no longer linking in all of WasmFS for a minimal program that doesn't do any I/O at all).
1 parent d4cca9f commit 4339c66

13 files changed

+12
-204
lines changed

emcc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2308,13 +2308,13 @@ def phase_linker_setup(options, state, newargs):
23082308
settings.FILESYSTEM = 1
23092309
settings.SYSCALLS_REQUIRE_FILESYSTEM = 0
23102310
settings.JS_LIBRARIES.append((0, 'library_wasmfs.js'))
2311-
settings.REQUIRED_EXPORTS += ['_wasmfs_read_file']
23122311
if settings.FORCE_FILESYSTEM:
23132312
# Add exports for the JS API. Like the old JS FS, WasmFS by default
23142313
# includes just what JS parts it actually needs, and FORCE_FILESYSTEM is
23152314
# required to force all of it to be included if the user wants to use the
23162315
# JS API directly.
23172316
settings.REQUIRED_EXPORTS += [
2317+
'_wasmfs_read_file',
23182318
'_wasmfs_write_file',
23192319
'_wasmfs_open',
23202320
'_wasmfs_close',

test/other/metadce/test_metadce_cxx_wasmfs.exports

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ __cxa_is_pointer_type
22
__errno_location
33
__indirect_function_table
44
__wasm_call_ctors
5-
_wasmfs_read_file
65
dynCall_iiiiiijj
76
dynCall_iiiiij
87
dynCall_iiiiijj
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
163973
1+
159769

test/other/metadce/test_metadce_files_wasmfs.funcs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ $__unlockfile
3434
$__wasi_fd_close
3535
$__wasi_fd_write
3636
$__wasm_call_ctors
37-
$close
3837
$decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul>::__dispatch\5babi:v160004\5d<std::__2::__variant_detail::__dtor<std::__2::__variant_detail::__traits<long\2c\20std::__2::shared_ptr<wasmfs::File>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20long\2c\20std::__2::shared_ptr<wasmfs::File>>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20long\2c\20std::__2::shared_ptr<wasmfs::File>>&\29
3938
$dlfree
4039
$dlmalloc
@@ -44,10 +43,8 @@ $is_equal\28std::type_info\20const*\2c\20std::type_info\20const*\2c\20bool\29
4443
$main
4544
$memcmp
4645
$memmove
47-
$open
4846
$operator\20new\28unsigned\20long\29
4947
$pthread_mutex_init
50-
$readAtOffset\28OffsetHandling\2c\20unsigned\20int\2c\20__wasi_iovec_t\20const*\2c\20unsigned\20long\2c\20unsigned\20long*\2c\20unsigned\20long\20long\29
5148
$sbrk
5249
$std::__2::__shared_ptr_emplace<wasmfs::MemoryDataFile\2c\20std::__2::allocator<wasmfs::MemoryDataFile>>::~__shared_ptr_emplace\28\29
5350
$std::__2::__shared_ptr_emplace<wasmfs::MemoryDataFile\2c\20std::__2::allocator<wasmfs::MemoryDataFile>>::~__shared_ptr_emplace\28\29.1
@@ -76,7 +73,6 @@ $std::__2::__shared_weak_count::lock\28\29
7673
$std::__2::__tree<std::__2::__value_type<std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\2c\20wasmfs::Directory::DCacheEntry>\2c\20std::__2::__map_value_compare<std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\2c\20std::__2::__value_type<std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\2c\20wasmfs::Directory::DCacheEntry>\2c\20std::__2::less<std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>>\2c\20true>\2c\20std::__2::allocator<std::__2::__value_type<std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\2c\20wasmfs::Directory::DCacheEntry>>>::destroy\28std::__2::__tree_node<std::__2::__value_type<std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\2c\20wasmfs::Directory::DCacheEntry>\2c\20void*>*\29
7774
$std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>::__begin_lifetime\5babi:v160004\5d\28char*\2c\20unsigned\20long\29
7875
$std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>::__init_copy_ctor_external\28char\20const*\2c\20unsigned\20long\29
79-
$std::__2::shared_ptr<wasmfs::DataFile>::~shared_ptr\5babi:v160004\5d\28\29
8076
$std::__2::shared_ptr<wasmfs::SpecialFiles::\28anonymous\20namespace\29::RandomFile>\20std::__2::make_shared\5babi:v160004\5d<wasmfs::SpecialFiles::\28anonymous\20namespace\29::RandomFile\2c\20void>\28\29
8177
$std::__2::vector<unsigned\20char\2c\20std::__2::allocator<unsigned\20char>>::__append\28unsigned\20long\29
8278
$std::__2::vector<wasmfs::MemoryDirectory::ChildEntry\2c\20std::__2::allocator<wasmfs::MemoryDirectory::ChildEntry>>::erase\5babi:v160004\5d\28std::__2::__wrap_iter<wasmfs::MemoryDirectory::ChildEntry\20const*>\29
@@ -86,15 +82,12 @@ $wasmfs::DataFile::Handle::flush\28\29
8682
$wasmfs::DataFile::Handle::write\28unsigned\20char\20const*\2c\20unsigned\20long\2c\20long\20long\29
8783
$wasmfs::Directory::Handle::cacheChild\28std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\20const&\2c\20std::__2::shared_ptr<wasmfs::File>\2c\20wasmfs::Directory::DCacheKind\29
8884
$wasmfs::Directory::Handle::getChild\28std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\20const&\29
89-
$wasmfs::Directory::Handle::insertDataFile\28std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\20const&\2c\20unsigned\20int\29
9085
$wasmfs::Directory::Handle::insertDirectory\28std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\20const&\2c\20unsigned\20int\29
9186
$wasmfs::Directory::Handle::mountChild\28std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\20const&\2c\20std::__2::shared_ptr<wasmfs::File>\29
9287
$wasmfs::Directory::getName\28std::__2::shared_ptr<wasmfs::File>\29
9388
$wasmfs::Directory::getSize\28\29
9489
$wasmfs::Directory::~Directory\28\29
95-
$wasmfs::File::Handle::~Handle\28\29
9690
$wasmfs::File::~File\28\29
97-
$wasmfs::FileTable::Handle::addEntry\28std::__2::shared_ptr<wasmfs::OpenFileState>\29
9891
$wasmfs::FileTable::Handle::getEntry\28unsigned\20int\29
9992
$wasmfs::FileTable::Handle::setEntry\28unsigned\20int\2c\20std::__2::shared_ptr<wasmfs::OpenFileState>\29
10093
$wasmfs::MemoryBackend::createDirectory\28unsigned\20int\29
@@ -145,5 +138,4 @@ $wasmfs::path::\28anonymous\20namespace\29::doParseFile\28std::__2::basic_string
145138
$wasmfs::path::\28anonymous\20namespace\29::doParseParent\28std::__2::basic_string_view<char\2c\20std::__2::char_traits<char>>\2c\20std::__2::shared_ptr<wasmfs::Directory>\2c\20unsigned\20long&\29
146139
$wasmfs::path::\28anonymous\20namespace\29::getBaseDir\28unsigned\20int\29
147140
$wasmfs::path::\28anonymous\20namespace\29::getChild\28std::__2::shared_ptr<wasmfs::Directory>\2c\20std::__2::basic_string_view<char\2c\20std::__2::char_traits<char>>\2c\20wasmfs::path::LinkBehavior\2c\20unsigned\20long&\29
148-
$wasmfs::path::parseFile\28std::__2::basic_string_view<char\2c\20std::__2::char_traits<char>>\2c\20unsigned\20int\2c\20wasmfs::path::LinkBehavior\29
149141
$wasmfs::path::parseParent\28std::__2::basic_string_view<char\2c\20std::__2::char_traits<char>>\2c\20unsigned\20int\29
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
49396
1+
47462

test/other/metadce/test_metadce_hello_wasmfs.funcs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ $__stdio_write
3434
$__time
3535
$__towrite
3636
$__unlockfile
37-
$__wasi_fd_close
3837
$__wasi_fd_write
3938
$__wasm_call_ctors
4039
$decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul>::__dispatch\5babi:v160004\5d<std::__2::__variant_detail::__dtor<std::__2::__variant_detail::__traits<long\2c\20std::__2::shared_ptr<wasmfs::File>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20long\2c\20std::__2::shared_ptr<wasmfs::File>>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20long\2c\20std::__2::shared_ptr<wasmfs::File>>&\29
@@ -92,7 +91,6 @@ $wasmfs::Directory::getSize\28\29
9291
$wasmfs::Directory::~Directory\28\29
9392
$wasmfs::File::~File\28\29
9493
$wasmfs::FileTable::Handle::getEntry\28unsigned\20int\29
95-
$wasmfs::FileTable::Handle::setEntry\28unsigned\20int\2c\20std::__2::shared_ptr<wasmfs::OpenFileState>\29
9694
$wasmfs::MemoryBackend::createDirectory\28unsigned\20int\29
9795
$wasmfs::MemoryBackend::createFile\28unsigned\20int\29
9896
$wasmfs::MemoryBackend::createSymlink\28std::__2::basic_string<char\2c\20std::__2::char_traits<char>\2c\20std::__2::allocator<char>>\29
@@ -141,5 +139,3 @@ $wasmfs::path::\28anonymous\20namespace\29::doParseFile\28std::__2::basic_string
141139
$wasmfs::path::\28anonymous\20namespace\29::doParseParent\28std::__2::basic_string_view<char\2c\20std::__2::char_traits<char>>\2c\20std::__2::shared_ptr<wasmfs::Directory>\2c\20unsigned\20long&\29
142140
$wasmfs::path::\28anonymous\20namespace\29::getBaseDir\28unsigned\20int\29
143141
$wasmfs::path::\28anonymous\20namespace\29::getChild\28std::__2::shared_ptr<wasmfs::Directory>\2c\20std::__2::basic_string_view<char\2c\20std::__2::char_traits<char>>\2c\20wasmfs::path::LinkBehavior\2c\20unsigned\20long&\29
144-
$wasmfs::path::parseFile\28std::__2::basic_string_view<char\2c\20std::__2::char_traits<char>>\2c\20unsigned\20int\2c\20wasmfs::path::LinkBehavior\29
145-
$wasmfs::path::parseParent\28std::__2::basic_string_view<char\2c\20std::__2::char_traits<char>>\2c\20unsigned\20int\29
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
45278
1+
44622
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
p
2-
q
3-
r
4-
s
1+
a
2+
b
3+
c
4+
d

0 commit comments

Comments
 (0)