55 строки
		
	
	
	
		
			1,4 КиБ
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			55 строки
		
	
	
	
		
			1,4 КиБ
		
	
	
	
		
			Go
		
	
	
	
	
	
| package runtime
 | |
| 
 | |
| // trap is a compiler hint that this function cannot be executed. It is
 | |
| // translated into either a trap instruction or a call to abort().
 | |
| //go:export llvm.trap
 | |
| func trap()
 | |
| 
 | |
| // Builtin function panic(msg), used as a compiler intrinsic.
 | |
| func _panic(message interface{}) {
 | |
| 	printstring("panic: ")
 | |
| 	printitf(message)
 | |
| 	printnl()
 | |
| 	abort()
 | |
| }
 | |
| 
 | |
| // Cause a runtime panic, which is (currently) always a string.
 | |
| func runtimePanic(msg string) {
 | |
| 	printstring("panic: runtime error: ")
 | |
| 	println(msg)
 | |
| 	abort()
 | |
| }
 | |
| 
 | |
| // Try to recover a panicking goroutine.
 | |
| func _recover() interface{} {
 | |
| 	// Deferred functions are currently not executed during panic, so there is
 | |
| 	// no way this can return anything besides nil.
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // See emitNilCheck in compiler/asserts.go.
 | |
| // This function is a dummy function that has its first and only parameter
 | |
| // marked 'nocapture' to work around a limitation in LLVM: a regular pointer
 | |
| // comparison captures the pointer.
 | |
| func isnil(ptr *uint8) bool {
 | |
| 	return ptr == nil
 | |
| }
 | |
| 
 | |
| // Panic when trying to dereference a nil pointer.
 | |
| func nilPanic() {
 | |
| 	runtimePanic("nil pointer dereference")
 | |
| }
 | |
| 
 | |
| // Panic when trying to acces an array or slice out of bounds.
 | |
| func lookupPanic() {
 | |
| 	runtimePanic("index out of range")
 | |
| }
 | |
| 
 | |
| // Panic when trying to slice a slice out of bounds.
 | |
| func slicePanic() {
 | |
| 	runtimePanic("slice out of range")
 | |
| }
 | |
| 
 | |
| func blockingPanic() {
 | |
| 	runtimePanic("trying to do blocking operation in exported function")
 | |
| }
 | 
