From: Rémy Oudompheng Date: Wed, 31 Jul 2013 21:37:23 +0000 (+0200) Subject: runtime: save 8 stack bytes in timediv on arm. X-Git-Tag: go1.2rc2~857 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a05237f20ae6230238a9e44bc8bfc974e6d51422;p=gostls13.git runtime: save 8 stack bytes in timediv on arm. Operations on int64 are very stack consuming with 5c. Fixes netbsd/arm build. Before: TEXT runtime.timediv+0(SB),7,$52-16 After: TEXT runtime.timediv+0(SB),7,$44-16 The stack usage is unchanged on 386: TEXT runtime.timediv+0(SB),7,$8-16 R=golang-dev, dvyukov, bradfitz CC=golang-dev https://golang.org/cl/12182044 --- diff --git a/src/pkg/runtime/runtime.c b/src/pkg/runtime/runtime.c index 5bca6f87b4..a0e9a194c6 100644 --- a/src/pkg/runtime/runtime.c +++ b/src/pkg/runtime/runtime.c @@ -421,16 +421,16 @@ runtime·timediv(int64 v, int32 div, int32 *rem) { int32 res, bit; - if(v >= div*0x7fffffffLL) { + if(v >= (int64)div*0x7fffffffLL) { if(rem != nil) *rem = 0; return 0x7fffffff; } res = 0; - for(bit = 0x40000000; bit != 0; bit >>= 1) { - if(v >= (int64)bit*div) { - v = v - (int64)bit*div; - res += bit; + for(bit = 30; bit >= 0; bit--) { + if(v >= ((int64)div<