aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorRichard Brooksby2013-05-08 17:43:01 +0100
committerRichard Brooksby2013-05-08 17:43:01 +0100
commitd396431c252b0f6330c1c31995adddfcd0bad7ae (patch)
treee575e4124acc0a26e3e3ce4dc9b84d6edfbb9eff /mps/code
parent8504a81cf338d98e8bd08c95628c5967b0d94a78 (diff)
downloademacs-d396431c252b0f6330c1c31995adddfcd0bad7ae.tar.gz
emacs-d396431c252b0f6330c1c31995adddfcd0bad7ae.zip
Adding decoding of vararg debug options to debug pool classes.
Copied from Perforce Change: 181639 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/mpsi.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/mps/code/mpsi.c b/mps/code/mpsi.c
index a7253a5cfbd..404bb115360 100644
--- a/mps/code/mpsi.c
+++ b/mps/code/mpsi.c
@@ -660,11 +660,9 @@ mps_res_t mps_pool_create(mps_pool_t *mps_pool_o, mps_arena_t arena,
660 660
661/* Decode deprecated varargs. TODO: This can be deleted when varargs go. */ 661/* Decode deprecated varargs. TODO: This can be deleted when varargs go. */
662 662
663mps_res_t mps_pool_create_v(mps_pool_t *mps_pool_o, mps_arena_t arena, 663static void mps_pool_create_v_decode(mps_arg_s args[],
664 mps_class_t class, va_list varargs) 664 mps_class_t class,
665{ 665 va_list varargs) {
666 mps_arg_s args[6];
667
668 if (class == mps_class_amc()) { 666 if (class == mps_class_amc()) {
669 args[0].key = MPS_KEY_FORMAT; 667 args[0].key = MPS_KEY_FORMAT;
670 args[0].val.format = va_arg(varargs, Format); 668 args[0].val.format = va_arg(varargs, Format);
@@ -719,6 +717,31 @@ mps_res_t mps_pool_create_v(mps_pool_t *mps_pool_o, mps_arena_t arena,
719 } else { 717 } else {
720 args[0].key = MPS_KEY_ARGS_END; 718 args[0].key = MPS_KEY_ARGS_END;
721 } 719 }
720 /* Do not extend this list. Future pools should not take varargs. */
721}
722
723mps_res_t mps_pool_create_v(mps_pool_t *mps_pool_o, mps_arena_t arena,
724 mps_class_t class, va_list varargs)
725{
726 mps_arg_s args[16];
727
728 if (class == mps_class_mv_debug()) {
729 args[0].key = MPS_KEY_POOL_DEBUG_OPTION;
730 args[1].val.pool_debug_option = va_arg(varargs, mps_pool_debug_option_s *);
731 mps_pool_create_v_decode(args + 1, mps_class_mv(), varargs);
732 } else if (class == mps_class_ams_debug()) {
733 args[0].key = MPS_KEY_POOL_DEBUG_OPTION;
734 args[1].val.pool_debug_option = va_arg(varargs, mps_pool_debug_option_s *);
735 mps_pool_create_v_decode(args + 1, mps_class_ams(), varargs);
736 } else if (class == mps_class_mvff_debug()) {
737 args[0].key = MPS_KEY_POOL_DEBUG_OPTION;
738 args[1].val.pool_debug_option = va_arg(varargs, mps_pool_debug_option_s *);
739 mps_pool_create_v_decode(args + 1, mps_class_mvff(), varargs);
740 } else
741 mps_pool_create_v_decode(args, class, varargs);
742 /* Do not extend this list. Future pools should not take varargs. */
743
744 va_end(varargs);
722 745
723 return mps_pool_create_k(mps_pool_o, arena, class, args); 746 return mps_pool_create_k(mps_pool_o, arena, class, args);
724} 747}