LEFT | RIGHT |
1 // Copyright 2009 The Go Authors. All rights reserved. | 1 // Copyright 2009 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 /* | 5 /* |
6 * basic types | 6 * basic types |
7 */ | 7 */ |
8 typedef signed char int8; | 8 typedef signed char int8; |
9 typedef unsigned char uint8; | 9 typedef unsigned char uint8; |
10 typedef signed short int16; | 10 typedef signed short int16; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 */ | 53 */ |
54 typedef uint8 bool; | 54 typedef uint8 bool; |
55 typedef uint8 byte; | 55 typedef uint8 byte; |
56 typedef struct Func Func; | 56 typedef struct Func Func; |
57 typedef struct G G; | 57 typedef struct G G; |
58 typedef struct Gobuf Gobuf; | 58 typedef struct Gobuf Gobuf; |
59 typedef struct SudoG SudoG; | 59 typedef struct SudoG SudoG; |
60 typedef struct Mutex Mutex; | 60 typedef struct Mutex Mutex; |
61 typedef struct M M; | 61 typedef struct M M; |
62 typedef struct P P; | 62 typedef struct P P; |
| 63 typedef struct SchedT SchedT; |
63 typedef struct Note Note; | 64 typedef struct Note Note; |
64 typedef struct Slice Slice; | 65 typedef struct Slice Slice; |
65 typedef struct String String; | 66 typedef struct String String; |
66 typedef struct FuncVal FuncVal; | 67 typedef struct FuncVal FuncVal; |
67 typedef struct SigTab SigTab; | 68 typedef struct SigTab SigTab; |
68 typedef struct MCache MCache; | 69 typedef struct MCache MCache; |
69 typedef struct FixAlloc FixAlloc; | 70 typedef struct FixAlloc FixAlloc; |
70 typedef struct Iface Iface; | 71 typedef struct Iface Iface; |
71 typedef struct Itab Itab; | 72 typedef struct Itab Itab; |
72 typedef struct InterfaceType InterfaceType; | 73 typedef struct InterfaceType InterfaceType; |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 // because it is casted to uint64[]. | 242 // because it is casted to uint64[]. |
242 uint64 nhandoff; | 243 uint64 nhandoff; |
243 uint64 nhandoffcnt; | 244 uint64 nhandoffcnt; |
244 uint64 nprocyield; | 245 uint64 nprocyield; |
245 uint64 nosyield; | 246 uint64 nosyield; |
246 uint64 nsleep; | 247 uint64 nsleep; |
247 }; | 248 }; |
248 | 249 |
249 struct LibCall | 250 struct LibCall |
250 { | 251 { |
251 » void*» fn; | 252 » uintptr»fn; |
252 uintptr n; // number of parameters | 253 uintptr n; // number of parameters |
253 » void*» args;» // parameters | 254 » uintptr»args;» // parameters |
254 uintptr r1; // return values | 255 uintptr r1; // return values |
255 uintptr r2; | 256 uintptr r2; |
256 uintptr err; // error number | 257 uintptr err; // error number |
257 }; | 258 }; |
258 | 259 |
259 // describes how to handle callback | 260 // describes how to handle callback |
260 struct WinCallbackContext | 261 struct WinCallbackContext |
261 { | 262 { |
262 void* gobody; // Go function to call | 263 void* gobody; // Go function to call |
263 uintptr argsize; // callback arguments size (in bytes) | 264 uintptr argsize; // callback arguments size (in bytes) |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 | 427 |
427 byte pad[64]; | 428 byte pad[64]; |
428 }; | 429 }; |
429 | 430 |
430 enum { | 431 enum { |
431 // The max value of GOMAXPROCS. | 432 // The max value of GOMAXPROCS. |
432 // There are no fundamental restrictions on the value. | 433 // There are no fundamental restrictions on the value. |
433 MaxGomaxprocs = 1<<8, | 434 MaxGomaxprocs = 1<<8, |
434 }; | 435 }; |
435 | 436 |
| 437 struct SchedT |
| 438 { |
| 439 Mutex lock; |
| 440 |
| 441 uint64 goidgen; |
| 442 |
| 443 M* midle; // idle m's waiting for work |
| 444 int32 nmidle; // number of idle m's waiting for work |
| 445 int32 nmidlelocked; // number of locked m's waiting for work |
| 446 int32 mcount; // number of m's that have been created |
| 447 int32 maxmcount; // maximum number of m's allowed (or die) |
| 448 |
| 449 P* pidle; // idle P's |
| 450 uint32 npidle; |
| 451 uint32 nmspinning; |
| 452 |
| 453 // Global runnable queue. |
| 454 G* runqhead; |
| 455 G* runqtail; |
| 456 int32 runqsize; |
| 457 |
| 458 // Global cache of dead G's. |
| 459 Mutex gflock; |
| 460 G* gfree; |
| 461 int32 ngfree; |
| 462 |
| 463 uint32 gcwaiting; // gc is waiting to run |
| 464 int32 stopwait; |
| 465 Note stopnote; |
| 466 uint32 sysmonwait; |
| 467 Note sysmonnote; |
| 468 uint64 lastpoll; |
| 469 |
| 470 int32 profilehz; // cpu profiling rate |
| 471 }; |
| 472 |
436 // The m->locked word holds two pieces of state counting active calls to LockOST
hread/lockOSThread. | 473 // The m->locked word holds two pieces of state counting active calls to LockOST
hread/lockOSThread. |
437 // The low bit (LockExternal) is a boolean reporting whether any LockOSThread ca
ll is active. | 474 // The low bit (LockExternal) is a boolean reporting whether any LockOSThread ca
ll is active. |
438 // External locks are not recursive; a second lock is silently ignored. | 475 // External locks are not recursive; a second lock is silently ignored. |
439 // The upper bits of m->lockedcount record the nesting depth of calls to lockOST
hread | 476 // The upper bits of m->lockedcount record the nesting depth of calls to lockOST
hread |
440 // (counting up by LockInternal), popped by unlockOSThread (counting down by Loc
kInternal). | 477 // (counting up by LockInternal), popped by unlockOSThread (counting down by Loc
kInternal). |
441 // Internal locks can be recursive. For instance, a lock for cgo can occur while
the main | 478 // Internal locks can be recursive. For instance, a lock for cgo can occur while
the main |
442 // goroutine is holding the lock during the initialization phase. | 479 // goroutine is holding the lock during the initialization phase. |
443 enum | 480 enum |
444 { | 481 { |
445 LockExternal = 1, | 482 LockExternal = 1, |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 bool runtime·stopg(G*); | 668 bool runtime·stopg(G*); |
632 void runtime·restartg(G*); | 669 void runtime·restartg(G*); |
633 void runtime·gcphasework(G*); | 670 void runtime·gcphasework(G*); |
634 | 671 |
635 /* | 672 /* |
636 * deferred subroutine calls | 673 * deferred subroutine calls |
637 */ | 674 */ |
638 struct Defer | 675 struct Defer |
639 { | 676 { |
640 int32 siz; | 677 int32 siz; |
641 » bool» special;» // not part of defer frame | 678 » bool» started; |
642 uintptr argp; // where args were copied from | 679 uintptr argp; // where args were copied from |
643 uintptr pc; | 680 uintptr pc; |
644 FuncVal* fn; | 681 FuncVal* fn; |
| 682 Panic* panic; // panic that is running defer |
645 Defer* link; | 683 Defer* link; |
646 void* args[1]; // padded to actual size | |
647 }; | 684 }; |
648 | 685 |
649 // argp used in Defer structs when there is no argp. | 686 // argp used in Defer structs when there is no argp. |
650 #define NoArgs ((uintptr)-1) | 687 #define NoArgs ((uintptr)-1) |
651 | 688 |
652 /* | 689 /* |
653 * panics | 690 * panics |
654 */ | 691 */ |
655 struct Panic | 692 struct Panic |
656 { | 693 { |
657 void* argp; // pointer to arguments of deferred call run during pani
c; cannot move - known to liblink | 694 void* argp; // pointer to arguments of deferred call run during pani
c; cannot move - known to liblink |
658 Eface arg; // argument to panic | 695 Eface arg; // argument to panic |
659 Panic* link; // link to earlier panic | 696 Panic* link; // link to earlier panic |
660 Defer* defer; // current executing defer | |
661 bool recovered; // whether this panic is over | 697 bool recovered; // whether this panic is over |
662 bool aborted; // the panic was aborted | 698 bool aborted; // the panic was aborted |
663 }; | 699 }; |
664 | 700 |
665 /* | 701 /* |
666 * stack traces | 702 * stack traces |
667 */ | 703 */ |
668 typedef struct Stkframe Stkframe; | 704 typedef struct Stkframe Stkframe; |
| 705 typedef struct BitVector BitVector; |
669 struct Stkframe | 706 struct Stkframe |
670 { | 707 { |
671 Func* fn; // function being run | 708 Func* fn; // function being run |
672 uintptr pc; // program counter within fn | 709 uintptr pc; // program counter within fn |
673 uintptr continpc; // program counter where execution can continue,
or 0 if not | 710 uintptr continpc; // program counter where execution can continue,
or 0 if not |
674 uintptr lr; // program counter at caller aka link register | 711 uintptr lr; // program counter at caller aka link register |
675 uintptr sp; // stack pointer at pc | 712 uintptr sp; // stack pointer at pc |
676 uintptr fp; // stack pointer at caller aka frame pointer | 713 uintptr fp; // stack pointer at caller aka frame pointer |
677 uintptr varp; // top of local variables | 714 uintptr varp; // top of local variables |
678 uintptr argp; // pointer to function arguments | 715 uintptr argp; // pointer to function arguments |
679 uintptr arglen; // number of bytes at argp | 716 uintptr arglen; // number of bytes at argp |
| 717 BitVector* argmap; // force use of this argmap |
680 }; | 718 }; |
681 | 719 |
682 intgo runtime·gentraceback(uintptr, uintptr, uintptr, G*, intgo, uintptr*, int
go, bool(**)(Stkframe*, void*), void*, bool); | 720 intgo runtime·gentraceback(uintptr, uintptr, uintptr, G*, intgo, uintptr*, int
go, bool(**)(Stkframe*, void*), void*, bool); |
| 721 void runtime·tracebackdefers(G*, bool(**)(Stkframe*, void*), void*); |
683 void runtime·traceback(uintptr pc, uintptr sp, uintptr lr, G* gp); | 722 void runtime·traceback(uintptr pc, uintptr sp, uintptr lr, G* gp); |
684 void runtime·tracebackothers(G*); | 723 void runtime·tracebackothers(G*); |
685 bool runtime·haszeroargs(uintptr pc); | 724 bool runtime·haszeroargs(uintptr pc); |
686 bool runtime·topofstack(Func*); | 725 bool runtime·topofstack(Func*); |
687 enum | 726 enum |
688 { | 727 { |
689 // The maximum number of frames we print for a traceback | 728 // The maximum number of frames we print for a traceback |
690 TracebackMaxFrames = 100, | 729 TracebackMaxFrames = 100, |
691 }; | 730 }; |
692 | 731 |
693 /* | 732 /* |
694 * external data | 733 * external data |
695 */ | 734 */ |
696 extern String runtime·emptystring; | 735 extern String runtime·emptystring; |
697 extern uintptr runtime·zerobase; | |
698 extern G** runtime·allg; | 736 extern G** runtime·allg; |
699 extern Slice runtime·allgs; // []*G | 737 extern Slice runtime·allgs; // []*G |
700 extern uintptr runtime·allglen; | 738 extern uintptr runtime·allglen; |
701 extern G* runtime·lastg; | 739 extern G* runtime·lastg; |
702 extern M* runtime·allm; | 740 extern M* runtime·allm; |
703 extern P* runtime·allp[MaxGomaxprocs+1]; | 741 extern P* runtime·allp[MaxGomaxprocs+1]; |
704 extern int32 runtime·gomaxprocs; | 742 extern int32 runtime·gomaxprocs; |
705 extern uint32 runtime·needextram; | 743 extern uint32 runtime·needextram; |
706 extern uint32 runtime·panicking; | 744 extern uint32 runtime·panicking; |
707 extern int8* runtime·goos; | 745 extern int8* runtime·goos; |
708 extern int32 runtime·ncpu; | 746 extern int32 runtime·ncpu; |
709 extern bool runtime·iscgo; | 747 extern bool runtime·iscgo; |
710 extern void (*runtime·sysargs)(int32, uint8**); | 748 extern void (*runtime·sysargs)(int32, uint8**); |
711 extern uintptr runtime·maxstring; | 749 extern uintptr runtime·maxstring; |
712 extern uint32 runtime·cpuid_ecx; | 750 extern uint32 runtime·cpuid_ecx; |
713 extern uint32 runtime·cpuid_edx; | 751 extern uint32 runtime·cpuid_edx; |
714 extern DebugVars runtime·debug; | 752 extern DebugVars runtime·debug; |
715 extern uintptr runtime·maxstacksize; | 753 extern uintptr runtime·maxstacksize; |
716 extern Note runtime·signote; | 754 extern Note runtime·signote; |
717 extern ForceGCState runtime·forcegc; | 755 extern ForceGCState runtime·forcegc; |
| 756 extern SchedT runtime·sched; |
| 757 extern int32 runtime·newprocs; |
718 | 758 |
719 /* | 759 /* |
720 * common functions and data | 760 * common functions and data |
721 */ | 761 */ |
722 int32 runtime·strcmp(byte*, byte*); | 762 int32 runtime·strcmp(byte*, byte*); |
723 int32 runtime·strncmp(byte*, byte*, uintptr); | 763 int32 runtime·strncmp(byte*, byte*, uintptr); |
724 byte* runtime·strstr(byte*, byte*); | 764 byte* runtime·strstr(byte*, byte*); |
725 intgo runtime·findnull(byte*); | 765 intgo runtime·findnull(byte*); |
726 intgo runtime·findnullw(uint16*); | 766 intgo runtime·findnullw(uint16*); |
727 void runtime·dump(byte*, int32); | 767 void runtime·dump(byte*, int32); |
(...skipping 29 matching lines...) Expand all Loading... |
757 | 797 |
758 void runtime·gogo(Gobuf*); | 798 void runtime·gogo(Gobuf*); |
759 void runtime·gostartcall(Gobuf*, void(*)(void), void*); | 799 void runtime·gostartcall(Gobuf*, void(*)(void), void*); |
760 void runtime·gostartcallfn(Gobuf*, FuncVal*); | 800 void runtime·gostartcallfn(Gobuf*, FuncVal*); |
761 void runtime·gosave(Gobuf*); | 801 void runtime·gosave(Gobuf*); |
762 void runtime·goargs(void); | 802 void runtime·goargs(void); |
763 void runtime·goenvs(void); | 803 void runtime·goenvs(void); |
764 void runtime·goenvs_unix(void); | 804 void runtime·goenvs_unix(void); |
765 void* runtime·getu(void); | 805 void* runtime·getu(void); |
766 void runtime·throw(int8*); | 806 void runtime·throw(int8*); |
767 void runtime·panicstring(int8*); | |
768 bool runtime·canpanic(G*); | 807 bool runtime·canpanic(G*); |
769 void runtime·prints(int8*); | 808 void runtime·prints(int8*); |
770 void runtime·printf(int8*, ...); | 809 void runtime·printf(int8*, ...); |
771 void runtime·snprintf(byte*, int32, int8*, ...); | 810 void runtime·snprintf(byte*, int32, int8*, ...); |
772 byte* runtime·mchr(byte*, byte, byte*); | 811 byte* runtime·mchr(byte*, byte, byte*); |
773 int32 runtime·mcmp(byte*, byte*, uintptr); | 812 int32 runtime·mcmp(byte*, byte*, uintptr); |
774 void runtime·memmove(void*, void*, uintptr); | 813 void runtime·memmove(void*, void*, uintptr); |
775 String runtime·catstring(String, String); | 814 String runtime·catstring(String, String); |
776 String runtime·gostring(byte*); | 815 String runtime·gostring(byte*); |
| 816 Slice runtime·makeStringSlice(intgo); |
777 String runtime·gostringn(byte*, intgo); | 817 String runtime·gostringn(byte*, intgo); |
778 Slice runtime·gobytes(byte*, intgo); | 818 Slice runtime·gobytes(byte*, intgo); |
779 String runtime·gostringnocopy(byte*); | 819 String runtime·gostringnocopy(byte*); |
780 String runtime·gostringw(uint16*); | 820 String runtime·gostringw(uint16*); |
781 void runtime·initsig(void); | 821 void runtime·initsig(void); |
782 void runtime·sigenable(uint32 sig); | 822 void runtime·sigenable(uint32 sig); |
783 void runtime·sigdisable(uint32 sig); | 823 void runtime·sigdisable(uint32 sig); |
784 int32 runtime·gotraceback(bool *crash); | 824 int32 runtime·gotraceback(bool *crash); |
785 void runtime·goroutineheader(G*); | 825 void runtime·goroutineheader(G*); |
786 int32 runtime·open(int8*, int32, int32); | 826 int32 runtime·open(int8*, int32, int32); |
(...skipping 10 matching lines...) Expand all Loading... |
797 void runtime·mstart(void); | 837 void runtime·mstart(void); |
798 G* runtime·malg(int32); | 838 G* runtime·malg(int32); |
799 void runtime·asminit(void); | 839 void runtime·asminit(void); |
800 void runtime·mpreinit(M*); | 840 void runtime·mpreinit(M*); |
801 void runtime·minit(void); | 841 void runtime·minit(void); |
802 void runtime·unminit(void); | 842 void runtime·unminit(void); |
803 void runtime·signalstack(byte*, int32); | 843 void runtime·signalstack(byte*, int32); |
804 void runtime·symtabinit(void); | 844 void runtime·symtabinit(void); |
805 Func* runtime·findfunc(uintptr); | 845 Func* runtime·findfunc(uintptr); |
806 int32 runtime·funcline(Func*, uintptr, String*); | 846 int32 runtime·funcline(Func*, uintptr, String*); |
807 int32 runtime·funcarglen(Func*, uintptr); | |
808 int32 runtime·funcspdelta(Func*, uintptr); | 847 int32 runtime·funcspdelta(Func*, uintptr); |
809 int8* runtime·funcname(Func*); | 848 int8* runtime·funcname(Func*); |
810 int32 runtime·pcdatavalue(Func*, int32, uintptr); | 849 int32 runtime·pcdatavalue(Func*, int32, uintptr); |
811 void runtime·stackinit(void); | 850 void runtime·stackinit(void); |
812 Stack runtime·stackalloc(uint32); | 851 Stack runtime·stackalloc(uint32); |
813 void runtime·stackfree(Stack); | 852 void runtime·stackfree(Stack); |
814 void runtime·shrinkstack(G*); | 853 void runtime·shrinkstack(G*); |
815 MCache* runtime·allocmcache(void); | 854 MCache* runtime·allocmcache(void); |
816 void runtime·freemcache(MCache*); | 855 void runtime·freemcache(MCache*); |
817 void runtime·mallocinit(void); | 856 void runtime·mallocinit(void); |
818 void runtime·gcinit(void); | 857 void runtime·gcinit(void); |
819 void* runtime·mallocgc(uintptr size, Type* typ, uint32 flag); | 858 void* runtime·mallocgc(uintptr size, Type* typ, uint32 flag); |
820 void runtime·runpanic(Panic*); | 859 void runtime·runpanic(Panic*); |
821 uintptr runtime·getcallersp(void*); | 860 uintptr runtime·getcallersp(void*); |
822 int32 runtime·mcount(void); | 861 int32 runtime·mcount(void); |
823 int32 runtime·gcount(void); | 862 int32 runtime·gcount(void); |
824 void runtime·mcall(void(**)(G*)); | 863 void runtime·mcall(void(**)(G*)); |
825 void runtime·onM(void(**)(void)); | 864 void runtime·onM(void(**)(void)); |
| 865 void runtime·onMsignal(void(**)(void)); |
826 uint32 runtime·fastrand1(void); | 866 uint32 runtime·fastrand1(void); |
827 void runtime·rewindmorestack(Gobuf*); | 867 void runtime·rewindmorestack(Gobuf*); |
828 int32 runtime·timediv(int64, int32, int32*); | 868 int32 runtime·timediv(int64, int32, int32*); |
829 int32 runtime·round2(int32 x); // round x up to a power of 2. | 869 int32 runtime·round2(int32 x); // round x up to a power of 2. |
830 | 870 |
831 // atomic operations | 871 // atomic operations |
832 bool runtime·cas(uint32*, uint32, uint32); | 872 bool runtime·cas(uint32*, uint32, uint32); |
833 bool runtime·cas64(uint64*, uint64, uint64); | 873 bool runtime·cas64(uint64*, uint64, uint64); |
834 bool runtime·casp(void**, void*, void*); | 874 bool runtime·casp(void**, void*, void*); |
835 // Don't confuse with XADD x86 instruction, | 875 // Don't confuse with XADD x86 instruction, |
836 // this one is actually 'addx', that is, add-and-fetch. | 876 // this one is actually 'addx', that is, add-and-fetch. |
837 uint32 runtime·xadd(uint32 volatile*, int32); | 877 uint32 runtime·xadd(uint32 volatile*, int32); |
838 uint64 runtime·xadd64(uint64 volatile*, int64); | 878 uint64 runtime·xadd64(uint64 volatile*, int64); |
839 uint32 runtime·xchg(uint32 volatile*, uint32); | 879 uint32 runtime·xchg(uint32 volatile*, uint32); |
840 uint64 runtime·xchg64(uint64 volatile*, uint64); | 880 uint64 runtime·xchg64(uint64 volatile*, uint64); |
841 void* runtime·xchgp(void* volatile*, void*); | 881 void* runtime·xchgp(void* volatile*, void*); |
842 uint32 runtime·atomicload(uint32 volatile*); | 882 uint32 runtime·atomicload(uint32 volatile*); |
843 void runtime·atomicstore(uint32 volatile*, uint32); | 883 void runtime·atomicstore(uint32 volatile*, uint32); |
844 void runtime·atomicstore64(uint64 volatile*, uint64); | 884 void runtime·atomicstore64(uint64 volatile*, uint64); |
845 uint64 runtime·atomicload64(uint64 volatile*); | 885 uint64 runtime·atomicload64(uint64 volatile*); |
846 void* runtime·atomicloadp(void* volatile*); | 886 void* runtime·atomicloadp(void* volatile*); |
847 void runtime·atomicstorep(void* volatile*, void*); | 887 void runtime·atomicstorep(void* volatile*, void*); |
848 void runtime·atomicor8(byte volatile*, byte); | 888 void runtime·atomicor8(byte volatile*, byte); |
849 | 889 |
850 void runtime·setg(G*); | 890 void runtime·setg(G*); |
851 void runtime·newextram(void); | 891 void runtime·newextram(void); |
852 void runtime·exit(int32); | 892 void runtime·exit(int32); |
853 void runtime·breakpoint(void); | 893 void runtime·breakpoint(void); |
854 void runtime·gosched(void); | |
855 void runtime·gosched_m(G*); | 894 void runtime·gosched_m(G*); |
856 void runtime·schedtrace(bool); | 895 void runtime·schedtrace(bool); |
857 void runtime·park(bool(*)(G*, void*), void*, String); | 896 void runtime·park(bool(*)(G*, void*), void*, String); |
858 void runtime·parkunlock(Mutex*, String); | 897 void runtime·parkunlock(Mutex*, String); |
859 void runtime·tsleep(int64, String); | 898 void runtime·tsleep(int64, String); |
860 M* runtime·newm(void); | 899 M* runtime·newm(void); |
861 void runtime·goexit(void); | 900 void runtime·goexit(void); |
862 void runtime·asmcgocall(void (*fn)(void*), void*); | 901 void runtime·asmcgocall(void (*fn)(void*), void*); |
863 int32 runtime·asmcgocall_errno(void (*fn)(void*), void*); | 902 int32 runtime·asmcgocall_errno(void (*fn)(void*), void*); |
864 void runtime·entersyscall(void); | 903 void runtime·entersyscall(void); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1017 void runtime·gopanic(Eface); | 1056 void runtime·gopanic(Eface); |
1018 void runtime·panicindex(void); | 1057 void runtime·panicindex(void); |
1019 void runtime·panicslice(void); | 1058 void runtime·panicslice(void); |
1020 void runtime·panicdivide(void); | 1059 void runtime·panicdivide(void); |
1021 | 1060 |
1022 /* | 1061 /* |
1023 * runtime c-called (but written in Go) | 1062 * runtime c-called (but written in Go) |
1024 */ | 1063 */ |
1025 void runtime·printany(Eface); | 1064 void runtime·printany(Eface); |
1026 void runtime·newTypeAssertionError(String*, String*, String*, String*, Eface*
); | 1065 void runtime·newTypeAssertionError(String*, String*, String*, String*, Eface*
); |
1027 void runtime·newErrorString(String, Eface*); | |
1028 void runtime·newErrorCString(int8*, Eface*); | |
1029 void runtime·fadd64c(uint64, uint64, uint64*); | 1066 void runtime·fadd64c(uint64, uint64, uint64*); |
1030 void runtime·fsub64c(uint64, uint64, uint64*); | 1067 void runtime·fsub64c(uint64, uint64, uint64*); |
1031 void runtime·fmul64c(uint64, uint64, uint64*); | 1068 void runtime·fmul64c(uint64, uint64, uint64*); |
1032 void runtime·fdiv64c(uint64, uint64, uint64*); | 1069 void runtime·fdiv64c(uint64, uint64, uint64*); |
1033 void runtime·fneg64c(uint64, uint64*); | 1070 void runtime·fneg64c(uint64, uint64*); |
1034 void runtime·f32to64c(uint32, uint64*); | 1071 void runtime·f32to64c(uint32, uint64*); |
1035 void runtime·f64to32c(uint64, uint32*); | 1072 void runtime·f64to32c(uint64, uint32*); |
1036 void runtime·fcmp64c(uint64, uint64, int32*, bool*); | 1073 void runtime·fcmp64c(uint64, uint64, int32*, bool*); |
1037 void runtime·fintto64c(int64, uint64*); | 1074 void runtime·fintto64c(int64, uint64*); |
1038 void runtime·f64tointc(uint64, int64*, bool*); | 1075 void runtime·f64tointc(uint64, int64*, bool*); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1072 extern float64 runtime·neginf; | 1109 extern float64 runtime·neginf; |
1073 extern uint64 ·nan; | 1110 extern uint64 ·nan; |
1074 extern uint64 ·posinf; | 1111 extern uint64 ·posinf; |
1075 extern uint64 ·neginf; | 1112 extern uint64 ·neginf; |
1076 #define ISNAN(f) ((f) != (f)) | 1113 #define ISNAN(f) ((f) != (f)) |
1077 | 1114 |
1078 enum | 1115 enum |
1079 { | 1116 { |
1080 UseSpanType = 1, | 1117 UseSpanType = 1, |
1081 }; | 1118 }; |
LEFT | RIGHT |