Home | History | Annotate | Download | only in runtime
      1 // Copyright 2014 The Go Authors.  All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // +build 386 arm nacl
      6 
      7 package runtime
      8 
      9 import "unsafe"
     10 
     11 // On 32-bit systems, the stored uint64 has a 32-bit pointer and 32-bit count.
     12 
     13 func lfstackPack(node *lfnode, cnt uintptr) uint64 {
     14 	return uint64(uintptr(unsafe.Pointer(node)))<<32 | uint64(cnt)
     15 }
     16 
     17 func lfstackUnpack(val uint64) (node *lfnode, cnt uintptr) {
     18 	node = (*lfnode)(unsafe.Pointer(uintptr(val >> 32)))
     19 	cnt = uintptr(val)
     20 	return
     21 }
     22