Skip to content

Commit bd86ee9

Browse files
committedMay 2, 2019
whoops, missed a swift_once
1 parent 4184451 commit bd86ee9

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed
 

‎stdlib/public/runtime/CompatibilityOverride.h

+15-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ namespace swift {
3939
Override_ ## name getOverride_ ## name();
4040
#include "CompatibilityOverride.def"
4141

42-
42+
#ifndef __wasm__
4343
/// Used to define an override point. The override point #defines the appropriate
4444
/// OVERRIDE macro from CompatibilityOverride.def to this macro, then includes
4545
/// the file to generate the override points. The original implementation of the
@@ -55,6 +55,20 @@ namespace swift {
5555
return Override(COMPATIBILITY_UNPAREN namedArgs, swift_ ## name ## Impl); \
5656
return swift_ ## name ## Impl namedArgs; \
5757
}
58+
#else
59+
// WebAssembly: hack: change to swift_once_real
60+
#define COMPATIBILITY_OVERRIDE(name, ret, attrs, ccAttrs, namespace, typedArgs, namedArgs) \
61+
attrs ccAttrs ret namespace swift_ ## name typedArgs { \
62+
static Override_ ## name Override; \
63+
static swift_once_t Predicate; \
64+
swift_once_real(&Predicate, [](void *) { \
65+
Override = getOverride_ ## name(); \
66+
}, nullptr); \
67+
if (Override != nullptr) \
68+
return Override(COMPATIBILITY_UNPAREN namedArgs, swift_ ## name ## Impl); \
69+
return swift_ ## name ## Impl namedArgs; \
70+
}
71+
#endif
5872

5973
} /* end namespace swift */
6074

0 commit comments

Comments
 (0)