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 #include <u.h> | 5 #include <u.h> |
6 #include <libc.h> | 6 #include <libc.h> |
7 #include <bio.h> | 7 #include <bio.h> |
8 | 8 |
9 #undef OAPPEND | 9 #undef OAPPEND |
10 | 10 |
(...skipping 22 matching lines...) Expand all Loading... |
33 PRIME1 = 3, | 33 PRIME1 = 3, |
34 | 34 |
35 AUNK = 100, | 35 AUNK = 100, |
36 | 36 |
37 // these values are known by runtime | 37 // these values are known by runtime |
38 AMEM = 0, | 38 AMEM = 0, |
39 ANOEQ, | 39 ANOEQ, |
40 ASTRING, | 40 ASTRING, |
41 AINTER, | 41 AINTER, |
42 ANILINTER, | 42 ANILINTER, |
43 » AMEMWORD, | 43 » ASLICE, |
| 44 » AMEM8, |
| 45 » AMEM16, |
| 46 » AMEM32, |
| 47 » AMEM64, |
| 48 » AMEM128, |
| 49 » ANOEQ8, |
| 50 » ANOEQ16, |
| 51 » ANOEQ32, |
| 52 » ANOEQ64, |
| 53 » ANOEQ128, |
44 | 54 |
45 BADWIDTH = -1000000000, | 55 BADWIDTH = -1000000000, |
46 » MAXWIDTH» = 1<<30 | 56 }; |
47 }; | 57 |
| 58 extern vlong» MAXWIDTH; |
48 | 59 |
49 /* | 60 /* |
50 * note this is the representation | 61 * note this is the representation |
51 * of the compilers string literals, | 62 * of the compilers string literals, |
52 * it is not the runtime representation | 63 * it is not the runtime representation |
53 */ | 64 */ |
54 typedef struct Strlit Strlit; | 65 typedef struct Strlit Strlit; |
55 struct Strlit | 66 struct Strlit |
56 { | 67 { |
57 int32 len; | 68 int32 len; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 typedef struct Sym Sym; | 148 typedef struct Sym Sym; |
138 typedef struct Node Node; | 149 typedef struct Node Node; |
139 typedef struct NodeList NodeList; | 150 typedef struct NodeList NodeList; |
140 typedef struct Type Type; | 151 typedef struct Type Type; |
141 typedef struct Label Label; | 152 typedef struct Label Label; |
142 | 153 |
143 struct Type | 154 struct Type |
144 { | 155 { |
145 uchar etype; | 156 uchar etype; |
146 uchar chan; | 157 uchar chan; |
147 uchar recur; // to detect loops | |
148 uchar trecur; // to detect loops | 158 uchar trecur; // to detect loops |
149 uchar printed; | 159 uchar printed; |
150 uchar embedded; // TFIELD embedded type | 160 uchar embedded; // TFIELD embedded type |
151 uchar siggen; | 161 uchar siggen; |
152 uchar funarg; | 162 uchar funarg; |
153 uchar copyany; | 163 uchar copyany; |
154 uchar local; // created in this file | 164 uchar local; // created in this file |
155 uchar deferwidth; | 165 uchar deferwidth; |
156 uchar broke; | 166 uchar broke; |
157 uchar isddd; // TFIELD is ... argument | 167 uchar isddd; // TFIELD is ... argument |
(...skipping 27 matching lines...) Expand all Loading... |
185 Strlit* note; // literal string annotation | 195 Strlit* note; // literal string annotation |
186 | 196 |
187 // TARRAY | 197 // TARRAY |
188 int32 bound; // negative is dynamic array | 198 int32 bound; // negative is dynamic array |
189 | 199 |
190 int32 maplineno; // first use of TFORW as map key | 200 int32 maplineno; // first use of TFORW as map key |
191 int32 embedlineno; // first use of TFORW as embedded type | 201 int32 embedlineno; // first use of TFORW as embedded type |
192 }; | 202 }; |
193 #define T ((Type*)0) | 203 #define T ((Type*)0) |
194 | 204 |
| 205 enum |
| 206 { |
| 207 EscUnknown, |
| 208 EscHeap, |
| 209 EscScope, |
| 210 EscNone, |
| 211 EscNever, |
| 212 }; |
| 213 |
195 struct Node | 214 struct Node |
196 { | 215 { |
197 uchar op; | 216 uchar op; |
198 uchar ullman; // sethi/ullman number | 217 uchar ullman; // sethi/ullman number |
199 uchar addable; // type of addressability - 0 is not addressable | 218 uchar addable; // type of addressability - 0 is not addressable |
200 uchar trecur; // to detect loops | 219 uchar trecur; // to detect loops |
201 uchar etype; // op for OASOP, etype for OTYPE, exclam for exp
ort | 220 uchar etype; // op for OASOP, etype for OTYPE, exclam for exp
ort |
202 uchar class; // PPARAM, PAUTO, PEXTERN, etc | 221 uchar class; // PPARAM, PAUTO, PEXTERN, etc |
203 uchar method; // OCALLMETH name | 222 uchar method; // OCALLMETH name |
204 uchar embedded; // ODCLFIELD embedded type | 223 uchar embedded; // ODCLFIELD embedded type |
205 uchar colas; // OAS resulting from := | 224 uchar colas; // OAS resulting from := |
206 uchar diag; // already printed error about this | 225 uchar diag; // already printed error about this |
207 » uchar» noescape;» // ONAME never move to heap | 226 » uchar» esc;» » // EscXXX |
208 uchar funcdepth; | 227 uchar funcdepth; |
209 uchar builtin; // built-in name, like len or close | 228 uchar builtin; // built-in name, like len or close |
210 uchar walkdef; | 229 uchar walkdef; |
211 uchar typecheck; | 230 uchar typecheck; |
212 uchar local; | 231 uchar local; |
213 uchar initorder; | 232 uchar initorder; |
214 uchar dodata; // compile literal assignment as data statement | 233 uchar dodata; // compile literal assignment as data statement |
215 uchar used; | 234 uchar used; |
216 uchar isddd; | 235 uchar isddd; |
217 uchar pun; // don't registerize variable ONAME | 236 uchar pun; // don't registerize variable ONAME |
(...skipping 30 matching lines...) Expand all Loading... |
248 NodeList* dcl; // autodcl for this func/closure | 267 NodeList* dcl; // autodcl for this func/closure |
249 | 268 |
250 // OLITERAL/OREGISTER | 269 // OLITERAL/OREGISTER |
251 Val val; | 270 Val val; |
252 | 271 |
253 // ONAME | 272 // ONAME |
254 Node* ntype; | 273 Node* ntype; |
255 Node* defn; | 274 Node* defn; |
256 Node* pack; // real package for import . names | 275 Node* pack; // real package for import . names |
257 Node* curfn; // function for local variables | 276 Node* curfn; // function for local variables |
| 277 Type* paramfld; // TFIELD for this PPARAM |
258 | 278 |
259 // ONAME func param with PHEAP | 279 // ONAME func param with PHEAP |
260 Node* heapaddr; // temp holding heap address of param | 280 Node* heapaddr; // temp holding heap address of param |
261 Node* stackparam; // OPARAM node referring to stack copy of param | 281 Node* stackparam; // OPARAM node referring to stack copy of param |
262 Node* alloc; // allocation call | 282 Node* alloc; // allocation call |
263 | 283 |
264 // ONAME closure param with PPARAMREF | 284 // ONAME closure param with PPARAMREF |
265 Node* outer; // outer PPARAMREF in nested closure | 285 Node* outer; // outer PPARAMREF in nested closure |
266 Node* closure; // ONAME/PHEAP <-> ONAME/PPARAMREF | 286 Node* closure; // ONAME/PHEAP <-> ONAME/PPARAMREF |
267 | 287 |
268 // OPACK | 288 // OPACK |
269 Pkg* pkg; | 289 Pkg* pkg; |
270 | 290 |
271 // Escape analysis. | 291 // Escape analysis. |
272 » NodeList* asrc;»» // asymmetric flow(this, src) | 292 » NodeList* escflowsrc;» // flow(this, src) |
| 293 » int» escloopdepth;» // -1: global, 0: not set, function top level:1,
increased inside function for every loop or label to mark scopes |
| 294 » int» escfloodgen;» // increased for every flood to detect loops |
273 | 295 |
274 Sym* sym; // various | 296 Sym* sym; // various |
275 int32 vargen; // unique name for OTYPE/ONAME | 297 int32 vargen; // unique name for OTYPE/ONAME |
276 int32 lineno; | 298 int32 lineno; |
277 int32 endlineno; | 299 int32 endlineno; |
278 vlong xoffset; | 300 vlong xoffset; |
279 int32 stkdelta; // offset added by stack frame compaction phase. | 301 int32 stkdelta; // offset added by stack frame compaction phase. |
280 int32 ostk; | 302 int32 ostk; |
281 int32 iota; | 303 int32 iota; |
282 }; | 304 }; |
(...skipping 15 matching lines...) Expand all Loading... |
298 SymUniq = 1<<3, | 320 SymUniq = 1<<3, |
299 SymSiggen = 1<<4, | 321 SymSiggen = 1<<4, |
300 }; | 322 }; |
301 | 323 |
302 struct Sym | 324 struct Sym |
303 { | 325 { |
304 ushort lexical; | 326 ushort lexical; |
305 uchar flags; | 327 uchar flags; |
306 uchar sym; // huffman encoding in object file | 328 uchar sym; // huffman encoding in object file |
307 Sym* link; | 329 Sym* link; |
| 330 int32 npkg; // number of imported packages with this name |
308 | 331 |
309 // saved and restored by dcopy | 332 // saved and restored by dcopy |
310 Pkg* pkg; | 333 Pkg* pkg; |
311 char* name; // variable name | 334 char* name; // variable name |
312 Node* def; // definition: ONAME OTYPE OPACK or OLITERAL | 335 Node* def; // definition: ONAME OTYPE OPACK or OLITERAL |
313 Label* label; // corresponding label (ephemeral) | 336 Label* label; // corresponding label (ephemeral) |
314 int32 block; // blocknumber to catch redeclaration | 337 int32 block; // blocknumber to catch redeclaration |
315 int32 lastlineno; // last declaration for diagnostic | 338 int32 lastlineno; // last declaration for diagnostic |
316 }; | 339 }; |
317 #define S ((Sym*)0) | 340 #define S ((Sym*)0) |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 OINDEX, OINDEXMAP, | 409 OINDEX, OINDEXMAP, |
387 OKEY, OPARAM, | 410 OKEY, OPARAM, |
388 OLEN, | 411 OLEN, |
389 OMAKE, OMAKECHAN, OMAKEMAP, OMAKESLICE, | 412 OMAKE, OMAKECHAN, OMAKEMAP, OMAKESLICE, |
390 OHMUL, ORRC, OLRC, // high-mul and rotate-carry | 413 OHMUL, ORRC, OLRC, // high-mul and rotate-carry |
391 OMUL, ODIV, OMOD, OLSH, ORSH, OAND, OANDNOT, | 414 OMUL, ODIV, OMOD, OLSH, ORSH, OAND, OANDNOT, |
392 ONEW, | 415 ONEW, |
393 ONOT, OCOM, OPLUS, OMINUS, | 416 ONOT, OCOM, OPLUS, OMINUS, |
394 OOROR, | 417 OOROR, |
395 OPANIC, OPRINT, OPRINTN, | 418 OPANIC, OPRINT, OPRINTN, |
| 419 OPAREN, |
396 OSEND, | 420 OSEND, |
397 OSLICE, OSLICEARR, OSLICESTR, | 421 OSLICE, OSLICEARR, OSLICESTR, |
398 ORECOVER, | 422 ORECOVER, |
399 ORECV, | 423 ORECV, |
400 ORUNESTR, | 424 ORUNESTR, |
401 OSELRECV, | 425 OSELRECV, |
402 OSELRECV2, | 426 OSELRECV2, |
403 OIOTA, | 427 OIOTA, |
404 OREAL, OIMAG, OCOMPLEX, | 428 OREAL, OIMAG, OCOMPLEX, |
405 | 429 |
(...skipping 20 matching lines...) Expand all Loading... |
426 OTCHAN, | 450 OTCHAN, |
427 OTMAP, | 451 OTMAP, |
428 OTSTRUCT, | 452 OTSTRUCT, |
429 OTINTER, | 453 OTINTER, |
430 OTFUNC, | 454 OTFUNC, |
431 OTARRAY, | 455 OTARRAY, |
432 OTPAREN, | 456 OTPAREN, |
433 | 457 |
434 // misc | 458 // misc |
435 ODDD, | 459 ODDD, |
| 460 ODDDARG, |
436 | 461 |
437 // for back ends | 462 // for back ends |
438 OCMP, ODEC, OEXTEND, OINC, OREGISTER, OINDREG, | 463 OCMP, ODEC, OEXTEND, OINC, OREGISTER, OINDREG, |
439 | 464 |
440 OEND, | 465 OEND, |
441 }; | 466 }; |
442 enum | 467 enum |
443 { | 468 { |
444 Txxx, // 0 | 469 Txxx, // 0 |
445 | 470 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 Etop = 1<<1, // evaluated at statement level | 550 Etop = 1<<1, // evaluated at statement level |
526 Erv = 1<<2, // evaluated in value context | 551 Erv = 1<<2, // evaluated in value context |
527 Etype = 1<<3, | 552 Etype = 1<<3, |
528 Ecall = 1<<4, // call-only expressions are ok | 553 Ecall = 1<<4, // call-only expressions are ok |
529 Efnstruct = 1<<5, // multivalue function returns are ok | 554 Efnstruct = 1<<5, // multivalue function returns are ok |
530 Eiota = 1<<6, // iota is ok | 555 Eiota = 1<<6, // iota is ok |
531 Easgn = 1<<7, // assigning to expression | 556 Easgn = 1<<7, // assigning to expression |
532 Eindir = 1<<8, // indirecting through expression | 557 Eindir = 1<<8, // indirecting through expression |
533 Eaddr = 1<<9, // taking address of expression | 558 Eaddr = 1<<9, // taking address of expression |
534 Eproc = 1<<10, // inside a go statement | 559 Eproc = 1<<10, // inside a go statement |
| 560 Ecomplit = 1<<11, // type in composite literal |
535 }; | 561 }; |
536 | 562 |
537 #define BITS 5 | 563 #define BITS 5 |
538 #define NVAR (BITS*sizeof(uint32)*8) | 564 #define NVAR (BITS*sizeof(uint32)*8) |
539 | 565 |
540 typedef struct Bits Bits; | 566 typedef struct Bits Bits; |
541 struct Bits | 567 struct Bits |
542 { | 568 { |
543 uint32 b[BITS]; | 569 uint32 b[BITS]; |
544 }; | 570 }; |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
691 | 717 |
692 EXTERN char* infile; | 718 EXTERN char* infile; |
693 EXTERN char* outfile; | 719 EXTERN char* outfile; |
694 EXTERN Biobuf* bout; | 720 EXTERN Biobuf* bout; |
695 EXTERN int nerrors; | 721 EXTERN int nerrors; |
696 EXTERN int nsavederrors; | 722 EXTERN int nsavederrors; |
697 EXTERN int nsyntaxerrors; | 723 EXTERN int nsyntaxerrors; |
698 EXTERN int safemode; | 724 EXTERN int safemode; |
699 EXTERN char namebuf[NSYMB]; | 725 EXTERN char namebuf[NSYMB]; |
700 EXTERN char lexbuf[NSYMB]; | 726 EXTERN char lexbuf[NSYMB]; |
| 727 EXTERN char litbuf[NSYMB]; |
701 EXTERN char debug[256]; | 728 EXTERN char debug[256]; |
702 EXTERN Sym* hash[NHASH]; | 729 EXTERN Sym* hash[NHASH]; |
703 EXTERN Sym* importmyname; // my name for package | 730 EXTERN Sym* importmyname; // my name for package |
704 EXTERN Pkg* localpkg; // package being compiled | 731 EXTERN Pkg* localpkg; // package being compiled |
705 EXTERN Pkg* importpkg; // package being imported | 732 EXTERN Pkg* importpkg; // package being imported |
706 EXTERN Pkg* structpkg; // package that declared struct, during import | 733 EXTERN Pkg* structpkg; // package that declared struct, during import |
707 EXTERN Pkg* builtinpkg; // fake package for builtins | 734 EXTERN Pkg* builtinpkg; // fake package for builtins |
708 EXTERN Pkg* gostringpkg; // fake pkg for Go strings | 735 EXTERN Pkg* gostringpkg; // fake pkg for Go strings |
709 EXTERN Pkg* runtimepkg; // package runtime | 736 EXTERN Pkg* runtimepkg; // package runtime |
710 EXTERN Pkg* stringpkg; // fake package for C strings | 737 EXTERN Pkg* stringpkg; // fake package for C strings |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 EXTERN Node* typesw; | 799 EXTERN Node* typesw; |
773 EXTERN Node* nblank; | 800 EXTERN Node* nblank; |
774 | 801 |
775 extern int thechar; | 802 extern int thechar; |
776 extern char* thestring; | 803 extern char* thestring; |
777 EXTERN char* hunk; | 804 EXTERN char* hunk; |
778 EXTERN int32 nhunk; | 805 EXTERN int32 nhunk; |
779 EXTERN int32 thunk; | 806 EXTERN int32 thunk; |
780 | 807 |
781 EXTERN int exporting; | 808 EXTERN int exporting; |
| 809 EXTERN int erroring; |
782 EXTERN int noargnames; | 810 EXTERN int noargnames; |
783 | 811 |
784 EXTERN int funcdepth; | 812 EXTERN int funcdepth; |
785 EXTERN int typecheckok; | 813 EXTERN int typecheckok; |
786 EXTERN int packagequotes; | 814 EXTERN int packagequotes; |
787 EXTERN int longsymnames; | 815 EXTERN int longsymnames; |
788 EXTERN int compiling_runtime; | 816 EXTERN int compiling_runtime; |
789 | 817 |
790 /* | 818 /* |
791 * y.tab.c | 819 * y.tab.c |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
892 void testdclstack(void); | 920 void testdclstack(void); |
893 Node* typedcl0(Sym *s); | 921 Node* typedcl0(Sym *s); |
894 Node* typedcl1(Node *n, Node *t, int local); | 922 Node* typedcl1(Node *n, Node *t, int local); |
895 void typedcl2(Type *pt, Type *t); | 923 void typedcl2(Type *pt, Type *t); |
896 Node* typenod(Type *t); | 924 Node* typenod(Type *t); |
897 NodeList* variter(NodeList *vl, Node *t, NodeList *el); | 925 NodeList* variter(NodeList *vl, Node *t, NodeList *el); |
898 | 926 |
899 /* | 927 /* |
900 * esc.c | 928 * esc.c |
901 */ | 929 */ |
902 void» escanalfunc(Node *func); | 930 void» escapes(void); |
903 void» escanalfinish(); | |
904 | 931 |
905 /* | 932 /* |
906 * export.c | 933 * export.c |
907 */ | 934 */ |
908 void autoexport(Node *n, int ctxt); | 935 void autoexport(Node *n, int ctxt); |
909 void dumpexport(void); | 936 void dumpexport(void); |
910 int exportname(char *s); | 937 int exportname(char *s); |
911 void exportsym(Node *n); | 938 void exportsym(Node *n); |
912 void importconst(Sym *s, Type *t, Node *n); | 939 void importconst(Sym *s, Type *t, Node *n); |
913 void importmethod(Sym *s, Type *t); | 940 void importmethod(Sym *s, Type *t); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1036 void typecheckrange(Node *n); | 1063 void typecheckrange(Node *n); |
1037 void walkrange(Node *n); | 1064 void walkrange(Node *n); |
1038 | 1065 |
1039 /* | 1066 /* |
1040 * reflect.c | 1067 * reflect.c |
1041 */ | 1068 */ |
1042 void dumptypestructs(void); | 1069 void dumptypestructs(void); |
1043 Type* methodfunc(Type *f, Type*); | 1070 Type* methodfunc(Type *f, Type*); |
1044 Node* typename(Type *t); | 1071 Node* typename(Type *t); |
1045 Sym* typesym(Type *t); | 1072 Sym* typesym(Type *t); |
| 1073 int haspointers(Type *t); |
1046 | 1074 |
1047 /* | 1075 /* |
1048 * select.c | 1076 * select.c |
1049 */ | 1077 */ |
1050 void typecheckselect(Node *sel); | 1078 void typecheckselect(Node *sel); |
1051 void walkselect(Node *sel); | 1079 void walkselect(Node *sel); |
1052 | 1080 |
1053 /* | 1081 /* |
1054 * sinit.c | 1082 * sinit.c |
1055 */ | 1083 */ |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 int implements(Type *t, Type *iface, Type **missing, Type **have, int *ptr); | 1134 int implements(Type *t, Type *iface, Type **missing, Type **have, int *ptr); |
1107 void importdot(Pkg *opkg, Node *pack); | 1135 void importdot(Pkg *opkg, Node *pack); |
1108 int is64(Type *t); | 1136 int is64(Type *t); |
1109 int isblank(Node *n); | 1137 int isblank(Node *n); |
1110 int isfixedarray(Type *t); | 1138 int isfixedarray(Type *t); |
1111 int isideal(Type *t); | 1139 int isideal(Type *t); |
1112 int isinter(Type *t); | 1140 int isinter(Type *t); |
1113 int isnil(Node *n); | 1141 int isnil(Node *n); |
1114 int isnilinter(Type *t); | 1142 int isnilinter(Type *t); |
1115 int isptrto(Type *t, int et); | 1143 int isptrto(Type *t, int et); |
1116 int isselect(Node *n); | |
1117 int isslice(Type *t); | 1144 int isslice(Type *t); |
1118 int istype(Type *t, int et); | 1145 int istype(Type *t, int et); |
1119 void linehist(char *file, int32 off, int relative); | 1146 void linehist(char *file, int32 off, int relative); |
1120 NodeList* list(NodeList *l, Node *n); | 1147 NodeList* list(NodeList *l, Node *n); |
1121 NodeList* list1(Node *n); | 1148 NodeList* list1(Node *n); |
1122 void listsort(NodeList**, int(*f)(Node*, Node*)); | 1149 void listsort(NodeList**, int(*f)(Node*, Node*)); |
1123 Node* liststmt(NodeList *l); | 1150 Node* liststmt(NodeList *l); |
1124 NodeList* listtreecopy(NodeList *l); | 1151 NodeList* listtreecopy(NodeList *l); |
1125 Sym* lookup(char *name); | 1152 Sym* lookup(char *name); |
1126 void* mal(int32 n); | 1153 void* mal(int32 n); |
(...skipping 10 matching lines...) Expand all Loading... |
1137 Node* nodnil(void); | 1164 Node* nodnil(void); |
1138 int parserline(void); | 1165 int parserline(void); |
1139 Sym* pkglookup(char *name, Pkg *pkg); | 1166 Sym* pkglookup(char *name, Pkg *pkg); |
1140 int powtwo(Node *n); | 1167 int powtwo(Node *n); |
1141 Type* ptrto(Type *t); | 1168 Type* ptrto(Type *t); |
1142 void* remal(void *p, int32 on, int32 n); | 1169 void* remal(void *p, int32 on, int32 n); |
1143 Sym* restrictlookup(char *name, Pkg *pkg); | 1170 Sym* restrictlookup(char *name, Pkg *pkg); |
1144 Node* safeexpr(Node *n, NodeList **init); | 1171 Node* safeexpr(Node *n, NodeList **init); |
1145 void saveerrors(void); | 1172 void saveerrors(void); |
1146 Node* cheapexpr(Node *n, NodeList **init); | 1173 Node* cheapexpr(Node *n, NodeList **init); |
| 1174 Node* localexpr(Node *n, Type *t, NodeList **init); |
1147 int32 setlineno(Node *n); | 1175 int32 setlineno(Node *n); |
1148 void setmaxarg(Type *t); | 1176 void setmaxarg(Type *t); |
1149 Type* shallow(Type *t); | 1177 Type* shallow(Type *t); |
1150 int simsimtype(Type *t); | 1178 int simsimtype(Type *t); |
1151 void smagic(Magic *m); | 1179 void smagic(Magic *m); |
1152 Type* sortinter(Type *t); | 1180 Type* sortinter(Type *t); |
1153 uint32 stringhash(char *p); | 1181 uint32 stringhash(char *p); |
1154 Strlit* strlit(char *s); | 1182 Strlit* strlit(char *s); |
1155 int structcount(Type *t); | 1183 int structcount(Type *t); |
1156 Type* structfirst(Iter *s, Type **nn); | 1184 Type* structfirst(Iter *s, Type **nn); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1263 Node* nodarg(Type*, int); | 1291 Node* nodarg(Type*, int); |
1264 void nopout(Prog*); | 1292 void nopout(Prog*); |
1265 void patch(Prog*, Prog*); | 1293 void patch(Prog*, Prog*); |
1266 Prog* unpatch(Prog*); | 1294 Prog* unpatch(Prog*); |
1267 void zfile(Biobuf *b, char *p, int n); | 1295 void zfile(Biobuf *b, char *p, int n); |
1268 void zhist(Biobuf *b, int line, vlong offset); | 1296 void zhist(Biobuf *b, int line, vlong offset); |
1269 void zname(Biobuf *b, Sym *s, int t); | 1297 void zname(Biobuf *b, Sym *s, int t); |
1270 void data(void); | 1298 void data(void); |
1271 void text(void); | 1299 void text(void); |
1272 | 1300 |
LEFT | RIGHT |