Hello golang-codereviews@googlegroups.com, I'd like you to review this change to https://khr%40golang.org@code.google.com/p/go/
LGTM On Tue, Sep 2, 2014 at 2:19 PM, <khr@golang.org> wrote: > Reviewers: golang-codereviews, > > Message: > Hello golang-codereviews@googlegroups.com, > > I'd like you to review this change to > https://khr%40golang.org@code.google.com/p/go/ > > > Description: > runtime: unify fastrand1 and fastrand2 > > C and Go calling conventions are now compatible, so we > don't need two versions of this function. > > Please review this at https://codereview.appspot.com/139080043/ > > Affected files (+10, -26 lines): > M src/pkg/runtime/alg.go > M src/pkg/runtime/asm_386.s > M src/pkg/runtime/asm_amd64.s > M src/pkg/runtime/asm_amd64p32.s > M src/pkg/runtime/asm_arm.s > M src/pkg/runtime/hashmap.go > M src/pkg/runtime/malloc.go > M src/pkg/runtime/runtime.c > M src/pkg/runtime/select.go > M src/pkg/runtime/stubs.go > > > Index: src/pkg/runtime/alg.go > =================================================================== > --- a/src/pkg/runtime/alg.go > +++ b/src/pkg/runtime/alg.go > @@ -111,7 +111,7 @@ > case f == 0: > return c1 * (c0 ^ h) // +0, -0 > case f != f: > - return c1 * (c0 ^ h ^ uintptr(fastrand2())) // any kind of > NaN > + return c1 * (c0 ^ h ^ uintptr(fastrand1())) // any kind of > NaN > default: > return memhash(p, 4, h) > } > @@ -123,7 +123,7 @@ > case f == 0: > return c1 * (c0 ^ h) // +0, -0 > case f != f: > - return c1 * (c0 ^ h ^ uintptr(fastrand2())) // any kind of > NaN > + return c1 * (c0 ^ h ^ uintptr(fastrand1())) // any kind of > NaN > default: > return memhash(p, 8, h) > } > Index: src/pkg/runtime/asm_386.s > =================================================================== > --- a/src/pkg/runtime/asm_386.s > +++ b/src/pkg/runtime/asm_386.s > @@ -2283,7 +2283,7 @@ > TEXT runtime·timenow(SB), NOSPLIT, $0-0 > JMP time·now(SB) > > -TEXT runtime·fastrand2(SB), NOSPLIT, $0-4 > +TEXT runtime·fastrand1(SB), NOSPLIT, $0-4 > get_tls(CX) > MOVL g(CX), AX > MOVL g_m(AX), AX > Index: src/pkg/runtime/asm_amd64.s > =================================================================== > --- a/src/pkg/runtime/asm_amd64.s > +++ b/src/pkg/runtime/asm_amd64.s > @@ -2335,7 +2335,7 @@ > TEXT runtime·timenow(SB), NOSPLIT, $0-0 > JMP time·now(SB) > > -TEXT runtime·fastrand2(SB), NOSPLIT, $0-4 > +TEXT runtime·fastrand1(SB), NOSPLIT, $0-4 > get_tls(CX) > MOVQ g(CX), AX > MOVQ g_m(AX), AX > Index: src/pkg/runtime/asm_amd64p32.s > =================================================================== > --- a/src/pkg/runtime/asm_amd64p32.s > +++ b/src/pkg/runtime/asm_amd64p32.s > @@ -1208,7 +1208,7 @@ > TEXT runtime·timenow(SB), NOSPLIT, $0-0 > JMP time·now(SB) > > -TEXT runtime·fastrand2(SB), NOSPLIT, $0-4 > +TEXT runtime·fastrand1(SB), NOSPLIT, $0-4 > get_tls(CX) > MOVL g(CX), AX > MOVL g_m(AX), AX > Index: src/pkg/runtime/asm_arm.s > =================================================================== > --- a/src/pkg/runtime/asm_arm.s > +++ b/src/pkg/runtime/asm_arm.s > @@ -1259,7 +1259,7 @@ > MOVW.P R0, 4(R2) > RET > > -TEXT runtime·fastrand2(SB), NOSPLIT, $-4-4 > +TEXT runtime·fastrand1(SB), NOSPLIT, $-4-4 > MOVW g_m(g), R1 > MOVW m_fastrand(R1), R0 > ADD.S R0, R0 > Index: src/pkg/runtime/hashmap.go > =================================================================== > --- a/src/pkg/runtime/hashmap.go > +++ b/src/pkg/runtime/hashmap.go > @@ -219,7 +219,7 @@ > h.count = 0 > h.B = B > h.flags = 0 > - h.hash0 = fastrand2() > + h.hash0 = fastrand1() > h.buckets = buckets > h.oldbuckets = nil > h.nevacuate = 0 > @@ -568,7 +568,7 @@ > > // iterator state > it.bucket = 0 > - it.offset = uint8(fastrand2() & (bucketCnt - 1)) > + it.offset = uint8(fastrand1() & (bucketCnt - 1)) > it.done = false > it.bptr = nil > > Index: src/pkg/runtime/malloc.go > =================================================================== > --- a/src/pkg/runtime/malloc.go > +++ b/src/pkg/runtime/malloc.go > @@ -387,7 +387,7 @@ > if rate > 0x3fffffff { // make 2*rate not overflow > rate = 0x3fffffff > } > - next := int32(fastrand2()) % (2 * int32(rate)) > + next := int32(fastrand1()) % (2 * int32(rate)) > // Subtract the "remainder" of the current allocation. > // Otherwise objects that are close in size to sampling > rate > // will be under-sampled, because we consistently discard > this remainder. > Index: src/pkg/runtime/runtime.c > =================================================================== > --- a/src/pkg/runtime/runtime.c > +++ b/src/pkg/runtime/runtime.c > @@ -265,19 +265,6 @@ > runtime·throw("FixedStack is not power-of-2"); > } > > -uint32 > -runtime·fastrand1(void) > -{ > - uint32 x; > - > - x = g->m->fastrand; > - x += x; > - if(x & 0x80000000L) > - x ^= 0x88888eefUL; > - g->m->fastrand = x; > - return x; > -} > - > static Mutex ticksLock; > static int64 ticks; > > Index: src/pkg/runtime/select.go > =================================================================== > --- a/src/pkg/runtime/select.go > +++ b/src/pkg/runtime/select.go > @@ -226,7 +226,7 @@ > } > for i := 1; i < int(sel.ncase); i++ { > o := pollorder[i] > - j := int(fastrand2()) % (i + 1) > + j := int(fastrand1()) % (i + 1) > pollorder[i] = pollorder[j] > pollorder[j] = o > } > Index: src/pkg/runtime/stubs.go > =================================================================== > --- a/src/pkg/runtime/stubs.go > +++ b/src/pkg/runtime/stubs.go > @@ -101,9 +101,6 @@ > //go:noescape > func memmove(to unsafe.Pointer, from unsafe.Pointer, n uintptr) > > -// in asm_*.s > -func fastrand2() uint32 > - > const ( > concurrentSweep = true > ) > > > -- > You received this message because you are subscribed to the Google Groups > "golang-codereviews" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-codereviews+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. >
*** Submitted as https://code.google.com/p/go/source/detail?r=3d5b33a2459d *** runtime: unify fastrand1 and fastrand2 C and Go calling conventions are now compatible, so we don't need two versions of this function. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://codereview.appspot.com/139080043