58 lines · 1.3 KB · C
RawDownload
// Copyright 2012 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file. #include "runtime.h" extern void gothrow(String) __attribute__((noreturn));extern void gothrow(String) __asm__(GOSYM_PREFIX "runtime.throw"); voidruntime_throw(const char *s){	gothrow(runtime_gostringnocopy((const byte *)s));} voidruntime_panicstring(const char *s){	G *gp;	Eface err; 	gp = runtime_g();	if (gp == nil) {		runtime_printf("panic: %s\n", s);		runtime_throw("panic with no g");	}	if (gp->m == nil) {		runtime_printf("panic: %s\n", s);		runtime_throw("panic with no m");	}	if (gp->m->curg != gp) {		runtime_printf("panic: %s\n", s);		runtime_throw("panic on system stack");	}	if (gp->m->mallocing != 0) {		runtime_printf("panic: %s\n", s);		runtime_throw("panic during malloc");	}	if (gp->m->preemptoff.len != 0) {		runtime_printf("panic: %s\n", s);		runtime_printf("preempt off reason: %S\n", gp->m->preemptoff);		runtime_throw("panic during preemptoff");	}	if (gp->m->locks != 0) {		runtime_printf("panic: %s\n", s);		runtime_throw("panic holding locks");	}	runtime_newErrorCString((uintptr) s, &err);	runtime_panic(err);} extern void runtime_abort(void) __asm__(GOSYM_PREFIX "runtime.abort"); voidruntime_abort(){	abort();}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t