mirror of
https://github.com/golang/go
synced 2024-11-25 05:07:56 -07:00
* delete export
* rename init functions R=ken OCL=23122 CL=23126
This commit is contained in:
parent
8f14451fe5
commit
0183baaf44
@ -329,8 +329,8 @@ bad:
|
|||||||
* a function named init is a special case.
|
* a function named init is a special case.
|
||||||
* it is called by the initialization before
|
* it is called by the initialization before
|
||||||
* main is run. to make it unique within a
|
* main is run. to make it unique within a
|
||||||
* package, the name, normally "pkg.init", is
|
* package and also uncallable, the name,
|
||||||
* altered to "pkg.<file>_init".
|
* normally "pkg.init", is altered to "pkg.init·filename".
|
||||||
*/
|
*/
|
||||||
Node*
|
Node*
|
||||||
renameinit(Node *n)
|
renameinit(Node *n)
|
||||||
@ -342,7 +342,8 @@ renameinit(Node *n)
|
|||||||
return n;
|
return n;
|
||||||
if(strcmp(s->name, "init") != 0)
|
if(strcmp(s->name, "init") != 0)
|
||||||
return n;
|
return n;
|
||||||
snprint(namebuf, sizeof(namebuf), "init_%s", filename);
|
|
||||||
|
snprint(namebuf, sizeof(namebuf), "init·%s", filename);
|
||||||
s = lookup(namebuf);
|
s = lookup(namebuf);
|
||||||
return newname(s);
|
return newname(s);
|
||||||
}
|
}
|
||||||
@ -1022,17 +1023,16 @@ mixed:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// hand-craft the following initialization code
|
// hand-craft the following initialization code
|
||||||
// var init_<file>_done bool; (1)
|
// var initdone·<file> bool (1)
|
||||||
// func init_<file>_function() (2)
|
// func Init·<file>() (2)
|
||||||
// if init_<file>_done { return } (3)
|
// if initdone·<file> { return } (3)
|
||||||
// init_<file>_done = true; (4)
|
// initdone.<file> = true; (4)
|
||||||
// // over all matching imported symbols
|
// // over all matching imported symbols
|
||||||
// <pkg>.init_<file>_function() (5)
|
// <pkg>.init·<file>() (5)
|
||||||
// { <init stmts> } (6)
|
// { <init stmts> } (6)
|
||||||
// init() // if any (7)
|
// init·<file>() // if any (7)
|
||||||
// return (8)
|
// return (8)
|
||||||
// }
|
// }
|
||||||
// export init_<file>_function (9)
|
|
||||||
|
|
||||||
void
|
void
|
||||||
fninit(Node *n)
|
fninit(Node *n)
|
||||||
@ -1045,7 +1045,7 @@ fninit(Node *n)
|
|||||||
r = N;
|
r = N;
|
||||||
|
|
||||||
// (1)
|
// (1)
|
||||||
snprint(namebuf, sizeof(namebuf), "init_%s_done", filename);
|
snprint(namebuf, sizeof(namebuf), "initdone·%s", filename);
|
||||||
done = newname(lookup(namebuf));
|
done = newname(lookup(namebuf));
|
||||||
addvar(done, types[TBOOL], PEXTERN);
|
addvar(done, types[TBOOL], PEXTERN);
|
||||||
|
|
||||||
@ -1054,12 +1054,12 @@ fninit(Node *n)
|
|||||||
maxarg = 0;
|
maxarg = 0;
|
||||||
stksize = initstksize;
|
stksize = initstksize;
|
||||||
|
|
||||||
snprint(namebuf, sizeof(namebuf), "init_%s_function", filename);
|
snprint(namebuf, sizeof(namebuf), "Init·%s", filename);
|
||||||
|
|
||||||
// this is a botch since we need a known name to
|
// this is a botch since we need a known name to
|
||||||
// call the top level init function out of rt0
|
// call the top level init function out of rt0
|
||||||
if(strcmp(package, "main") == 0)
|
if(strcmp(package, "main") == 0)
|
||||||
snprint(namebuf, sizeof(namebuf), "init_function");
|
snprint(namebuf, sizeof(namebuf), "init");
|
||||||
|
|
||||||
fn = nod(ODCLFUNC, N, N);
|
fn = nod(ODCLFUNC, N, N);
|
||||||
fn->nname = newname(lookup(namebuf));
|
fn->nname = newname(lookup(namebuf));
|
||||||
@ -1079,11 +1079,7 @@ fninit(Node *n)
|
|||||||
// (5)
|
// (5)
|
||||||
for(h=0; h<NHASH; h++)
|
for(h=0; h<NHASH; h++)
|
||||||
for(s = hash[h]; s != S; s = s->link) {
|
for(s = hash[h]; s != S; s = s->link) {
|
||||||
if(s->name[0] != 'i')
|
if(s->name[0] != 'I' || strncmp(s->name, "Init·", 6) != 0)
|
||||||
continue;
|
|
||||||
if(strstr(s->name, "init_") == nil)
|
|
||||||
continue;
|
|
||||||
if(strstr(s->name, "_function") == nil)
|
|
||||||
continue;
|
continue;
|
||||||
if(s->oname == N)
|
if(s->oname == N)
|
||||||
continue;
|
continue;
|
||||||
@ -1098,7 +1094,7 @@ fninit(Node *n)
|
|||||||
|
|
||||||
// (7)
|
// (7)
|
||||||
// could check that it is fn of no args/returns
|
// could check that it is fn of no args/returns
|
||||||
snprint(namebuf, sizeof(namebuf), "init_%s", filename);
|
snprint(namebuf, sizeof(namebuf), "init·%s", filename);
|
||||||
s = lookup(namebuf);
|
s = lookup(namebuf);
|
||||||
if(s->oname != N) {
|
if(s->oname != N) {
|
||||||
a = nod(OCALL, s->oname, N);
|
a = nod(OCALL, s->oname, N);
|
||||||
@ -1109,7 +1105,6 @@ fninit(Node *n)
|
|||||||
a = nod(ORETURN, N, N);
|
a = nod(ORETURN, N, N);
|
||||||
r = list(r, a);
|
r = list(r, a);
|
||||||
|
|
||||||
// (9)
|
|
||||||
exportsym(fn->nname->sym);
|
exportsym(fn->nname->sym);
|
||||||
|
|
||||||
fn->nbody = rev(r);
|
fn->nbody = rev(r);
|
||||||
|
@ -72,15 +72,9 @@ autoexport(Sym *s)
|
|||||||
if(dclcontext != PEXTERN)
|
if(dclcontext != PEXTERN)
|
||||||
return;
|
return;
|
||||||
if(exportname(s->name)) {
|
if(exportname(s->name)) {
|
||||||
if(dcladj != exportsym)
|
|
||||||
warn("uppercase missing export: %S", s);
|
|
||||||
exportsym(s);
|
exportsym(s);
|
||||||
} else {
|
} else {
|
||||||
if(dcladj == exportsym) {
|
packagesym(s);
|
||||||
warn("export missing uppercase: %S", s);
|
|
||||||
exportsym(s);
|
|
||||||
} else
|
|
||||||
packagesym(s);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,10 +109,6 @@ dumpexportconst(Sym *s)
|
|||||||
dumpprereq(t);
|
dumpprereq(t);
|
||||||
|
|
||||||
Bprint(bout, "\t");
|
Bprint(bout, "\t");
|
||||||
if(s->export == 1)
|
|
||||||
Bprint(bout, "export ");
|
|
||||||
else if(s->export == 2)
|
|
||||||
Bprint(bout, "package ");
|
|
||||||
Bprint(bout, "const %lS", s);
|
Bprint(bout, "const %lS", s);
|
||||||
if(t != T)
|
if(t != T)
|
||||||
Bprint(bout, " %#T", t);
|
Bprint(bout, " %#T", t);
|
||||||
@ -163,10 +153,6 @@ dumpexportvar(Sym *s)
|
|||||||
dumpprereq(t);
|
dumpprereq(t);
|
||||||
|
|
||||||
Bprint(bout, "\t");
|
Bprint(bout, "\t");
|
||||||
if(s->export == 1)
|
|
||||||
Bprint(bout, "export ");
|
|
||||||
else if(s->export == 2)
|
|
||||||
Bprint(bout, "package ");
|
|
||||||
if(t->etype == TFUNC)
|
if(t->etype == TFUNC)
|
||||||
Bprint(bout, "func ");
|
Bprint(bout, "func ");
|
||||||
else
|
else
|
||||||
@ -179,10 +165,6 @@ dumpexporttype(Sym *s)
|
|||||||
{
|
{
|
||||||
dumpprereq(s->otype);
|
dumpprereq(s->otype);
|
||||||
Bprint(bout, "\t");
|
Bprint(bout, "\t");
|
||||||
if(s->export == 1)
|
|
||||||
Bprint(bout, "export ");
|
|
||||||
else if(s->export == 2)
|
|
||||||
Bprint(bout, "package ");
|
|
||||||
switch (s->otype->etype) {
|
switch (s->otype->etype) {
|
||||||
case TFORW:
|
case TFORW:
|
||||||
case TFORWSTRUCT:
|
case TFORWSTRUCT:
|
||||||
@ -304,7 +286,7 @@ pkgsym(char *name, char *pkg, int lexical)
|
|||||||
* return the sym for ss, which should match lexical
|
* return the sym for ss, which should match lexical
|
||||||
*/
|
*/
|
||||||
Sym*
|
Sym*
|
||||||
importsym(int export, Node *ss, int lexical)
|
importsym(Node *ss, int lexical)
|
||||||
{
|
{
|
||||||
Sym *s;
|
Sym *s;
|
||||||
|
|
||||||
@ -316,11 +298,10 @@ importsym(int export, Node *ss, int lexical)
|
|||||||
s = pkgsym(ss->sym->name, ss->psym->name, lexical);
|
s = pkgsym(ss->sym->name, ss->psym->name, lexical);
|
||||||
/* TODO botch - need some diagnostic checking for the following assignment */
|
/* TODO botch - need some diagnostic checking for the following assignment */
|
||||||
s->opackage = ss->osym->name;
|
s->opackage = ss->osym->name;
|
||||||
if(export) {
|
if(exportname(ss->sym->name))
|
||||||
if(s->export != export && s->export != 0)
|
s->export = 1;
|
||||||
yyerror("export/package mismatch: %S", s);
|
else
|
||||||
s->export = export;
|
s->export = 2; // package scope
|
||||||
}
|
|
||||||
s->imported = 1;
|
s->imported = 1;
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
@ -342,7 +323,7 @@ pkgtype(char *name, char *pkg)
|
|||||||
n->psym = lookup(pkg);
|
n->psym = lookup(pkg);
|
||||||
n->osym = n->psym;
|
n->osym = n->psym;
|
||||||
renamepkg(n);
|
renamepkg(n);
|
||||||
s = importsym(0, n, LATYPE);
|
s = importsym(n, LATYPE);
|
||||||
|
|
||||||
if(s->otype == T) {
|
if(s->otype == T) {
|
||||||
t = typ(TFORW);
|
t = typ(TFORW);
|
||||||
@ -362,44 +343,39 @@ mypackage(Node *ss)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
importconst(int export, Node *ss, Type *t, Val *v)
|
importconst(Node *ss, Type *t, Val *v)
|
||||||
{
|
{
|
||||||
Node *n;
|
Node *n;
|
||||||
Sym *s;
|
Sym *s;
|
||||||
|
|
||||||
export = exportname(ss->sym->name);
|
if(!exportname(ss->sym->name) && !mypackage(ss))
|
||||||
if(export == 2 && !mypackage(ss))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
n = nod(OLITERAL, N, N);
|
n = nod(OLITERAL, N, N);
|
||||||
n->val = *v;
|
n->val = *v;
|
||||||
n->type = t;
|
n->type = t;
|
||||||
|
|
||||||
s = importsym(export, ss, LACONST);
|
s = importsym(ss, LACONST);
|
||||||
if(s->oconst != N) {
|
if(s->oconst != N) {
|
||||||
// TODO: check if already the same.
|
// TODO: check if already the same.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// fake out export vs upper checks until transition is over
|
|
||||||
if(export == 1) dcladj = exportsym;
|
|
||||||
|
|
||||||
dodclconst(newname(s), n);
|
dodclconst(newname(s), n);
|
||||||
|
|
||||||
dcladj = nil;
|
|
||||||
if(debug['e'])
|
if(debug['e'])
|
||||||
print("import const %S\n", s);
|
print("import const %S\n", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
importvar(int export, Node *ss, Type *t)
|
importvar(Node *ss, Type *t)
|
||||||
{
|
{
|
||||||
Sym *s;
|
Sym *s;
|
||||||
|
|
||||||
if(export == 2 && !mypackage(ss))
|
if(!exportname(ss->sym->name) && !mypackage(ss))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
s = importsym(export, ss, LNAME);
|
s = importsym(ss, LNAME);
|
||||||
if(s->oname != N) {
|
if(s->oname != N) {
|
||||||
if(eqtype(t, s->oname->type, 0))
|
if(eqtype(t, s->oname->type, 0))
|
||||||
return;
|
return;
|
||||||
@ -408,18 +384,17 @@ importvar(int export, Node *ss, Type *t)
|
|||||||
}
|
}
|
||||||
checkwidth(t);
|
checkwidth(t);
|
||||||
addvar(newname(s), t, PEXTERN);
|
addvar(newname(s), t, PEXTERN);
|
||||||
s->export = export;
|
|
||||||
|
|
||||||
if(debug['e'])
|
if(debug['e'])
|
||||||
print("import var %S %lT\n", s, t);
|
print("import var %S %lT\n", s, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
importtype(int export, Node *ss, Type *t)
|
importtype(Node *ss, Type *t)
|
||||||
{
|
{
|
||||||
Sym *s;
|
Sym *s;
|
||||||
|
|
||||||
s = importsym(export, ss, LATYPE);
|
s = importsym(ss, LATYPE);
|
||||||
if(s->otype != T) {
|
if(s->otype != T) {
|
||||||
if(eqtype(t, s->otype, 0))
|
if(eqtype(t, s->otype, 0))
|
||||||
return;
|
return;
|
||||||
@ -440,7 +415,7 @@ importtype(int export, Node *ss, Type *t)
|
|||||||
// This will make references in the ordinary program
|
// This will make references in the ordinary program
|
||||||
// (but not the import sections) look at s->oname,
|
// (but not the import sections) look at s->oname,
|
||||||
// which is nil, as for an undefined name.
|
// which is nil, as for an undefined name.
|
||||||
if(export == 0 || (export == 2 && !mypackage(ss)))
|
if(s->export == 2 && !mypackage(ss))
|
||||||
s->lexical = LNAME;
|
s->lexical = LNAME;
|
||||||
|
|
||||||
if(debug['e'])
|
if(debug['e'])
|
||||||
|
@ -459,7 +459,6 @@ EXTERN int tptr; // either TPTR32 or TPTR64
|
|||||||
extern char* sysimport;
|
extern char* sysimport;
|
||||||
extern char* unsafeimport;
|
extern char* unsafeimport;
|
||||||
EXTERN char* filename; // name to uniqify names
|
EXTERN char* filename; // name to uniqify names
|
||||||
EXTERN void (*dcladj)(Sym*); // declaration is being exported/packaged
|
|
||||||
|
|
||||||
EXTERN Type* types[NTYPE];
|
EXTERN Type* types[NTYPE];
|
||||||
EXTERN uchar simtype[NTYPE];
|
EXTERN uchar simtype[NTYPE];
|
||||||
@ -761,10 +760,10 @@ void doimport6(Node*, Node*);
|
|||||||
void doimport7(Node*, Node*);
|
void doimport7(Node*, Node*);
|
||||||
void doimport8(Node*, Val*, Node*);
|
void doimport8(Node*, Val*, Node*);
|
||||||
void doimport9(Sym*, Node*);
|
void doimport9(Sym*, Node*);
|
||||||
void importconst(int, Node *ss, Type *t, Val *v);
|
void importconst(Node *ss, Type *t, Val *v);
|
||||||
void importmethod(Sym *s, Type *t);
|
void importmethod(Sym *s, Type *t);
|
||||||
void importtype(int, Node *ss, Type *t);
|
void importtype(Node *ss, Type *t);
|
||||||
void importvar(int, Node *ss, Type *t);
|
void importvar(Node *ss, Type *t);
|
||||||
void checkimports(void);
|
void checkimports(void);
|
||||||
Type* pkgtype(char*, char*);
|
Type* pkgtype(char*, char*);
|
||||||
|
|
||||||
|
@ -81,7 +81,6 @@
|
|||||||
%type <node> hidden_interfacedcl
|
%type <node> hidden_interfacedcl
|
||||||
%type <node> hidden_funarg_list ohidden_funarg_list hidden_funarg_list_r
|
%type <node> hidden_funarg_list ohidden_funarg_list hidden_funarg_list_r
|
||||||
%type <node> hidden_funres ohidden_funres hidden_importsym
|
%type <node> hidden_funres ohidden_funres hidden_importsym
|
||||||
%type <lint> oexport
|
|
||||||
|
|
||||||
%left LOROR
|
%left LOROR
|
||||||
%left LANDAND
|
%left LANDAND
|
||||||
@ -191,30 +190,6 @@ xdcl:
|
|||||||
autoexport($1->nname->sym);
|
autoexport($1->nname->sym);
|
||||||
$$ = N;
|
$$ = N;
|
||||||
}
|
}
|
||||||
| LEXPORT { dcladj = exportsym; stksize = initstksize; } common_dcl
|
|
||||||
{
|
|
||||||
$$ = $3;
|
|
||||||
dcladj = 0;
|
|
||||||
initstksize = stksize;
|
|
||||||
}
|
|
||||||
| LPACKAGE { warn("package is gone"); stksize = initstksize; } common_dcl
|
|
||||||
{
|
|
||||||
$$ = $3;
|
|
||||||
initstksize = stksize;
|
|
||||||
}
|
|
||||||
| LEXPORT '(' export_list_r ')'
|
|
||||||
{
|
|
||||||
$$ = N;
|
|
||||||
}
|
|
||||||
| LEXPORT xfndcl
|
|
||||||
{
|
|
||||||
if($2 != N && $2->nname != N) {
|
|
||||||
dcladj = exportsym;
|
|
||||||
autoexport($2->nname->sym);
|
|
||||||
dcladj = nil;
|
|
||||||
}
|
|
||||||
$$ = N;
|
|
||||||
}
|
|
||||||
| LPACKAGE { warn("package is gone"); } xfndcl
|
| LPACKAGE { warn("package is gone"); } xfndcl
|
||||||
{
|
{
|
||||||
if($3 != N && $3->nname != N)
|
if($3 != N && $3->nname != N)
|
||||||
@ -1604,20 +1579,6 @@ exprsym3_list_r:
|
|||||||
$$ = nod(OLIST, $1, $3);
|
$$ = nod(OLIST, $1, $3);
|
||||||
}
|
}
|
||||||
|
|
||||||
export_list_r:
|
|
||||||
export
|
|
||||||
| export_list_r ocomma export
|
|
||||||
|
|
||||||
export:
|
|
||||||
sym
|
|
||||||
{
|
|
||||||
exportsym($1);
|
|
||||||
}
|
|
||||||
| sym '.' sym2
|
|
||||||
{
|
|
||||||
exportsym(pkglookup($3->name, $1->name));
|
|
||||||
}
|
|
||||||
|
|
||||||
import_stmt_list_r:
|
import_stmt_list_r:
|
||||||
import_stmt
|
import_stmt
|
||||||
| import_stmt_list_r osemi import_stmt
|
| import_stmt_list_r osemi import_stmt
|
||||||
@ -1768,19 +1729,6 @@ ohidden_interfacedcl_list:
|
|||||||
}
|
}
|
||||||
| hidden_interfacedcl_list
|
| hidden_interfacedcl_list
|
||||||
|
|
||||||
oexport:
|
|
||||||
{
|
|
||||||
$$ = 0;
|
|
||||||
}
|
|
||||||
| LEXPORT
|
|
||||||
{
|
|
||||||
$$ = 1;
|
|
||||||
}
|
|
||||||
| LPACKAGE
|
|
||||||
{
|
|
||||||
$$ = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
oliteral:
|
oliteral:
|
||||||
{
|
{
|
||||||
$$.ctype = CTxxx;
|
$$.ctype = CTxxx;
|
||||||
@ -1794,37 +1742,33 @@ oliteral:
|
|||||||
hidden_import:
|
hidden_import:
|
||||||
LPACKAGE sym1
|
LPACKAGE sym1
|
||||||
/* variables */
|
/* variables */
|
||||||
| oexport LVAR hidden_importsym hidden_type
|
| LVAR hidden_importsym hidden_type
|
||||||
{
|
{
|
||||||
importvar($1, $3, $4);
|
importvar($2, $3);
|
||||||
}
|
}
|
||||||
| oexport LCONST hidden_importsym '=' hidden_constant
|
| LCONST hidden_importsym '=' hidden_constant
|
||||||
{
|
{
|
||||||
importconst($1, $3, T, &$5);
|
importconst($2, T, &$4);
|
||||||
}
|
}
|
||||||
| oexport LCONST hidden_importsym hidden_type '=' hidden_constant
|
| LCONST hidden_importsym hidden_type '=' hidden_constant
|
||||||
{
|
{
|
||||||
importconst($1, $3, $4, &$6);
|
importconst($2, $3, &$5);
|
||||||
}
|
}
|
||||||
| oexport LTYPE hidden_importsym hidden_type
|
| LTYPE hidden_importsym hidden_type
|
||||||
{
|
{
|
||||||
importtype($1, $3, $4);
|
importtype($2, $3);
|
||||||
}
|
}
|
||||||
| oexport LFUNC hidden_importsym '(' ohidden_funarg_list ')' ohidden_funres
|
| LFUNC hidden_importsym '(' ohidden_funarg_list ')' ohidden_funres
|
||||||
{
|
{
|
||||||
importvar($1, $3, functype(N, $5, $7));
|
importvar($2, functype(N, $4, $6));
|
||||||
}
|
}
|
||||||
| oexport LFUNC '(' hidden_funarg_list ')' sym1 '(' ohidden_funarg_list ')' ohidden_funres
|
| LFUNC '(' hidden_funarg_list ')' sym1 '(' ohidden_funarg_list ')' ohidden_funres
|
||||||
{
|
{
|
||||||
// have to put oexport here to avoid shift/reduce
|
if($3->op != ODCLFIELD) {
|
||||||
// with non-method func. but it isn't allowed.
|
|
||||||
if($1)
|
|
||||||
yyerror("cannot export method");
|
|
||||||
if($4->op != ODCLFIELD) {
|
|
||||||
yyerror("bad receiver in method");
|
yyerror("bad receiver in method");
|
||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
importmethod($6, functype($4, $8, $10));
|
importmethod($5, functype($3, $7, $9));
|
||||||
}
|
}
|
||||||
|
|
||||||
hidden_type:
|
hidden_type:
|
||||||
|
@ -1,83 +1,83 @@
|
|||||||
char *sysimport =
|
char *sysimport =
|
||||||
"package sys\n"
|
"package sys\n"
|
||||||
"package func sys.mal (? int32) (? *any)\n"
|
"func sys.mal (? int32) (? *any)\n"
|
||||||
"package func sys.throwindex ()\n"
|
"func sys.throwindex ()\n"
|
||||||
"package func sys.throwreturn ()\n"
|
"func sys.throwreturn ()\n"
|
||||||
"package func sys.panicl (? int32)\n"
|
"func sys.panicl (? int32)\n"
|
||||||
"package func sys.printbool (? bool)\n"
|
"func sys.printbool (? bool)\n"
|
||||||
"package func sys.printfloat (? float64)\n"
|
"func sys.printfloat (? float64)\n"
|
||||||
"package func sys.printint (? int64)\n"
|
"func sys.printint (? int64)\n"
|
||||||
"package func sys.printstring (? string)\n"
|
"func sys.printstring (? string)\n"
|
||||||
"package func sys.printpointer (? *any)\n"
|
"func sys.printpointer (? *any)\n"
|
||||||
"package func sys.printinter (? any)\n"
|
"func sys.printinter (? any)\n"
|
||||||
"package func sys.printarray (? any)\n"
|
"func sys.printarray (? any)\n"
|
||||||
"package func sys.printnl ()\n"
|
"func sys.printnl ()\n"
|
||||||
"package func sys.printsp ()\n"
|
"func sys.printsp ()\n"
|
||||||
"package func sys.catstring (? string, ? string) (? string)\n"
|
"func sys.catstring (? string, ? string) (? string)\n"
|
||||||
"package func sys.cmpstring (? string, ? string) (? int)\n"
|
"func sys.cmpstring (? string, ? string) (? int)\n"
|
||||||
"package func sys.slicestring (? string, ? int, ? int) (? string)\n"
|
"func sys.slicestring (? string, ? int, ? int) (? string)\n"
|
||||||
"package func sys.indexstring (? string, ? int) (? uint8)\n"
|
"func sys.indexstring (? string, ? int) (? uint8)\n"
|
||||||
"package func sys.intstring (? int64) (? string)\n"
|
"func sys.intstring (? int64) (? string)\n"
|
||||||
"package func sys.byteastring (? *uint8, ? int) (? string)\n"
|
"func sys.byteastring (? *uint8, ? int) (? string)\n"
|
||||||
"package func sys.arraystring (? []uint8) (? string)\n"
|
"func sys.arraystring (? []uint8) (? string)\n"
|
||||||
"package func sys.ifaceT2I (sigi *uint8, sigt *uint8, elem any) (ret any)\n"
|
"func sys.ifaceT2I (sigi *uint8, sigt *uint8, elem any) (ret any)\n"
|
||||||
"package func sys.ifaceI2T (sigt *uint8, iface any) (ret any)\n"
|
"func sys.ifaceI2T (sigt *uint8, iface any) (ret any)\n"
|
||||||
"package func sys.ifaceI2T2 (sigt *uint8, iface any) (ret any, ok bool)\n"
|
"func sys.ifaceI2T2 (sigt *uint8, iface any) (ret any, ok bool)\n"
|
||||||
"package func sys.ifaceI2I (sigi *uint8, iface any) (ret any)\n"
|
"func sys.ifaceI2I (sigi *uint8, iface any) (ret any)\n"
|
||||||
"package func sys.ifaceI2I2 (sigi *uint8, iface any) (ret any, ok bool)\n"
|
"func sys.ifaceI2I2 (sigi *uint8, iface any) (ret any, ok bool)\n"
|
||||||
"package func sys.ifaceeq (i1 any, i2 any) (ret bool)\n"
|
"func sys.ifaceeq (i1 any, i2 any) (ret bool)\n"
|
||||||
"package func sys.newmap (keysize int, valsize int, keyalg int, valalg int, hint int) (hmap map[any] any)\n"
|
"func sys.newmap (keysize int, valsize int, keyalg int, valalg int, hint int) (hmap map[any] any)\n"
|
||||||
"package func sys.mapaccess1 (hmap map[any] any, key any) (val any)\n"
|
"func sys.mapaccess1 (hmap map[any] any, key any) (val any)\n"
|
||||||
"package func sys.mapaccess2 (hmap map[any] any, key any) (val any, pres bool)\n"
|
"func sys.mapaccess2 (hmap map[any] any, key any) (val any, pres bool)\n"
|
||||||
"package func sys.mapassign1 (hmap map[any] any, key any, val any)\n"
|
"func sys.mapassign1 (hmap map[any] any, key any, val any)\n"
|
||||||
"package func sys.mapassign2 (hmap map[any] any, key any, val any, pres bool)\n"
|
"func sys.mapassign2 (hmap map[any] any, key any, val any, pres bool)\n"
|
||||||
"package func sys.mapiterinit (hmap map[any] any, hiter *any)\n"
|
"func sys.mapiterinit (hmap map[any] any, hiter *any)\n"
|
||||||
"package func sys.mapiternext (hiter *any)\n"
|
"func sys.mapiternext (hiter *any)\n"
|
||||||
"package func sys.mapiter1 (hiter *any) (key any)\n"
|
"func sys.mapiter1 (hiter *any) (key any)\n"
|
||||||
"package func sys.mapiter2 (hiter *any) (key any, val any)\n"
|
"func sys.mapiter2 (hiter *any) (key any, val any)\n"
|
||||||
"package func sys.newchan (elemsize int, elemalg int, hint int) (hchan chan any)\n"
|
"func sys.newchan (elemsize int, elemalg int, hint int) (hchan chan any)\n"
|
||||||
"package func sys.chanrecv1 (hchan chan any) (elem any)\n"
|
"func sys.chanrecv1 (hchan chan any) (elem any)\n"
|
||||||
"package func sys.chanrecv2 (hchan chan any) (elem any, pres bool)\n"
|
"func sys.chanrecv2 (hchan chan any) (elem any, pres bool)\n"
|
||||||
"package func sys.chanrecv3 (hchan chan any, elem *any) (pres bool)\n"
|
"func sys.chanrecv3 (hchan chan any, elem *any) (pres bool)\n"
|
||||||
"package func sys.chansend1 (hchan chan any, elem any)\n"
|
"func sys.chansend1 (hchan chan any, elem any)\n"
|
||||||
"package func sys.chansend2 (hchan chan any, elem any) (pres bool)\n"
|
"func sys.chansend2 (hchan chan any, elem any) (pres bool)\n"
|
||||||
"package func sys.newselect (size int) (sel *uint8)\n"
|
"func sys.newselect (size int) (sel *uint8)\n"
|
||||||
"package func sys.selectsend (sel *uint8, hchan chan any, elem any) (selected bool)\n"
|
"func sys.selectsend (sel *uint8, hchan chan any, elem any) (selected bool)\n"
|
||||||
"package func sys.selectrecv (sel *uint8, hchan chan any, elem *any) (selected bool)\n"
|
"func sys.selectrecv (sel *uint8, hchan chan any, elem *any) (selected bool)\n"
|
||||||
"package func sys.selectdefault (sel *uint8) (selected bool)\n"
|
"func sys.selectdefault (sel *uint8) (selected bool)\n"
|
||||||
"package func sys.selectgo (sel *uint8)\n"
|
"func sys.selectgo (sel *uint8)\n"
|
||||||
"package func sys.newarray (nel int, cap int, width int) (ary []any)\n"
|
"func sys.newarray (nel int, cap int, width int) (ary []any)\n"
|
||||||
"package func sys.arraysliced (old []any, lb int, hb int, width int) (ary []any)\n"
|
"func sys.arraysliced (old []any, lb int, hb int, width int) (ary []any)\n"
|
||||||
"package func sys.arrayslices (old *any, nel int, lb int, hb int, width int) (ary []any)\n"
|
"func sys.arrayslices (old *any, nel int, lb int, hb int, width int) (ary []any)\n"
|
||||||
"package func sys.arrays2d (old *any, nel int) (ary []any)\n"
|
"func sys.arrays2d (old *any, nel int) (ary []any)\n"
|
||||||
"export func sys.Breakpoint ()\n"
|
"func sys.Breakpoint ()\n"
|
||||||
"export func sys.Reflect (i interface { }) (? uint64, ? string, ? bool)\n"
|
"func sys.Reflect (i interface { }) (? uint64, ? string, ? bool)\n"
|
||||||
"export func sys.Unreflect (? uint64, ? string, ? bool) (ret interface { })\n"
|
"func sys.Unreflect (? uint64, ? string, ? bool) (ret interface { })\n"
|
||||||
"export var sys.Args []string\n"
|
"var sys.Args []string\n"
|
||||||
"export var sys.Envs []string\n"
|
"var sys.Envs []string\n"
|
||||||
"export func sys.Frexp (? float64) (? float64, ? int)\n"
|
"func sys.Frexp (? float64) (? float64, ? int)\n"
|
||||||
"export func sys.Ldexp (? float64, ? int) (? float64)\n"
|
"func sys.Ldexp (? float64, ? int) (? float64)\n"
|
||||||
"export func sys.Modf (? float64) (? float64, ? float64)\n"
|
"func sys.Modf (? float64) (? float64, ? float64)\n"
|
||||||
"export func sys.IsInf (? float64, ? int) (? bool)\n"
|
"func sys.IsInf (? float64, ? int) (? bool)\n"
|
||||||
"export func sys.IsNaN (? float64) (? bool)\n"
|
"func sys.IsNaN (? float64) (? bool)\n"
|
||||||
"export func sys.Inf (? int) (? float64)\n"
|
"func sys.Inf (? int) (? float64)\n"
|
||||||
"export func sys.NaN () (? float64)\n"
|
"func sys.NaN () (? float64)\n"
|
||||||
"export func sys.Float32bits (? float32) (? uint32)\n"
|
"func sys.Float32bits (? float32) (? uint32)\n"
|
||||||
"export func sys.Float64bits (? float64) (? uint64)\n"
|
"func sys.Float64bits (? float64) (? uint64)\n"
|
||||||
"export func sys.Float32frombits (? uint32) (? float32)\n"
|
"func sys.Float32frombits (? uint32) (? float32)\n"
|
||||||
"export func sys.Float64frombits (? uint64) (? float64)\n"
|
"func sys.Float64frombits (? uint64) (? float64)\n"
|
||||||
"export func sys.Gosched ()\n"
|
"func sys.Gosched ()\n"
|
||||||
"export func sys.Goexit ()\n"
|
"func sys.Goexit ()\n"
|
||||||
"export func sys.BytesToRune (? *uint8, ? int, ? int) (? int, ? int)\n"
|
"func sys.BytesToRune (? *uint8, ? int, ? int) (? int, ? int)\n"
|
||||||
"export func sys.StringToRune (? string, ? int) (? int, ? int)\n"
|
"func sys.StringToRune (? string, ? int) (? int, ? int)\n"
|
||||||
"export func sys.Exit (? int)\n"
|
"func sys.Exit (? int)\n"
|
||||||
"export func sys.Caller (n int) (pc uint64, file string, line int, ok bool)\n"
|
"func sys.Caller (n int) (pc uint64, file string, line int, ok bool)\n"
|
||||||
"export func sys.SemAcquire (sema *int32)\n"
|
"func sys.SemAcquire (sema *int32)\n"
|
||||||
"export func sys.SemRelease (sema *int32)\n"
|
"func sys.SemRelease (sema *int32)\n"
|
||||||
"\n"
|
"\n"
|
||||||
"$$\n";
|
"$$\n";
|
||||||
char *unsafeimport =
|
char *unsafeimport =
|
||||||
"package unsafe\n"
|
"package unsafe\n"
|
||||||
"export type unsafe.pointer *any\n"
|
"type unsafe.Pointer *any\n"
|
||||||
"\n"
|
"\n"
|
||||||
"$$\n";
|
"$$\n";
|
||||||
|
@ -51,7 +51,7 @@ TEXT _rt0_amd64(SB),7,$-8
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
TEXT mainstart(SB),7,$0
|
TEXT mainstart(SB),7,$0
|
||||||
CALL main·init_function(SB)
|
CALL main·init(SB)
|
||||||
CALL initdone(SB)
|
CALL initdone(SB)
|
||||||
CALL main·main(SB)
|
CALL main·main(SB)
|
||||||
PUSHQ $0
|
PUSHQ $0
|
||||||
|
Loading…
Reference in New Issue
Block a user