• Russ Cox's avatar
    runtime: implement time.now in assembly on plan9, solaris, windows · 13d0b82b
    Russ Cox authored
    These all used a C implementation that contained 64-bit divide by 1000000000.
    On 32-bit systems that ends up in the 64-bit C divide support, which makes
    other calls and ends up using a fair amount of stack. We could convert them
    to Go but then they'd still end up in software 64-bit divide code. That would
    be okay, because Go code can split the stack, but it's still unnecessary.
    
    Write time·now in assembly, just like on all the other systems, and use the
    actual hardware support for 64/32 -> 64/32 division. This cuts the software
    routines out entirely.
    
    The actual code to do the division is copied and pasted from the sys_darwin_*.s files.
    
    LGTM=alex.brainman
    R=golang-codereviews, alex.brainman
    CC=aram, golang-codereviews, iant, khr, r
    https://golang.org/cl/136300043
    13d0b82b
sys_plan9_386.s 4.44 KB