Index: src/Target.m3 =================================================================== RCS file: /usr/cvs/cm3/m3-sys/m3middle/src/Target.m3,v retrieving revision 1.123 diff -u -r1.123 Target.m3 --- src/Target.m3 7 Nov 2011 19:10:17 -0000 1.123 +++ src/Target.m3 16 Aug 2012 13:40:10 -0000 @@ -400,12 +400,12 @@ ELSE RETURN FALSE; END; - InitCallingConventions (backend_mode, - System IN SET OF Systems{Systems.I386_INTERIX, - Systems.NT386, - Systems.I386_NT, - Systems.I386_CYGWIN, - Systems.I386_MINGW}); + MaybeInitCallingConventions (backend_mode, + System IN SET OF Systems{Systems.I386_INTERIX, + Systems.NT386, + Systems.I386_NT, + Systems.I386_CYGWIN, + Systems.I386_MINGW}); (* fill in the "bytes" and "pack" fields *) FixI (Address, max_align); @@ -439,6 +439,17 @@ RETURN TRUE; END Init; +CONST DefaultBackendMode = M3BackendMode_t.ExternalAssembly; +CONST DefaultHasCallingConventions = FALSE; + +PROCEDURE MaybeInitCallingConventions(backend_mode: M3BackendMode_t; + calling_conventions: BOOLEAN) = +BEGIN + IF backend_mode # DefaultBackendMode OR calling_conventions # DefaultHasCallingConventions THEN + InitCallingConventions(backend_mode, calling_conventions); + END; +END MaybeInitCallingConventions; + PROCEDURE InitCallingConventions(backend_mode: M3BackendMode_t; calling_conventions: BOOLEAN) = PROCEDURE New(name: TEXT; id: [0..1]): CallingConvention = @@ -520,4 +531,5 @@ END ConventionFromID; BEGIN + InitCallingConventions (DefaultBackendMode, DefaultHasCallingConventions); END Target.