Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Kirill Smelkov
go
Commits
1d31a25d
Commit
1d31a25d
authored
16 years ago
by
Ken Thompson
Browse files
Options
Download
Email Patches
Plain Diff
more coroutine
fixed a,b,c := x,x,x SVN=126250
parent
f86c6f67
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
173 additions
and
149 deletions
+173
-149
src/cmd/6g/cgen.c
src/cmd/6g/cgen.c
+6
-6
src/cmd/6g/gen.c
src/cmd/6g/gen.c
+65
-16
src/cmd/6g/gg.h
src/cmd/6g/gg.h
+4
-3
src/cmd/6g/gsubr.c
src/cmd/6g/gsubr.c
+0
-1
src/cmd/gc/go.h
src/cmd/gc/go.h
+0
-1
src/cmd/gc/sys.go
src/cmd/gc/sys.go
+0
-5
src/cmd/gc/sysimport.c
src/cmd/gc/sysimport.c
+89
-94
src/cmd/gc/walk.c
src/cmd/gc/walk.c
+3
-22
src/runtime/rt0_amd64.s
src/runtime/rt0_amd64.s
+6
-1
No files found.
src/cmd/6g/cgen.c
View file @
1d31a25d
...
...
@@ -172,17 +172,17 @@ cgen(Node *n, Node *res)
break
;
case
OCALLMETH
:
cgen_callmeth
(
n
);
cgen_callmeth
(
n
,
0
);
cgen_callret
(
n
,
res
);
break
;
case
OCALLINTER
:
cgen_callinter
(
n
,
res
);
cgen_callinter
(
n
,
res
,
0
);
cgen_callret
(
n
,
res
);
break
;
case
OCALL
:
cgen_call
(
n
);
cgen_call
(
n
,
0
);
cgen_callret
(
n
,
res
);
break
;
...
...
@@ -281,17 +281,17 @@ agen(Node *n, Node *res)
// break;
case
OCALLMETH
:
cgen_callmeth
(
n
);
cgen_callmeth
(
n
,
0
);
cgen_aret
(
n
,
res
);
break
;
case
OCALLINTER
:
cgen_callinter
(
n
,
res
);
cgen_callinter
(
n
,
res
,
0
);
cgen_aret
(
n
,
res
);
break
;
case
OCALL
:
cgen_call
(
n
);
cgen_call
(
n
,
0
);
cgen_aret
(
n
,
res
);
break
;
...
...
This diff is collapsed.
Click to expand it.
src/cmd/6g/gen.c
View file @
1d31a25d
...
...
@@ -14,6 +14,7 @@ enum
};
static
Node
*
curfn
;
static
Node
*
newproc
;
void
compile
(
Node
*
fn
)
...
...
@@ -23,6 +24,16 @@ compile(Node *fn)
Prog
*
ptxt
;
long
lno
;
if
(
newproc
==
N
)
{
newproc
=
nod
(
ONAME
,
N
,
N
);
memset
(
newproc
,
0
,
sizeof
(
*
newproc
));
newproc
->
op
=
ONAME
;
newproc
->
sym
=
pkglookup
(
"_newproc"
,
"sys"
);
newproc
->
class
=
PEXTERN
;
newproc
->
addable
=
1
;
newproc
->
ullman
=
0
;
}
if
(
fn
->
nbody
==
N
)
return
;
lno
=
setlineno
(
fn
);
...
...
@@ -298,15 +309,19 @@ loop:
break
;
case
OCALLMETH
:
cgen_callmeth
(
n
);
cgen_callmeth
(
n
,
0
);
break
;
case
OCALLINTER
:
cgen_callinter
(
n
,
N
);
cgen_callinter
(
n
,
N
,
0
);
break
;
case
OCALL
:
cgen_call
(
n
);
cgen_call
(
n
,
0
);
break
;
case
OPROC
:
cgen_proc
(
n
);
break
;
case
ORETURN
:
...
...
@@ -552,7 +567,21 @@ genpanic(void)
}
void
cgen_callinter
(
Node
*
n
,
Node
*
res
)
ginscall
(
Node
*
f
,
int
proc
)
{
Node
regax
;
if
(
proc
)
{
nodreg
(
&
regax
,
types
[
TINT64
],
D_AX
);
gins
(
ALEAQ
,
f
,
&
regax
);
gins
(
ACALL
,
N
,
newproc
);
return
;
}
gins
(
ACALL
,
N
,
f
);
}
void
cgen_callinter
(
Node
*
n
,
Node
*
res
,
int
proc
)
{
Node
*
i
,
*
f
;
Node
tmpi
,
nodo
,
nodr
,
nodsp
;
...
...
@@ -588,21 +617,19 @@ cgen_callinter(Node *n, Node *res)
nodo
.
xoffset
-=
widthptr
;
cgen
(
&
nodo
,
&
nodr
);
// REG = 0(REG) -- i.m
//print("field = %N\n", f);
//print("offset = %ld\n", n->left->xoffset);
nodo
.
xoffset
=
n
->
left
->
xoffset
+
4
*
widthptr
;
cgen
(
&
nodo
,
&
nodr
);
// REG = 32+offset(REG) -- i.m->fun[f]
gins
(
ACALL
,
N
,
&
nodr
);
regfree
(
&
nodr
);
gins
call
(
&
nodr
,
proc
);
regfree
(
&
nodr
);
regfree
(
&
nodo
);
setmaxarg
(
n
->
left
->
type
);
}
void
cgen_callmeth
(
Node
*
n
)
cgen_callmeth
(
Node
*
n
,
int
proc
)
{
Node
*
l
;
...
...
@@ -619,14 +646,14 @@ cgen_callmeth(Node *n)
if
(
n
->
left
->
op
==
ONAME
)
n
->
left
->
class
=
PEXTERN
;
cgen_call
(
n
);
cgen_call
(
n
,
proc
);
}
void
cgen_call
(
Node
*
n
)
cgen_call
(
Node
*
n
,
int
proc
)
{
Type
*
t
;
Node
nod
,
afun
;
Node
nod
,
afun
,
regax
;
if
(
n
==
N
)
return
;
...
...
@@ -652,7 +679,7 @@ cgen_call(Node *n)
if
(
n
->
left
->
ullman
>=
UINF
)
{
regalloc
(
&
nod
,
types
[
tptr
],
N
);
cgen_as
(
&
nod
,
&
afun
,
0
);
gins
(
ACALL
,
N
,
&
nod
);
gins
call
(
&
nod
,
proc
);
regfree
(
&
nod
);
goto
ret
;
}
...
...
@@ -661,19 +688,41 @@ cgen_call(Node *n)
if
(
isptr
[
n
->
left
->
type
->
etype
])
{
regalloc
(
&
nod
,
types
[
tptr
],
N
);
cgen_as
(
&
nod
,
n
->
left
,
0
);
gins
(
ACALL
,
N
,
&
nod
);
gins
call
(
&
nod
,
proc
);
regfree
(
&
nod
);
goto
ret
;
}
// call direct
n
->
left
->
method
=
1
;
gins
(
ACALL
,
N
,
n
->
left
);
gins
call
(
n
->
left
,
proc
);
ret:
;
}
void
cgen_proc
(
Node
*
n
)
{
switch
(
n
->
left
->
op
)
{
default:
fatal
(
"cgen_proc: unknown call %O"
,
n
->
left
->
op
);
case
OCALLMETH
:
cgen_callmeth
(
n
->
left
,
1
);
break
;
case
OCALLINTER
:
cgen_callinter
(
n
->
left
,
N
,
1
);
break
;
case
OCALL
:
cgen_call
(
n
->
left
,
1
);
break
;
}
}
void
cgen_callret
(
Node
*
n
,
Node
*
res
)
{
...
...
This diff is collapsed.
Click to expand it.
src/cmd/6g/gg.h
View file @
1d31a25d
...
...
@@ -113,9 +113,10 @@ void agen_inter(Node*, Node*);
void
cgen_as
(
Node
*
,
Node
*
,
int
);
void
cgen_asop
(
Node
*
);
void
cgen_ret
(
Node
*
);
void
cgen_call
(
Node
*
);
void
cgen_callmeth
(
Node
*
);
void
cgen_callinter
(
Node
*
,
Node
*
);
void
cgen_call
(
Node
*
,
int
);
void
cgen_callmeth
(
Node
*
,
int
);
void
cgen_callinter
(
Node
*
,
Node
*
,
int
);
void
cgen_proc
(
Node
*
);
void
cgen_callret
(
Node
*
,
Node
*
);
void
cgen_div
(
int
,
Node
*
,
Node
*
,
Node
*
);
void
cgen_shift
(
int
,
Node
*
,
Node
*
,
Node
*
);
...
...
This diff is collapsed.
Click to expand it.
src/cmd/6g/gsubr.c
View file @
1d31a25d
...
...
@@ -1673,7 +1673,6 @@ tempname(Node *n, Type *t)
n
->
op
=
ONAME
;
n
->
sym
=
s
;
n
->
type
=
t
;
n
->
sym
=
s
;
n
->
etype
=
t
->
etype
;
n
->
class
=
PAUTO
;
n
->
addable
=
1
;
...
...
This diff is collapsed.
Click to expand it.
src/cmd/gc/go.h
View file @
1d31a25d
...
...
@@ -581,7 +581,6 @@ Node* nodpanic(long);
Node
*
newcompat
(
Node
*
);
Node
*
stringop
(
Node
*
,
int
);
Node
*
mapop
(
Node
*
,
int
);
Node
*
procop
(
Node
*
);
Node
*
convas
(
Node
*
);
void
arrayconv
(
Type
*
,
Node
*
);
Node
*
colas
(
Node
*
,
Node
*
);
...
...
This diff is collapsed.
Click to expand it.
src/cmd/gc/sys.go
View file @
1d31a25d
...
...
@@ -44,8 +44,6 @@ func mapaccess2(hmap *map[any]any, key any) (val any, pres bool);
func
mapassign1
(
hmap
*
map
[
any
]
any
,
key
any
,
val
any
);
func
mapassign2
(
hmap
*
map
[
any
]
any
,
key
any
,
val
any
,
pres
bool
);
func
newproc
()
bool
;
// create a new coroutine; true is child
func
readfile
(
string
)
(
string
,
bool
);
// read file into string; boolean status
func
exit
(
int32
);
...
...
@@ -93,9 +91,6 @@ export
mapassign1
mapassign2
// threads/coroutines
newproc
// files
readfile
...
...
This diff is collapsed.
Click to expand it.
src/cmd/gc/sysimport.c
View file @
1d31a25d
...
...
@@ -3,10 +3,10 @@ char* sysimport =
"type sys._e002 {}
\n
"
"type sys.any 24
\n
"
"type sys._e003 *sys.any
\n
"
"type sys._o25
4
{_e25
2
sys._e003}
\n
"
"type sys._o25
7
{_e25
5
sys._e003}
\n
"
"type sys.uint32 6
\n
"
"type sys._i25
6
{_e25
3
sys.uint32}
\n
"
"type sys._e001 (sys._e002 sys._o25
4
sys._i25
6
)
\n
"
"type sys._i25
9
{_e25
6
sys.uint32}
\n
"
"type sys._e001 (sys._e002 sys._o25
7
sys._i25
9
)
\n
"
"var !sys.mal sys._e001
\n
"
"type sys._e005 {}
\n
"
"type sys._e006 {}
\n
"
...
...
@@ -16,186 +16,181 @@ char* sysimport =
"type sys._e009 {}
\n
"
"type sys._e010 {}
\n
"
"type sys.int32 5
\n
"
"type sys._i26
2
{_e26
1
sys.int32}
\n
"
"type sys._e008 (sys._e009 sys._e010 sys._i26
2
)
\n
"
"type sys._i26
5
{_e26
4
sys.int32}
\n
"
"type sys._e008 (sys._e009 sys._e010 sys._i26
5
)
\n
"
"var !sys.panicl sys._e008
\n
"
"type sys._e012 {}
\n
"
"type sys._e013 {}
\n
"
"type sys.bool 12
\n
"
"type sys._i2
6
7 {_e26
6
sys.bool}
\n
"
"type sys._e011 (sys._e012 sys._e013 sys._i2
6
7)
\n
"
"type sys._i27
0
{_e26
9
sys.bool}
\n
"
"type sys._e011 (sys._e012 sys._e013 sys._i27
0
)
\n
"
"var !sys.printbool sys._e011
\n
"
"type sys._e015 {}
\n
"
"type sys._e016 {}
\n
"
"type sys.float64 10
\n
"
"type sys._i27
2
{_e27
1
sys.float64}
\n
"
"type sys._e014 (sys._e015 sys._e016 sys._i27
2
)
\n
"
"type sys._i27
5
{_e27
4
sys.float64}
\n
"
"type sys._e014 (sys._e015 sys._e016 sys._i27
5
)
\n
"
"var !sys.printfloat sys._e014
\n
"
"type sys._e018 {}
\n
"
"type sys._e019 {}
\n
"
"type sys.int64 7
\n
"
"type sys._i2
77
{_e27
6
sys.int64}
\n
"
"type sys._e017 (sys._e018 sys._e019 sys._i2
77
)
\n
"
"type sys._i2
80
{_e27
9
sys.int64}
\n
"
"type sys._e017 (sys._e018 sys._e019 sys._i2
80
)
\n
"
"var !sys.printint sys._e017
\n
"
"type sys._e021 {}
\n
"
"type sys._e022 {}
\n
"
"type sys._e023 25
\n
"
"type sys.string *sys._e023
\n
"
"type sys._i28
2
{_e28
1
sys.string}
\n
"
"type sys._e020 (sys._e021 sys._e022 sys._i28
2
)
\n
"
"type sys._i28
5
{_e28
4
sys.string}
\n
"
"type sys._e020 (sys._e021 sys._e022 sys._i28
5
)
\n
"
"var !sys.printstring sys._e020
\n
"
"type sys._e025 {}
\n
"
"type sys._e026 {}
\n
"
"type sys.uint8 2
\n
"
"type sys._e027 *sys.uint8
\n
"
"type sys._i2
87
{_e28
6
sys._e027}
\n
"
"type sys._e024 (sys._e025 sys._e026 sys._i2
87
)
\n
"
"type sys._i2
90
{_e28
9
sys._e027}
\n
"
"type sys._e024 (sys._e025 sys._e026 sys._i2
90
)
\n
"
"var !sys.printpointer sys._e024
\n
"
"type sys._e029 {}
\n
"
"type sys._o29
4
{_e29
1
sys.string}
\n
"
"type sys._i29
6
{_e29
2
sys.string _e29
3
sys.string}
\n
"
"type sys._e028 (sys._e029 sys._o29
4
sys._i29
6
)
\n
"
"type sys._o29
7
{_e29
4
sys.string}
\n
"
"type sys._i29
9
{_e29
5
sys.string _e29
6
sys.string}
\n
"
"type sys._e028 (sys._e029 sys._o29
7
sys._i29
9
)
\n
"
"var !sys.catstring sys._e028
\n
"
"type sys._e031 {}
\n
"
"type sys._o30
4
{_e30
1
sys.int32}
\n
"
"type sys._i30
6
{_e30
2
sys.string _e30
3
sys.string}
\n
"
"type sys._e030 (sys._e031 sys._o30
4
sys._i30
6
)
\n
"
"type sys._o30
7
{_e30
4
sys.int32}
\n
"
"type sys._i30
9
{_e30
5
sys.string _e30
6
sys.string}
\n
"
"type sys._e030 (sys._e031 sys._o30
7
sys._i30
9
)
\n
"
"var !sys.cmpstring sys._e030
\n
"
"type sys._e033 {}
\n
"
"type sys._o31
5
{_e31
1
sys.string}
\n
"
"type sys._i3
17
{_e31
2
sys.string _e31
3
sys.int32 _e31
4
sys.int32}
\n
"
"type sys._e032 (sys._e033 sys._o31
5
sys._i3
17
)
\n
"
"type sys._o31
8
{_e31
4
sys.string}
\n
"
"type sys._i3
20
{_e31
5
sys.string _e31
6
sys.int32 _e31
7
sys.int32}
\n
"
"type sys._e032 (sys._e033 sys._o31
8
sys._i3
20
)
\n
"
"var !sys.slicestring sys._e032
\n
"
"type sys._e035 {}
\n
"
"type sys._o32
6
{_e32
3
sys.uint8}
\n
"
"type sys._i3
28
{_e32
4
sys.string _e32
5
sys.int32}
\n
"
"type sys._e034 (sys._e035 sys._o32
6
sys._i3
28
)
\n
"
"type sys._o32
9
{_e32
6
sys.uint8}
\n
"
"type sys._i3
31
{_e32
7
sys.string _e32
8
sys.int32}
\n
"
"type sys._e034 (sys._e035 sys._o32
9
sys._i3
31
)
\n
"
"var !sys.indexstring sys._e034
\n
"
"type sys._e037 {}
\n
"
"type sys._o33
5
{_e33
3
sys.string}
\n
"
"type sys._i3
37
{_e33
4
sys.int64}
\n
"
"type sys._e036 (sys._e037 sys._o33
5
sys._i3
37
)
\n
"
"type sys._o33
8
{_e33
6
sys.string}
\n
"
"type sys._i3
40
{_e33
7
sys.int64}
\n
"
"type sys._e036 (sys._e037 sys._o33
8
sys._i3
40
)
\n
"
"var !sys.intstring sys._e036
\n
"
"type sys._e039 {}
\n
"
"type sys._o34
4
{_e34
1
sys.string}
\n
"
"type sys._o34
7
{_e34
4
sys.string}
\n
"
"type sys._e040 *sys.uint8
\n
"
"type sys._i34
6
{_e34
2
sys._e040 _e34
3
sys.int32}
\n
"
"type sys._e038 (sys._e039 sys._o34
4
sys._i34
6
)
\n
"
"type sys._i34
9
{_e34
5
sys._e040 _e34
6
sys.int32}
\n
"
"type sys._e038 (sys._e039 sys._o34
7
sys._i34
9
)
\n
"
"var !sys.byteastring sys._e038
\n
"
"type sys._e042 {}
\n
"
"type sys._e043 <>
\n
"
"type sys._o35
5
{_e35
1
sys._e043}
\n
"
"type sys._o35
8
{_e35
4
sys._e043}
\n
"
"type sys._e044 *sys.uint8
\n
"
"type sys._e045 *sys.uint8
\n
"
"type sys._s36
2
{}
\n
"
"type sys._e046 *sys._s36
2
\n
"
"type sys._i3
57
{_e35
2
sys._e044 _e35
3
sys._e045 _e35
4
sys._e046}
\n
"
"type sys._e041 (sys._e042 sys._o35
5
sys._i3
57
)
\n
"
"type sys._s36
5
{}
\n
"
"type sys._e046 *sys._s36
5
\n
"
"type sys._i3
60
{_e35
5
sys._e044 _e35
6
sys._e045 _e35
7
sys._e046}
\n
"
"type sys._e041 (sys._e042 sys._o35
8
sys._i3
60
)
\n
"
"var !sys.mkiface sys._e041
\n
"
"type sys._e048 {}
\n
"
"type sys._o36
6
{_e36
5
sys.int32}
\n
"
"type sys._o36
9
{_e36
8
sys.int32}
\n
"
"type sys._e049 {}
\n
"
"type sys._e047 (sys._e048 sys._o36
6
sys._e049)
\n
"
"type sys._e047 (sys._e048 sys._o36
9
sys._e049)
\n
"
"var !sys.argc sys._e047
\n
"
"type sys._e051 {}
\n
"
"type sys._o37
0
{_e3
69
sys.int32}
\n
"
"type sys._o37
3
{_e3
72
sys.int32}
\n
"
"type sys._e052 {}
\n
"
"type sys._e050 (sys._e051 sys._o37
0
sys._e052)
\n
"
"type sys._e050 (sys._e051 sys._o37
3
sys._e052)
\n
"
"var !sys.envc sys._e050
\n
"
"type sys._e054 {}
\n
"
"type sys._o37
5
{_e37
3
sys.string}
\n
"
"type sys._i3
77
{_e37
4
sys.int32}
\n
"
"type sys._e053 (sys._e054 sys._o37
5
sys._i3
77
)
\n
"
"type sys._o37
8
{_e37
6
sys.string}
\n
"
"type sys._i3
80
{_e37
7
sys.int32}
\n
"
"type sys._e053 (sys._e054 sys._o37
8
sys._i3
80
)
\n
"
"var !sys.argv sys._e053
\n
"
"type sys._e056 {}
\n
"
"type sys._o38
3
{_e38
1
sys.string}
\n
"
"type sys._i38
5
{_e38
2
sys.int32}
\n
"
"type sys._e055 (sys._e056 sys._o38
3
sys._i38
5
)
\n
"
"type sys._o38
6
{_e38
4
sys.string}
\n
"
"type sys._i38
8
{_e38
5
sys.int32}
\n
"
"type sys._e055 (sys._e056 sys._o38
6
sys._i38
8
)
\n
"
"var !sys.envv sys._e055
\n
"
"type sys._e058 {}
\n
"
"type sys._o39
2
{_e3
8
9 sys.int32 _e39
0
sys.float64}
\n
"
"type sys._i39
4
{_e39
1
sys.float64}
\n
"
"type sys._e057 (sys._e058 sys._o39
2
sys._i39
4
)
\n
"
"type sys._o39
5
{_e39
2
sys.int32 _e39
3
sys.float64}
\n
"
"type sys._i39
7
{_e39
4
sys.float64}
\n
"
"type sys._e057 (sys._e058 sys._o39
5
sys._i39
7
)
\n
"
"var !sys.frexp sys._e057
\n
"
"type sys._e060 {}
\n
"
"type sys._o40
1
{_e
398
sys.float64}
\n
"
"type sys._i40
3
{_e
399
sys.int32 _e40
0
sys.float64}
\n
"
"type sys._e059 (sys._e060 sys._o40
1
sys._i40
3
)
\n
"
"type sys._o40
4
{_e
401
sys.float64}
\n
"
"type sys._i40
6
{_e
402
sys.int32 _e40
3
sys.float64}
\n
"
"type sys._e059 (sys._e060 sys._o40
4
sys._i40
6
)
\n
"
"var !sys.ldexp sys._e059
\n
"
"type sys._e062 {}
\n
"
"type sys._o41
1
{_e4
08
sys.float64 _e4
09
sys.float64}
\n
"
"type sys._i41
3
{_e41
0
sys.float64}
\n
"
"type sys._e061 (sys._e062 sys._o41
1
sys._i41
3
)
\n
"
"type sys._o41
4
{_e4
11
sys.float64 _e4
12
sys.float64}
\n
"
"type sys._i41
6
{_e41
3
sys.float64}
\n
"
"type sys._e061 (sys._e062 sys._o41
4
sys._i41
6
)
\n
"
"var !sys.modf sys._e061
\n
"
"type sys._e064 {}
\n
"
"type sys._o42
0
{_e4
17
sys.bool}
\n
"
"type sys._i42
2
{_e41
8
sys.float64 _e4
19
sys.int32}
\n
"
"type sys._e063 (sys._e064 sys._o42
0
sys._i42
2
)
\n
"
"type sys._o42
3
{_e4
20
sys.bool}
\n
"
"type sys._i42
5
{_e4
2
1 sys.float64 _e4
22
sys.int32}
\n
"
"type sys._e063 (sys._e064 sys._o42
3
sys._i42
5
)
\n
"
"var !sys.isInf sys._e063
\n
"
"type sys._e066 {}
\n
"
"type sys._o42
9
{_e4
27
sys.bool}
\n
"
"type sys._i43
1
{_e4
28
sys.float64}
\n
"
"type sys._e065 (sys._e066 sys._o42
9
sys._i43
1
)
\n
"
"type sys._o4
3
2 {_e4
30
sys.bool}
\n
"
"type sys._i43
4
{_e4
31
sys.float64}
\n
"
"type sys._e065 (sys._e066 sys._o4
3
2 sys._i43
4
)
\n
"
"var !sys.isNaN sys._e065
\n
"
"type sys._e068 {}
\n
"
"type sys._o4
37
{_e43
5
sys.float64}
\n
"
"type sys._i4
39
{_e43
6
sys.int32}
\n
"
"type sys._e067 (sys._e068 sys._o4
37
sys._i4
39
)
\n
"
"type sys._o4
40
{_e43
8
sys.float64}
\n
"
"type sys._i4
42
{_e43
9
sys.int32}
\n
"
"type sys._e067 (sys._e068 sys._o4
40
sys._i4
42
)
\n
"
"var !sys.Inf sys._e067
\n
"
"type sys._e070 {}
\n
"
"type sys._o44
4
{_e44
3
sys.float64}
\n
"
"type sys._o44
7
{_e44
6
sys.float64}
\n
"
"type sys._e071 {}
\n
"
"type sys._e069 (sys._e070 sys._o44
4
sys._e071)
\n
"
"type sys._e069 (sys._e070 sys._o44
7
sys._e071)
\n
"
"var !sys.NaN sys._e069
\n
"
"type sys._e073 {}
\n
"
"type sys._e075 [sys.any] sys.any
\n
"
"type sys._e074 *sys._e075
\n
"
"type sys._o4
47
{hmap sys._e074}
\n
"
"type sys._i4
49
{keysize sys.uint32 valsize sys.uint32 keyalg sys.uint32 valalg sys.uint32 hint sys.uint32}
\n
"
"type sys._e072 (sys._e073 sys._o4
47
sys._i4
49
)
\n
"
"type sys._o4
50
{hmap sys._e074}
\n
"
"type sys._i4
52
{keysize sys.uint32 valsize sys.uint32 keyalg sys.uint32 valalg sys.uint32 hint sys.uint32}
\n
"
"type sys._e072 (sys._e073 sys._o4
50
sys._i4
52
)
\n
"
"var !sys.newmap sys._e072
\n
"
"type sys._e077 {}
\n
"
"type sys._o4
58
{val sys.any}
\n
"
"type sys._o4
61
{val sys.any}
\n
"
"type sys._e079 [sys.any] sys.any
\n
"
"type sys._e078 *sys._e079
\n
"
"type sys._i46
0
{hmap sys._e078 key sys.any}
\n
"
"type sys._e076 (sys._e077 sys._o4
58
sys._i46
0
)
\n
"
"type sys._i46
3
{hmap sys._e078 key sys.any}
\n
"
"type sys._e076 (sys._e077 sys._o4
61
sys._i46
3
)
\n
"
"var !sys.mapaccess1 sys._e076
\n
"
"type sys._e081 {}
\n
"
"type sys._o46
6
{val sys.any pres sys.bool}
\n
"
"type sys._o46
9
{val sys.any pres sys.bool}
\n
"
"type sys._e083 [sys.any] sys.any
\n
"
"type sys._e082 *sys._e083
\n
"
"type sys._i4
68
{hmap sys._e082 key sys.any}
\n
"
"type sys._e080 (sys._e081 sys._o46
6
sys._i4
68
)
\n
"
"type sys._i4
71
{hmap sys._e082 key sys.any}
\n
"
"type sys._e080 (sys._e081 sys._o46
9
sys._i4
71
)
\n
"
"var !sys.mapaccess2 sys._e080
\n
"
"type sys._e085 {}
\n
"
"type sys._e086 {}
\n
"
"type sys._e088 [sys.any] sys.any
\n
"
"type sys._e087 *sys._e088
\n
"
"type sys._i47
5
{hmap sys._e087 key sys.any val sys.any}
\n
"
"type sys._e084 (sys._e085 sys._e086 sys._i47
5
)
\n
"
"type sys._i47
8
{hmap sys._e087 key sys.any val sys.any}
\n
"
"type sys._e084 (sys._e085 sys._e086 sys._i47
8
)
\n
"
"var !sys.mapassign1 sys._e084
\n
"
"type sys._e090 {}
\n
"
"type sys._e091 {}
\n
"
"type sys._e093 [sys.any] sys.any
\n
"
"type sys._e092 *sys._e093
\n
"
"type sys._i48
1
{hmap sys._e092 key sys.any val sys.any pres sys.bool}
\n
"
"type sys._e089 (sys._e090 sys._e091 sys._i48
1
)
\n
"
"type sys._i48
4
{hmap sys._e092 key sys.any val sys.any pres sys.bool}
\n
"
"type sys._e089 (sys._e090 sys._e091 sys._i48
4
)
\n
"
"var !sys.mapassign2 sys._e089
\n
"
"type sys._e095 {}
\n
"
"type sys._o489 {_e488 sys.bool}
\n
"
"type sys._e096 {}
\n
"
"type sys._e094 (sys._e095 sys._o489 sys._e096)
\n
"
"var !sys.newproc sys._e094
\n
"
"type sys._o494 {_e491 sys.string _e492 sys.bool}
\n
"
"type sys._i496 {_e493 sys.string}
\n
"
"type sys._e094 (sys._e095 sys._o494 sys._i496)
\n
"
"var !sys.readfile sys._e094
\n
"
"type sys._e097 {}
\n
"
"type sys._e098 {}
\n
"
"type sys._o495 {_e492 sys.string _e493 sys.bool}
\n
"
"type sys._i497 {_e494 sys.string}
\n
"
"type sys._e097 (sys._e098 sys._o495 sys._i497)
\n
"
"var !sys.readfile sys._e097
\n
"
"type sys._e100 {}
\n
"
"type sys._e101 {}
\n
"
"type sys._i502 {_e501 sys.int32}
\n
"
"type sys._e099 (sys._e100 sys._e101 sys._i502)
\n
"
"var !sys.exit sys._e099
\n
"
"type sys._i501 {_e500 sys.int32}
\n
"
"type sys._e096 (sys._e097 sys._e098 sys._i501)
\n
"
"var !sys.exit sys._e096
\n
"
"))
\n
"
;
This diff is collapsed.
Click to expand it.
src/cmd/gc/walk.c
View file @
1d31a25d
...
...
@@ -159,7 +159,7 @@ loop:
case
OPROC
:
if
(
top
!=
Etop
)
goto
nottop
;
*
n
=
*
procop
(
n
);
walktype
(
n
->
left
,
Etop
);
goto
ret
;
case
OCALLMETH
:
...
...
@@ -1594,27 +1594,6 @@ nottop:
return
N
;
}
Node
*
procop
(
Node
*
n
)
{
Node
*
r
,
*
on
;
switch
(
n
->
op
)
{
default:
fatal
(
"mapop: unknown op %E"
,
n
->
op
);
case
OPROC
:
// rewrite if(sys.newproc()) (n->left)
on
=
syslook
(
"newproc"
,
0
);
r
=
nod
(
OIF
,
N
,
N
);
r
->
ntest
=
nod
(
OCALL
,
on
,
N
);
r
->
nbody
=
n
->
left
;
dump
(
"newproc"
,
r
);
walktype
(
r
,
Etop
);
break
;
}
return
r
;
}
void
diagnamed
(
Type
*
t
)
{
...
...
@@ -1772,6 +1751,7 @@ colas(Node *nl, Node *nr)
l
=
listnext
(
&
savel
);
r
=
listnext
(
&
saver
);
}
n
=
rev
(
n
);
return
n
;
multi:
...
...
@@ -1827,6 +1807,7 @@ multi:
n
=
nod
(
OLIST
,
n
,
a
);
break
;
}
n
=
rev
(
n
);
return
n
;
badt:
...
...
This diff is collapsed.
Click to expand it.
src/runtime/rt0_amd64.s
View file @
1d31a25d
...
...
@@ -179,6 +179,12 @@ easy:
TEXT
_endmorestack
(
SB
),
7
,
$
-
8
RET
//
call
a
subroutine
in
a
new
coroutine
//
argument
list
is
on
the
stack
addr
of
fn
is
in
AX
TEXT
sys
·
_newproc
(
SB
),
7
,
$
0
JMP
AX
RET
TEXT
FLUSH
(
SB
),7,$-8
RET
...
...
@@ -186,5 +192,4 @@ TEXT getu(SB),7,$-8
MOVQ
R15
,
AX
RET
GLOBL
peruser
<>(
SB
),$64
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment