@@ -46,12 +46,14 @@ inline void ensureExists(Module* wasm) {
46
46
// Try to merge segments until they fit into web limitations.
47
47
// Return true if successful.
48
48
// Does not yet support multimemory
49
- inline bool ensureLimitedSegments (Module& module ) {
49
+ inline bool
50
+ ensureLimitedSegments (Module& module ,
51
+ Index maxDataSegments = WebLimitations::MaxDataSegments) {
50
52
if (module .memories .size () > 1 ) {
51
53
return false ;
52
54
}
53
55
auto & dataSegments = module .dataSegments ;
54
- if (dataSegments.size () <= WebLimitations::MaxDataSegments ) {
56
+ if (dataSegments.size () <= maxDataSegments ) {
55
57
return true ;
56
58
}
57
59
@@ -86,19 +88,19 @@ inline bool ensureLimitedSegments(Module& module) {
86
88
87
89
// check if we have too many dynamic data segments, which we can do nothing
88
90
// about
89
- if (numDynamic + 1 >= WebLimitations::MaxDataSegments ) {
91
+ if (numDynamic + 1 >= maxDataSegments ) {
90
92
return false ;
91
93
}
92
94
93
95
// we'll merge constant segments if we must
94
- if (numConstant + numDynamic >= WebLimitations::MaxDataSegments ) {
95
- numConstant = WebLimitations::MaxDataSegments - numDynamic - 1 ;
96
+ if (numConstant + numDynamic >= maxDataSegments ) {
97
+ numConstant = maxDataSegments - numDynamic - 1 ;
96
98
[[maybe_unused]] auto num = numConstant + numDynamic;
97
- assert (num == WebLimitations::MaxDataSegments - 1 );
99
+ assert (num == maxDataSegments - 1 );
98
100
}
99
101
100
102
std::vector<std::unique_ptr<wasm::DataSegment>> mergedSegments;
101
- mergedSegments.reserve (WebLimitations::MaxDataSegments );
103
+ mergedSegments.reserve (maxDataSegments );
102
104
103
105
// drop empty segments and pass through dynamic-offset segments
104
106
for (auto & segment : dataSegments) {
@@ -121,7 +123,7 @@ inline bool ensureLimitedSegments(Module& module) {
121
123
if (!isRelevant (*segment)) {
122
124
continue ;
123
125
}
124
- if (mergedSegments.size () + 2 < WebLimitations::MaxDataSegments ) {
126
+ if (mergedSegments.size () + 2 < maxDataSegments ) {
125
127
mergedSegments.push_back (std::move (segment));
126
128
continue ;
127
129
}
0 commit comments