Don't convert uint64 to interface{} for the context key every time.

This accounts for ~80% of gcsfuse allocations.
geesefs-0-30-9
Aaron Jacobs 2015-07-28 12:52:38 +10:00
parent c968295acd
commit 9232b8275f
1 changed files with 4 additions and 2 deletions

View File

@ -32,7 +32,7 @@ import (
type contextKeyType uint64
const contextKey contextKeyType = 0
var contextKey interface{} = contextKeyType(0)
// Ask the Linux kernel for larger read requests.
//
@ -447,7 +447,9 @@ func (c *Connection) ReadOp() (ctx context.Context, op interface{}, err error) {
// LOCKS_EXCLUDED(c.mu)
func (c *Connection) Reply(ctx context.Context, opErr error) {
// Extract the state we stuffed in earlier.
state, ok := ctx.Value(contextKey).(opState)
var key interface{} = contextKey
foo := ctx.Value(key)
state, ok := foo.(opState)
if !ok {
panic(fmt.Sprintf("Reply called with invalid context: %#v", ctx))
}