• Russ Cox's avatar
    all: remove 'extern register M *m' from runtime · 89f185fe
    Russ Cox authored
    The runtime has historically held two dedicated values g (current goroutine)
    and m (current thread) in 'extern register' slots (TLS on x86, real registers
    backed by TLS on ARM).
    
    This CL removes the extern register m; code now uses g->m.
    
    On ARM, this frees up the register that formerly held m (R9).
    This is important for NaCl, because NaCl ARM code cannot use R9 at all.
    
    The Go 1 macrobenchmarks (those with per-op times >= 10 µs) are unaffected:
    
    BenchmarkBinaryTree17              5491374955     5471024381     -0.37%
    BenchmarkFannkuch11                4357101311     4275174828     -1.88%
    BenchmarkGobDecode                 11029957       11364184       +3.03%
    BenchmarkGobEncode                 6852205        6784822        -0.98%
    BenchmarkGzip                      650795967      650152275      -0.10%
    BenchmarkGunzip                    140962363      141041670      +0.06%
    BenchmarkHTTPClientServer          71581          73081          +2.10%
    BenchmarkJSONEncode                31928079       31913356       -0.05%
    BenchmarkJSONDecode                117470065      113689916      -3.22%
    BenchmarkMandelbrot200             6008923        5998712        -0.17%
    BenchmarkGoParse                   6310917        6327487        +0.26%
    BenchmarkRegexpMatchMedium_1K      114568         114763         +0.17%
    BenchmarkRegexpMatchHard_1K        168977         169244         +0.16%
    BenchmarkRevcomp                   935294971      914060918      -2.27%
    BenchmarkTemplate                  145917123      148186096      +1.55%
    
    Minux previous reported larger variations, but these were caused by
    run-to-run noise, not repeatable slowdowns.
    
    Actual code changes by Minux.
    I only did the docs and the benchmarking.
    
    LGTM=dvyukov, iant, minux
    R=minux, josharian, iant, dave, bradfitz, dvyukov
    CC=golang-codereviews
    https://golang.org/cl/109050043
    89f185fe
Name
Last commit
Last update
..
Makefile Loading commit data...
a.h Loading commit data...
a.y Loading commit data...
doc.go Loading commit data...
lex.c Loading commit data...
y.tab.c Loading commit data...
y.tab.h Loading commit data...