...
  
  
     1  
     2  
     3  
     4  
     5  package pkgbits
     6  
     7  import (
     8  	"fmt"
     9  	"runtime"
    10  	"strings"
    11  )
    12  
    13  
    14  func fmtFrames(pcs ...uintptr) []string {
    15  	res := make([]string, 0, len(pcs))
    16  	walkFrames(pcs, func(file string, line int, name string, offset uintptr) {
    17  		
    18  		name = strings.TrimPrefix(name, "cmd/compile/internal/noder.")
    19  
    20  		res = append(res, fmt.Sprintf("%s:%v: %s +0x%v", file, line, name, offset))
    21  	})
    22  	return res
    23  }
    24  
    25  type frameVisitor func(file string, line int, name string, offset uintptr)
    26  
    27  
    28  
    29  
    30  func walkFrames(pcs []uintptr, visit frameVisitor) {
    31  	if len(pcs) == 0 {
    32  		return
    33  	}
    34  
    35  	frames := runtime.CallersFrames(pcs)
    36  	for {
    37  		frame, more := frames.Next()
    38  		visit(frame.File, frame.Line, frame.Function, frame.PC-frame.Entry)
    39  		if !more {
    40  			return
    41  		}
    42  	}
    43  }
    44  
    45  
    46  
    47  
    48  type SyncMarker int
    49  
    50  
    51  
    52  const (
    53  	_ SyncMarker = iota
    54  
    55  	
    56  
    57  	
    58  	SyncEOF
    59  	SyncBool
    60  	SyncInt64
    61  	SyncUint64
    62  	SyncString
    63  	SyncValue
    64  	SyncVal
    65  	SyncRelocs
    66  	SyncReloc
    67  	SyncUseReloc
    68  
    69  	
    70  	SyncPublic
    71  	SyncPos
    72  	SyncPosBase
    73  	SyncObject
    74  	SyncObject1
    75  	SyncPkg
    76  	SyncPkgDef
    77  	SyncMethod
    78  	SyncType
    79  	SyncTypeIdx
    80  	SyncTypeParamNames
    81  	SyncSignature
    82  	SyncParams
    83  	SyncParam
    84  	SyncCodeObj
    85  	SyncSym
    86  	SyncLocalIdent
    87  	SyncSelector
    88  
    89  	
    90  	SyncPrivate
    91  
    92  	SyncFuncExt
    93  	SyncVarExt
    94  	SyncTypeExt
    95  	SyncPragma
    96  
    97  	SyncExprList
    98  	SyncExprs
    99  	SyncExpr
   100  	SyncExprType
   101  	SyncAssign
   102  	SyncOp
   103  	SyncFuncLit
   104  	SyncCompLit
   105  
   106  	SyncDecl
   107  	SyncFuncBody
   108  	SyncOpenScope
   109  	SyncCloseScope
   110  	SyncCloseAnotherScope
   111  	SyncDeclNames
   112  	SyncDeclName
   113  
   114  	SyncStmts
   115  	SyncBlockStmt
   116  	SyncIfStmt
   117  	SyncForStmt
   118  	SyncSwitchStmt
   119  	SyncRangeStmt
   120  	SyncCaseClause
   121  	SyncCommClause
   122  	SyncSelectStmt
   123  	SyncDecls
   124  	SyncLabeledStmt
   125  	SyncUseObjLocal
   126  	SyncAddLocal
   127  	SyncLinkname
   128  	SyncStmt1
   129  	SyncStmtsEnd
   130  	SyncLabel
   131  	SyncOptLabel
   132  
   133  	SyncMultiExpr
   134  	SyncRType
   135  	SyncConvRTTI
   136  )
   137  
View as plain text