Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
go
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
go
Commits
3856e45e
Commit
3856e45e
authored
Jul 12, 2008
by
Ken Thompson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more on channels
arg space magic number for morestack SVN=126936
parent
2da9783e
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
271 additions
and
115 deletions
+271
-115
src/cmd/6g/gen.c
src/cmd/6g/gen.c
+9
-2
src/cmd/6g/list.c
src/cmd/6g/list.c
+20
-4
src/cmd/gc/export.c
src/cmd/gc/export.c
+32
-0
src/cmd/gc/go.h
src/cmd/gc/go.h
+5
-3
src/cmd/gc/go.y
src/cmd/gc/go.y
+13
-0
src/cmd/gc/subr.c
src/cmd/gc/subr.c
+1
-0
src/cmd/gc/sys.go
src/cmd/gc/sys.go
+6
-1
src/cmd/gc/sysimport.c
src/cmd/gc/sysimport.c
+112
-105
src/cmd/gc/walk.c
src/cmd/gc/walk.c
+73
-0
No files found.
src/cmd/6g/gen.c
View file @
3856e45e
...
...
@@ -22,7 +22,7 @@ compile(Node *fn)
Plist
*
pl
;
Node
nod1
;
Prog
*
ptxt
;
long
lno
;
long
lno
,
argsiz
;
if
(
newproc
==
N
)
{
newproc
=
nod
(
ONAME
,
N
,
N
);
...
...
@@ -69,8 +69,15 @@ if(newproc == N) {
pc
->
as
=
ARET
;
// overwrite AEND
pc
->
lineno
=
lineno
;
// fill in argument size
argsiz
=
getthisx
(
curfn
->
type
)
->
width
;
argsiz
+=
getinargx
(
curfn
->
type
)
->
width
;
argsiz
+=
getoutargx
(
curfn
->
type
)
->
width
;
ptxt
->
to
.
offset
=
rnd
(
argsiz
,
maxround
);
// fill in final stack size
ptxt
->
to
.
offset
=
rnd
(
stksize
+
maxarg
,
maxround
);
ptxt
->
to
.
offset
<<=
32
;
ptxt
->
to
.
offset
|=
rnd
(
stksize
+
maxarg
,
maxround
);
if
(
debug
[
'f'
])
frame
(
0
);
...
...
src/cmd/6g/list.c
View file @
3856e45e
...
...
@@ -50,14 +50,23 @@ Pconv(Fmt *fp)
p
=
va_arg
(
fp
->
args
,
Prog
*
);
sconsize
=
8
;
if
(
p
->
as
==
ADATA
)
{
switch
(
p
->
as
)
{
default:
snprint
(
str
,
sizeof
(
str
),
"%.4ld (%4ld) %-7A %D,%D"
,
p
->
loc
,
p
->
lineno
,
p
->
as
,
&
p
->
from
,
&
p
->
to
);
break
;
case
ADATA
:
sconsize
=
p
->
from
.
scale
;
snprint
(
str
,
sizeof
(
str
),
"%.4ld (%4ld) %-7A %D/%d,%D"
,
p
->
loc
,
p
->
lineno
,
p
->
as
,
&
p
->
from
,
sconsize
,
&
p
->
to
);
return
fmtstrcpy
(
fp
,
str
);
break
;
case
ATEXT
:
snprint
(
str
,
sizeof
(
str
),
"%.4ld (%4ld) %-7A %D,%lD"
,
p
->
loc
,
p
->
lineno
,
p
->
as
,
&
p
->
from
,
&
p
->
to
);
break
;
}
snprint
(
str
,
sizeof
(
str
),
"%.4ld (%4ld) %-7A %D,%D"
,
p
->
loc
,
p
->
lineno
,
p
->
as
,
&
p
->
from
,
&
p
->
to
);
return
fmtstrcpy
(
fp
,
str
);
}
...
...
@@ -67,6 +76,7 @@ Dconv(Fmt *fp)
char
str
[
40
],
s
[
20
];
Addr
*
a
;
int
i
;
ulong
d1
,
d2
;
a
=
va_arg
(
fp
->
args
,
Addr
*
);
i
=
a
->
type
;
...
...
@@ -111,6 +121,12 @@ Dconv(Fmt *fp)
break
;
case
D_CONST
:
if
(
fp
->
flags
&
FmtLong
)
{
d1
=
a
->
offset
&
0xffffffffLL
;
d2
=
(
a
->
offset
>>
32
)
&
0xffffffffLL
;
sprint
(
str
,
"$%lud-%lud"
,
d1
,
d2
);
break
;
}
sprint
(
str
,
"$%lld"
,
a
->
offset
);
break
;
...
...
src/cmd/gc/export.c
View file @
3856e45e
...
...
@@ -233,6 +233,16 @@ dumpexporttype(Sym *s)
Bprint
(
bout
,
"!"
);
Bprint
(
bout
,
"%lS [%lS] %lS
\n
"
,
s
,
t
->
down
->
sym
,
t
->
type
->
sym
);
break
;
case
TCHAN
:
reexport
(
t
->
type
);
/* type 8 */
Bprint
(
bout
,
"
\t
type "
);
if
(
s
->
export
!=
0
)
Bprint
(
bout
,
"!"
);
Bprint
(
bout
,
"%lS %d %lS
\n
"
,
s
,
t
->
chan
,
t
->
type
->
sym
);
break
;
}
}
...
...
@@ -624,3 +634,25 @@ doimport7(Node *ss, Node *n)
importaddtyp
(
ss
,
t
);
}
/*
* LTYPE importsym chdir importsym
* interface type
*/
void
doimport8
(
Node
*
ss
,
Val
*
v
,
Node
*
st
)
{
Type
*
t
;
Sym
*
s
;
int
dir
;
s
=
pkglookup
(
st
->
sym
->
name
,
st
->
psym
->
name
);
dir
=
v
->
vval
;
t
=
typ
(
TCHAN
);
s
=
pkglookup
(
st
->
sym
->
name
,
st
->
psym
->
name
);
t
->
type
=
s
->
otype
;
t
->
chan
=
dir
;
importaddtyp
(
ss
,
t
);
}
src/cmd/gc/go.h
View file @
3856e45e
...
...
@@ -96,9 +96,9 @@ struct Type
Type
*
nforw
;
// TFUNCT
Type
*
this
;
Type
*
argout
;
Type
*
argin
;
//
Type* this;
//
Type* argout;
//
Type* argin;
Node
*
nname
;
// TARRAY
...
...
@@ -563,6 +563,7 @@ void doimport4(Node*, Node*);
void
doimport5
(
Node
*
,
Val
*
);
void
doimport6
(
Node
*
,
Node
*
);
void
doimport7
(
Node
*
,
Node
*
);
void
doimport8
(
Node
*
,
Val
*
,
Node
*
);
/*
* walk.c
...
...
@@ -583,6 +584,7 @@ Node* nodpanic(long);
Node
*
newcompat
(
Node
*
);
Node
*
stringop
(
Node
*
,
int
);
Node
*
mapop
(
Node
*
,
int
);
Node
*
chanop
(
Node
*
,
int
);
Node
*
convas
(
Node
*
);
void
arrayconv
(
Type
*
,
Node
*
);
Node
*
colas
(
Node
*
,
Node
*
);
...
...
src/cmd/gc/go.y
View file @
3856e45e
...
...
@@ -910,6 +910,14 @@ chandir:
{
$$
=
Csend
;
}
|
LLT
LGT
{
$$
=
Cboth
;
}
|
LGT
LLT
{
$$
=
0
;
}
keyval
:
expr
':'
expr
...
...
@@ -1481,6 +1489,11 @@ hidden_import:
//
type
interface
doimport7
($
2
,
$
4
);
}
|
LTYPE
hidden_importsym
LLITERAL
hidden_importsym
{
//
type
interface
doimport8
($
2
,
&$
3
,
$
4
);
}
isym
:
sym
'.'
sym
...
...
src/cmd/gc/subr.c
View file @
3856e45e
...
...
@@ -1295,6 +1295,7 @@ loop:
case
TPTR32
:
case
TPTR64
:
case
TCHAN
:
stp
=
&
st
->
type
;
goto
loop
;
...
...
src/cmd/gc/sys.go
View file @
3856e45e
...
...
@@ -44,6 +44,8 @@ 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
newchan
(
elemsize
uint32
,
elemalg
uint32
,
hint
uint32
)
(
hchan
*
chan
any
);
func
gosched
();
func
goexit
();
...
...
@@ -89,13 +91,16 @@ export
Inf
,
NaN
,
//
op
map
// map
newmap
mapaccess1
mapaccess2
mapassign1
mapassign2
// chan
newchan
// go routines
gosched
goexit
...
...
src/cmd/gc/sysimport.c
View file @
3856e45e
...
...
@@ -3,10 +3,10 @@ char* sysimport =
"type sys._esys_002 {}
\n
"
"type sys.any 24
\n
"
"type sys._esys_003 *sys.any
\n
"
"type sys._osys_2
62 {_esys_260
sys._esys_003}
\n
"
"type sys._osys_2
81 {_esys_279
sys._esys_003}
\n
"
"type sys.uint32 6
\n
"
"type sys._isys_2
64 {_esys_261
sys.uint32}
\n
"
"type sys._esys_001 (sys._esys_002 sys._osys_2
62 sys._isys_264
)
\n
"
"type sys._isys_2
83 {_esys_280
sys.uint32}
\n
"
"type sys._esys_001 (sys._esys_002 sys._osys_2
81 sys._isys_283
)
\n
"
"var !sys.mal sys._esys_001
\n
"
"type sys._esys_005 {}
\n
"
"type sys._esys_006 {}
\n
"
...
...
@@ -16,202 +16,209 @@ char* sysimport =
"type sys._esys_009 {}
\n
"
"type sys._esys_010 {}
\n
"
"type sys.int32 5
\n
"
"type sys._isys_2
70 {_esys_269
sys.int32}
\n
"
"type sys._esys_008 (sys._esys_009 sys._esys_010 sys._isys_2
70
)
\n
"
"type sys._isys_2
89 {_esys_288
sys.int32}
\n
"
"type sys._esys_008 (sys._esys_009 sys._esys_010 sys._isys_2
89
)
\n
"
"var !sys.panicl sys._esys_008
\n
"
"type sys._esys_012 {}
\n
"
"type sys._esys_013 {}
\n
"
"type sys.bool 12
\n
"
"type sys._isys_2
75 {_esys_274
sys.bool}
\n
"
"type sys._esys_011 (sys._esys_012 sys._esys_013 sys._isys_2
75
)
\n
"
"type sys._isys_2
94 {_esys_293
sys.bool}
\n
"
"type sys._esys_011 (sys._esys_012 sys._esys_013 sys._isys_2
94
)
\n
"
"var !sys.printbool sys._esys_011
\n
"
"type sys._esys_015 {}
\n
"
"type sys._esys_016 {}
\n
"
"type sys.float64 10
\n
"
"type sys._isys_2
80 {_esys_279
sys.float64}
\n
"
"type sys._esys_014 (sys._esys_015 sys._esys_016 sys._isys_2
80
)
\n
"
"type sys._isys_2
99 {_esys_298
sys.float64}
\n
"
"type sys._esys_014 (sys._esys_015 sys._esys_016 sys._isys_2
99
)
\n
"
"var !sys.printfloat sys._esys_014
\n
"
"type sys._esys_018 {}
\n
"
"type sys._esys_019 {}
\n
"
"type sys.int64 7
\n
"
"type sys._isys_
285 {_esys_284
sys.int64}
\n
"
"type sys._esys_017 (sys._esys_018 sys._esys_019 sys._isys_
285
)
\n
"
"type sys._isys_
304 {_esys_303
sys.int64}
\n
"
"type sys._esys_017 (sys._esys_018 sys._esys_019 sys._isys_
304
)
\n
"
"var !sys.printint sys._esys_017
\n
"
"type sys._esys_021 {}
\n
"
"type sys._esys_022 {}
\n
"
"type sys._esys_023 25
\n
"
"type sys.string *sys._esys_023
\n
"
"type sys._isys_
290 {_esys_289
sys.string}
\n
"
"type sys._esys_020 (sys._esys_021 sys._esys_022 sys._isys_
290
)
\n
"
"type sys._isys_
309 {_esys_308
sys.string}
\n
"
"type sys._esys_020 (sys._esys_021 sys._esys_022 sys._isys_
309
)
\n
"
"var !sys.printstring sys._esys_020
\n
"
"type sys._esys_025 {}
\n
"
"type sys._esys_026 {}
\n
"
"type sys.uint8 2
\n
"
"type sys._esys_027 *sys.uint8
\n
"
"type sys._isys_
295 {_esys_294
sys._esys_027}
\n
"
"type sys._esys_024 (sys._esys_025 sys._esys_026 sys._isys_
295
)
\n
"
"type sys._isys_
314 {_esys_313
sys._esys_027}
\n
"
"type sys._esys_024 (sys._esys_025 sys._esys_026 sys._isys_
314
)
\n
"
"var !sys.printpointer sys._esys_024
\n
"
"type sys._esys_029 {}
\n
"
"type sys._osys_3
02 {_esys_299
sys.string}
\n
"
"type sys._isys_3
04 {_esys_300 sys.string _esys_301
sys.string}
\n
"
"type sys._esys_028 (sys._esys_029 sys._osys_3
02 sys._isys_304
)
\n
"
"type sys._osys_3
21 {_esys_318
sys.string}
\n
"
"type sys._isys_3
23 {_esys_319 sys.string _esys_320
sys.string}
\n
"
"type sys._esys_028 (sys._esys_029 sys._osys_3
21 sys._isys_323
)
\n
"
"var !sys.catstring sys._esys_028
\n
"
"type sys._esys_031 {}
\n
"
"type sys._osys_3
12 {_esys_309
sys.int32}
\n
"
"type sys._isys_3
14 {_esys_310 sys.string _esys_311
sys.string}
\n
"
"type sys._esys_030 (sys._esys_031 sys._osys_3
12 sys._isys_314
)
\n
"
"type sys._osys_3
31 {_esys_328
sys.int32}
\n
"
"type sys._isys_3
33 {_esys_329 sys.string _esys_330
sys.string}
\n
"
"type sys._esys_030 (sys._esys_031 sys._osys_3
31 sys._isys_333
)
\n
"
"var !sys.cmpstring sys._esys_030
\n
"
"type sys._esys_033 {}
\n
"
"type sys._osys_3
23 {_esys_319
sys.string}
\n
"
"type sys._isys_3
25 {_esys_320 sys.string _esys_321 sys.int32 _esys_322
sys.int32}
\n
"
"type sys._esys_032 (sys._esys_033 sys._osys_3
23 sys._isys_325
)
\n
"
"type sys._osys_3
42 {_esys_338
sys.string}
\n
"
"type sys._isys_3
44 {_esys_339 sys.string _esys_340 sys.int32 _esys_341
sys.int32}
\n
"
"type sys._esys_032 (sys._esys_033 sys._osys_3
42 sys._isys_344
)
\n
"
"var !sys.slicestring sys._esys_032
\n
"
"type sys._esys_035 {}
\n
"
"type sys._osys_3
34 {_esys_331
sys.uint8}
\n
"
"type sys._isys_3
36 {_esys_332 sys.string _esys_333
sys.int32}
\n
"
"type sys._esys_034 (sys._esys_035 sys._osys_3
34 sys._isys_336
)
\n
"
"type sys._osys_3
53 {_esys_350
sys.uint8}
\n
"
"type sys._isys_3
55 {_esys_351 sys.string _esys_352
sys.int32}
\n
"
"type sys._esys_034 (sys._esys_035 sys._osys_3
53 sys._isys_355
)
\n
"
"var !sys.indexstring sys._esys_034
\n
"
"type sys._esys_037 {}
\n
"
"type sys._osys_3
43 {_esys_341
sys.string}
\n
"
"type sys._isys_3
45 {_esys_342
sys.int64}
\n
"
"type sys._esys_036 (sys._esys_037 sys._osys_3
43 sys._isys_345
)
\n
"
"type sys._osys_3
62 {_esys_360
sys.string}
\n
"
"type sys._isys_3
64 {_esys_361
sys.int64}
\n
"
"type sys._esys_036 (sys._esys_037 sys._osys_3
62 sys._isys_364
)
\n
"
"var !sys.intstring sys._esys_036
\n
"
"type sys._esys_039 {}
\n
"
"type sys._osys_3
52 {_esys_349
sys.string}
\n
"
"type sys._osys_3
71 {_esys_368
sys.string}
\n
"
"type sys._esys_040 *sys.uint8
\n
"
"type sys._isys_3
54 {_esys_350 sys._esys_040 _esys_351
sys.int32}
\n
"
"type sys._esys_038 (sys._esys_039 sys._osys_3
52 sys._isys_354
)
\n
"
"type sys._isys_3
73 {_esys_369 sys._esys_040 _esys_370
sys.int32}
\n
"
"type sys._esys_038 (sys._esys_039 sys._osys_3
71 sys._isys_373
)
\n
"
"var !sys.byteastring sys._esys_038
\n
"
"type sys._esys_042 {}
\n
"
"type sys._esys_043 <>
\n
"
"type sys._osys_3
63 {_esys_359
sys._esys_043}
\n
"
"type sys._osys_3
82 {_esys_378
sys._esys_043}
\n
"
"type sys._esys_044 *sys.uint8
\n
"
"type sys._esys_045 *sys.uint8
\n
"
"type sys._ssys_3
70
{}
\n
"
"type sys._esys_046 *sys._ssys_3
70
\n
"
"type sys._isys_3
65 {_esys_360 sys._esys_044 _esys_361 sys._esys_045 _esys_362
sys._esys_046}
\n
"
"type sys._esys_041 (sys._esys_042 sys._osys_3
63 sys._isys_365
)
\n
"
"type sys._ssys_3
89
{}
\n
"
"type sys._esys_046 *sys._ssys_3
89
\n
"
"type sys._isys_3
84 {_esys_379 sys._esys_044 _esys_380 sys._esys_045 _esys_381
sys._esys_046}
\n
"
"type sys._esys_041 (sys._esys_042 sys._osys_3
82 sys._isys_384
)
\n
"
"var !sys.mkiface sys._esys_041
\n
"
"type sys._esys_048 {}
\n
"
"type sys._osys_3
74 {_esys_373
sys.int32}
\n
"
"type sys._osys_3
93 {_esys_392
sys.int32}
\n
"
"type sys._esys_049 {}
\n
"
"type sys._esys_047 (sys._esys_048 sys._osys_3
74
sys._esys_049)
\n
"
"type sys._esys_047 (sys._esys_048 sys._osys_3
93
sys._esys_049)
\n
"
"var !sys.argc sys._esys_047
\n
"
"type sys._esys_051 {}
\n
"
"type sys._osys_3
78 {_esys_377
sys.int32}
\n
"
"type sys._osys_3
97 {_esys_396
sys.int32}
\n
"
"type sys._esys_052 {}
\n
"
"type sys._esys_050 (sys._esys_051 sys._osys_3
78
sys._esys_052)
\n
"
"type sys._esys_050 (sys._esys_051 sys._osys_3
97
sys._esys_052)
\n
"
"var !sys.envc sys._esys_050
\n
"
"type sys._esys_054 {}
\n
"
"type sys._osys_
383 {_esys_381
sys.string}
\n
"
"type sys._isys_
385 {_esys_382
sys.int32}
\n
"
"type sys._esys_053 (sys._esys_054 sys._osys_
383 sys._isys_385
)
\n
"
"type sys._osys_
402 {_esys_400
sys.string}
\n
"
"type sys._isys_
404 {_esys_401
sys.int32}
\n
"
"type sys._esys_053 (sys._esys_054 sys._osys_
402 sys._isys_404
)
\n
"
"var !sys.argv sys._esys_053
\n
"
"type sys._esys_056 {}
\n
"
"type sys._osys_
391 {_esys_389
sys.string}
\n
"
"type sys._isys_
393 {_esys_390
sys.int32}
\n
"
"type sys._esys_055 (sys._esys_056 sys._osys_
391 sys._isys_393
)
\n
"
"type sys._osys_
410 {_esys_408
sys.string}
\n
"
"type sys._isys_
412 {_esys_409
sys.int32}
\n
"
"type sys._esys_055 (sys._esys_056 sys._osys_
410 sys._isys_412
)
\n
"
"var !sys.envv sys._esys_055
\n
"
"type sys._esys_058 {}
\n
"
"type sys._osys_4
00 {_esys_397 sys.float64 _esys_398
sys.int32}
\n
"
"type sys._isys_4
02 {_esys_399
sys.float64}
\n
"
"type sys._esys_057 (sys._esys_058 sys._osys_4
00 sys._isys_402
)
\n
"
"type sys._osys_4
19 {_esys_416 sys.float64 _esys_417
sys.int32}
\n
"
"type sys._isys_4
21 {_esys_418
sys.float64}
\n
"
"type sys._esys_057 (sys._esys_058 sys._osys_4
19 sys._isys_421
)
\n
"
"var !sys.frexp sys._esys_057
\n
"
"type sys._esys_060 {}
\n
"
"type sys._osys_4
09 {_esys_406
sys.float64}
\n
"
"type sys._isys_4
11 {_esys_407 sys.float64 _esys_408
sys.int32}
\n
"
"type sys._esys_059 (sys._esys_060 sys._osys_4
09 sys._isys_411
)
\n
"
"type sys._osys_4
28 {_esys_425
sys.float64}
\n
"
"type sys._isys_4
30 {_esys_426 sys.float64 _esys_427
sys.int32}
\n
"
"type sys._esys_059 (sys._esys_060 sys._osys_4
28 sys._isys_430
)
\n
"
"var !sys.ldexp sys._esys_059
\n
"
"type sys._esys_062 {}
\n
"
"type sys._osys_4
19 {_esys_416 sys.float64 _esys_417
sys.float64}
\n
"
"type sys._isys_4
21 {_esys_418
sys.float64}
\n
"
"type sys._esys_061 (sys._esys_062 sys._osys_4
19 sys._isys_421
)
\n
"
"type sys._osys_4
38 {_esys_435 sys.float64 _esys_436
sys.float64}
\n
"
"type sys._isys_4
40 {_esys_437
sys.float64}
\n
"
"type sys._esys_061 (sys._esys_062 sys._osys_4
38 sys._isys_440
)
\n
"
"var !sys.modf sys._esys_061
\n
"
"type sys._esys_064 {}
\n
"
"type sys._osys_4
28 {_esys_425
sys.bool}
\n
"
"type sys._isys_4
30 {_esys_426 sys.float64 _esys_427
sys.int32}
\n
"
"type sys._esys_063 (sys._esys_064 sys._osys_4
28 sys._isys_430
)
\n
"
"type sys._osys_4
47 {_esys_444
sys.bool}
\n
"
"type sys._isys_4
49 {_esys_445 sys.float64 _esys_446
sys.int32}
\n
"
"type sys._esys_063 (sys._esys_064 sys._osys_4
47 sys._isys_449
)
\n
"
"var !sys.isInf sys._esys_063
\n
"
"type sys._esys_066 {}
\n
"
"type sys._osys_4
37 {_esys_435
sys.bool}
\n
"
"type sys._isys_4
39 {_esys_436
sys.float64}
\n
"
"type sys._esys_065 (sys._esys_066 sys._osys_4
37 sys._isys_439
)
\n
"
"type sys._osys_4
56 {_esys_454
sys.bool}
\n
"
"type sys._isys_4
58 {_esys_455
sys.float64}
\n
"
"type sys._esys_065 (sys._esys_066 sys._osys_4
56 sys._isys_458
)
\n
"
"var !sys.isNaN sys._esys_065
\n
"
"type sys._esys_068 {}
\n
"
"type sys._osys_4
45 {_esys_443
sys.float64}
\n
"
"type sys._isys_4
47 {_esys_444
sys.int32}
\n
"
"type sys._esys_067 (sys._esys_068 sys._osys_4
45 sys._isys_447
)
\n
"
"type sys._osys_4
64 {_esys_462
sys.float64}
\n
"
"type sys._isys_4
66 {_esys_463
sys.int32}
\n
"
"type sys._esys_067 (sys._esys_068 sys._osys_4
64 sys._isys_466
)
\n
"
"var !sys.Inf sys._esys_067
\n
"
"type sys._esys_070 {}
\n
"
"type sys._osys_4
52 {_esys_451
sys.float64}
\n
"
"type sys._osys_4
71 {_esys_470
sys.float64}
\n
"
"type sys._esys_071 {}
\n
"
"type sys._esys_069 (sys._esys_070 sys._osys_4
52
sys._esys_071)
\n
"
"type sys._esys_069 (sys._esys_070 sys._osys_4
71
sys._esys_071)
\n
"
"var !sys.NaN sys._esys_069
\n
"
"type sys._esys_073 {}
\n
"
"type sys._esys_075 [sys.any] sys.any
\n
"
"type sys._esys_074 *sys._esys_075
\n
"
"type sys._osys_4
55
{hmap sys._esys_074}
\n
"
"type sys._isys_4
57
{keysize sys.uint32 valsize sys.uint32 keyalg sys.uint32 valalg sys.uint32 hint sys.uint32}
\n
"
"type sys._esys_072 (sys._esys_073 sys._osys_4
55 sys._isys_457
)
\n
"
"type sys._osys_4
74
{hmap sys._esys_074}
\n
"
"type sys._isys_4
76
{keysize sys.uint32 valsize sys.uint32 keyalg sys.uint32 valalg sys.uint32 hint sys.uint32}
\n
"
"type sys._esys_072 (sys._esys_073 sys._osys_4
74 sys._isys_476
)
\n
"
"var !sys.newmap sys._esys_072
\n
"
"type sys._esys_077 {}
\n
"
"type sys._osys_4
66
{val sys.any}
\n
"
"type sys._osys_4
85
{val sys.any}
\n
"
"type sys._esys_079 [sys.any] sys.any
\n
"
"type sys._esys_078 *sys._esys_079
\n
"
"type sys._isys_4
68
{hmap sys._esys_078 key sys.any}
\n
"
"type sys._esys_076 (sys._esys_077 sys._osys_4
66 sys._isys_468
)
\n
"
"type sys._isys_4
87
{hmap sys._esys_078 key sys.any}
\n
"
"type sys._esys_076 (sys._esys_077 sys._osys_4
85 sys._isys_487
)
\n
"
"var !sys.mapaccess1 sys._esys_076
\n
"
"type sys._esys_081 {}
\n
"
"type sys._osys_4
74
{val sys.any pres sys.bool}
\n
"
"type sys._osys_4
93
{val sys.any pres sys.bool}
\n
"
"type sys._esys_083 [sys.any] sys.any
\n
"
"type sys._esys_082 *sys._esys_083
\n
"
"type sys._isys_4
76
{hmap sys._esys_082 key sys.any}
\n
"
"type sys._esys_080 (sys._esys_081 sys._osys_4
74 sys._isys_476
)
\n
"
"type sys._isys_4
95
{hmap sys._esys_082 key sys.any}
\n
"
"type sys._esys_080 (sys._esys_081 sys._osys_4
93 sys._isys_495
)
\n
"
"var !sys.mapaccess2 sys._esys_080
\n
"
"type sys._esys_085 {}
\n
"
"type sys._esys_086 {}
\n
"
"type sys._esys_088 [sys.any] sys.any
\n
"
"type sys._esys_087 *sys._esys_088
\n
"
"type sys._isys_
483
{hmap sys._esys_087 key sys.any val sys.any}
\n
"
"type sys._esys_084 (sys._esys_085 sys._esys_086 sys._isys_
483
)
\n
"
"type sys._isys_
502
{hmap sys._esys_087 key sys.any val sys.any}
\n
"
"type sys._esys_084 (sys._esys_085 sys._esys_086 sys._isys_
502
)
\n
"
"var !sys.mapassign1 sys._esys_084
\n
"
"type sys._esys_090 {}
\n
"
"type sys._esys_091 {}
\n
"
"type sys._esys_093 [sys.any] sys.any
\n
"
"type sys._esys_092 *sys._esys_093
\n
"
"type sys._isys_
489
{hmap sys._esys_092 key sys.any val sys.any pres sys.bool}
\n
"
"type sys._esys_089 (sys._esys_090 sys._esys_091 sys._isys_
489
)
\n
"
"type sys._isys_
508
{hmap sys._esys_092 key sys.any val sys.any pres sys.bool}
\n
"
"type sys._esys_089 (sys._esys_090 sys._esys_091 sys._isys_
508
)
\n
"
"var !sys.mapassign2 sys._esys_089
\n
"
"type sys._esys_095 {}
\n
"
"type sys._esys_096 {}
\n
"
"type sys._esys_097 {}
\n
"
"type sys._esys_094 (sys._esys_095 sys._esys_096 sys._esys_097)
\n
"
"var !sys.gosched sys._esys_094
\n
"
"type sys._esys_097 1 sys.any
\n
"
"type sys._esys_096 *sys._esys_097
\n
"
"type sys._osys_515 {hchan sys._esys_096}
\n
"
"type sys._isys_517 {elemsize sys.uint32 elemalg sys.uint32 hint sys.uint32}
\n
"
"type sys._esys_094 (sys._esys_095 sys._osys_515 sys._isys_517)
\n
"
"var !sys.newchan sys._esys_094
\n
"
"type sys._esys_099 {}
\n
"
"type sys._esys_100 {}
\n
"
"type sys._esys_101 {}
\n
"
"type sys._esys_098 (sys._esys_099 sys._esys_100 sys._esys_101)
\n
"
"var !sys.go
exit
sys._esys_098
\n
"
"var !sys.go
sched
sys._esys_098
\n
"
"type sys._esys_103 {}
\n
"
"type sys._osys_501 {_esys_498 sys.string _esys_499 sys.bool}
\n
"
"type sys._isys_503 {_esys_500 sys.string}
\n
"
"type sys._esys_102 (sys._esys_103 sys._osys_501 sys._isys_503)
\n
"
"var !sys.readfile sys._esys_102
\n
"
"type sys._esys_104 {}
\n
"
"type sys._esys_105 {}
\n
"
"type sys._osys_512 {_esys_507 sys.int32 _esys_508 sys.int32}
\n
"
"type sys._esys_106 *sys.uint8
\n
"
"type sys._isys_514 {_esys_509 sys._esys_106 _esys_510 sys.int32 _esys_511 sys.int32}
\n
"
"type sys._esys_104 (sys._esys_105 sys._osys_512 sys._isys_514)
\n
"
"var !sys.bytestorune sys._esys_104
\n
"
"type sys._esys_108 {}
\n
"
"type sys._osys_525 {_esys_520 sys.int32 _esys_521 sys.int32}
\n
"
"type sys._isys_527 {_esys_522 sys.string _esys_523 sys.int32 _esys_524 sys.int32}
\n
"
"type sys._esys_107 (sys._esys_108 sys._osys_525 sys._isys_527)
\n
"
"var !sys.stringtorune sys._esys_107
\n
"
"type sys._esys_110 {}
\n
"
"type sys._esys_111 {}
\n
"
"type sys._isys_534 {_esys_533 sys.int32}
\n
"
"type sys._esys_109 (sys._esys_110 sys._esys_111 sys._isys_534)
\n
"
"var !sys.exit sys._esys_109
\n
"
"type sys._esys_102 (sys._esys_103 sys._esys_104 sys._esys_105)
\n
"
"var !sys.goexit sys._esys_102
\n
"
"type sys._esys_107 {}
\n
"
"type sys._osys_529 {_esys_526 sys.string _esys_527 sys.bool}
\n
"
"type sys._isys_531 {_esys_528 sys.string}
\n
"
"type sys._esys_106 (sys._esys_107 sys._osys_529 sys._isys_531)
\n
"
"var !sys.readfile sys._esys_106
\n
"
"type sys._esys_109 {}
\n
"
"type sys._osys_540 {_esys_535 sys.int32 _esys_536 sys.int32}
\n
"
"type sys._esys_110 *sys.uint8
\n
"
"type sys._isys_542 {_esys_537 sys._esys_110 _esys_538 sys.int32 _esys_539 sys.int32}
\n
"
"type sys._esys_108 (sys._esys_109 sys._osys_540 sys._isys_542)
\n
"
"var !sys.bytestorune sys._esys_108
\n
"
"type sys._esys_112 {}
\n
"
"type sys._osys_553 {_esys_548 sys.int32 _esys_549 sys.int32}
\n
"
"type sys._isys_555 {_esys_550 sys.string _esys_551 sys.int32 _esys_552 sys.int32}
\n
"
"type sys._esys_111 (sys._esys_112 sys._osys_553 sys._isys_555)
\n
"
"var !sys.stringtorune sys._esys_111
\n
"
"type sys._esys_114 {}
\n
"
"type sys._esys_115 {}
\n
"
"type sys._isys_562 {_esys_561 sys.int32}
\n
"
"type sys._esys_113 (sys._esys_114 sys._esys_115 sys._isys_562)
\n
"
"var !sys.exit sys._esys_113
\n
"
"))
\n
"
;
src/cmd/gc/walk.c
View file @
3856e45e
...
...
@@ -1219,6 +1219,10 @@ newcompat(Node *n)
r
=
mapop
(
n
,
Erv
);
return
r
;
}
if
(
t
->
etype
==
TCHAN
)
{
r
=
chanop
(
n
,
Erv
);
return
r
;
}
if
(
n
->
left
!=
N
)
yyerror
(
"dont know what new(,e) means"
);
...
...
@@ -1371,6 +1375,32 @@ fixmap(Type *tm)
return
t
;
}
Type
*
fixchan
(
Type
*
tm
)
{
Type
*
t
;
t
=
tm
->
type
;
if
(
t
==
T
)
{
fatal
(
"fixchan: t nil"
);
return
T
;
}
if
(
t
->
etype
!=
TCHAN
)
{
fatal
(
"fixchan: %O not map"
);
return
T
;
}
if
(
t
->
type
==
T
)
{
fatal
(
"fixchan: chan element type is nil"
);
return
T
;
}
dowidth
(
t
->
type
);
return
t
;
}
static
int
algtype
(
Type
*
t
)
{
...
...
@@ -1593,6 +1623,49 @@ nottop:
return
N
;
}
Node
*
chanop
(
Node
*
n
,
int
top
)
{
Node
*
r
,
*
a
;
Type
*
t
;
Node
*
on
;
int
alg
,
cl
,
cr
;
//dump("chanop", n);
r
=
n
;
switch
(
n
->
op
)
{
default:
fatal
(
"mapop: unknown op %E"
,
n
->
op
);
case
ONEW
:
// newchan(elemsize uint32, elemalg uint32,
// hint uint32) (hmap *chan[any-1]);
t
=
fixchan
(
n
->
type
);
if
(
t
==
T
)
break
;
a
=
n
->
left
;
// hint
if
(
n
->
left
==
N
)
a
=
nodintconst
(
0
);
r
=
a
;
a
=
nodintconst
(
algtype
(
t
->
type
));
// elem algorithm
r
=
nod
(
OLIST
,
a
,
r
);
a
=
nodintconst
(
t
->
type
->
width
);
// elem width
r
=
nod
(
OLIST
,
a
,
r
);
on
=
syslook
(
"newchan"
,
1
);
argtype
(
on
,
t
->
type
);
// any-1
r
=
nod
(
OCALL
,
on
,
r
);
walktype
(
r
,
top
);
r
->
type
=
n
->
type
;
break
;
}
return
r
;
}
void
diagnamed
(
Type
*
t
)
{
...
...
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