From e70f9b351df979ad65cb1e3a8aa0c57d94d1585d Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Wed, 13 Mar 2013 18:24:20 +0900 Subject: Simplify. Temporary variable "i" is removed. --- src/vm.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/vm.c b/src/vm.c index dd8edf4bc..65ce1ce69 100644 --- a/src/vm.c +++ b/src/vm.c @@ -57,10 +57,8 @@ The value below allows about 60000 recursive calls in the simplest case. */ static inline void stack_copy(mrb_value *dst, const mrb_value *src, size_t size) { - size_t i; - - for (i = 0; i < size; i++) { - dst[i] = src[i]; + while (size-- > 0) { + *dst++ = *src++; } } -- cgit v1.2.3 From 68468dabfa18bee8ec77056ffc6da390696c7433 Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Wed, 13 Mar 2013 18:26:59 +0900 Subject: Extract stack zero filling to stack_clear(). Porting evelopers can optimize by replacing to memset() on their own risk. --- src/vm.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/vm.c b/src/vm.c index 65ce1ce69..65e2f9c65 100644 --- a/src/vm.c +++ b/src/vm.c @@ -54,6 +54,16 @@ The value below allows about 60000 recursive calls in the simplest case. */ # define DEBUG(x) #endif +static inline void +stack_clear(mrb_value *from, size_t count) +{ + const mrb_value mrb_value_zero = { { 0 } }; + + while(count-- > 0) { + *from++ = mrb_value_zero; + } +} + static inline void stack_copy(mrb_value *dst, const mrb_value *src, size_t size) { @@ -128,15 +138,14 @@ stack_extend(mrb_state *mrb, int room, int keep) } if (room > keep) { - int i; - for (i=keep; istack[i] = mrb_value_zero; + stack_clear(&(mrb->stack[keep]), room - keep); #else + int i; + for (i=keep; istack[i]); -#endif } +#endif } } -- cgit v1.2.3