diff options
| author | Richard Brooksby | 2013-05-08 17:43:01 +0100 |
|---|---|---|
| committer | Richard Brooksby | 2013-05-08 17:43:01 +0100 |
| commit | d396431c252b0f6330c1c31995adddfcd0bad7ae (patch) | |
| tree | e575e4124acc0a26e3e3ce4dc9b84d6edfbb9eff /mps/code | |
| parent | 8504a81cf338d98e8bd08c95628c5967b0d94a78 (diff) | |
| download | emacs-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.c | 33 |
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 | ||
| 663 | mps_res_t mps_pool_create_v(mps_pool_t *mps_pool_o, mps_arena_t arena, | 663 | static 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 | |||
| 723 | mps_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 | } |