Age | Commit message (Collapse) | Author | Files | Lines |
|
R=ken
OCL=30783
CL=30783
|
|
do not bother warning about marks left
on stack after syntax errors.
leave OCONV nodes in tree to avoid type errors
arising from multiple walks.
R=ken
OCL=30639
CL=30662
|
|
instead of having to double the type and statement grammars.
R=ken
OCL=29987
CL=29998
|
|
* no longer distinguishes const, var, type, package names.
* all the predefined names are not tokens anymore.
R=ken
OCL=29326
CL=29985
|
|
R=ken
OCL=29806
CL=29808
|
|
* conversions all in one place.
* no separate load, store phases;
direct memory addressing when possible
(this is the x86 after all!).
avoids extra registers, extra MOVQs.
* fixes int32 -> uint64 bug
(was zero-extending)
R=ken
OCL=29482
CL=29484
|
|
R=r
OCL=29405
CL=29405
|
|
* string format changed
* files got renamed
* new files that i forgot to check in last time
updates are all copy and paste from 6g
R=ken
OCL=29385
CL=29400
|
|
structtype{a:1, a:2}
maptypetype{"xx":1, "xx":2}
arraytypetype{5:1, 5:2}
2. bug in registerization concerning
alias of a struct and one of its elements
3. code optimization of struct.field
(which exposed bug in 2)
R=r
OCL=29315
CL=29315
|
|
R=ken
OCL=29209
CL=29216
|
|
structure and array literals
R=r
OCL=29190
CL=29190
|
|
that came from two different enums.
spilt into ifacecvt and ifaceop depending
on which enum the argument is.
R=ken
OCL=29122
CL=29122
|
|
this is not a user-visible change.
before, all interface values were
struct Itype {
Sigt *type;
Sigi *inter;
void *method[n];
}
struct Iface {
void *addr;
Itype *itype;
}
the itype is basically a vtable, but it's unnecessary
if the static type is interface{ }.
for interface values with static type empty, the
new representation is
struct Eface {
void *addr;
Sigt *type;
}
this complicates the code somewhat, but
it reduces the number of Itypes that
have to be computed and cached,
it opens up opportunities to avoid function
calls in a few common cases,
and it will make it possible to lay out
interface{} values at compile time,
which i think i'll need for the new reflection.
R=ken
OCL=28701
CL=29121
|
|
R=r
OCL=29016
CL=29016
|
|
structure set up - no change yet
R=r
OCL=28966
CL=28966
|
|
use the actual go source instead.
R=r
DELTA=90 (66 added, 18 deleted, 6 changed)
OCL=28708
CL=28719
|
|
new type equality restrictions
better handling of renamed packages
"sys" is no longer available to programs
R=ken
OCL=28553
CL=28578
|
|
R=r
OCL=28569
CL=28573
|
|
R=ken
OCL=28559
CL=28562
|
|
with method m, s.m() is ok and m now shows up
in s's method set for interface runtime.
see http://cl/28419-p2 for new test interface10.go.
R=ken
OCL=28420
CL=28423
|
|
part 2; missing files
R=ken
OCL=28408
CL=28410
|
|
R=ken
OCL=28374
CL=28378
|
|
so that 6l can discard strings used by dead code.
also, for short strings, generate DUPOK global
symbols so that references to, say, "%s: %s" in
multiple files result in only a single symbol.
R=ken
OCL=28361
CL=28361
|
|
R=r
OCL=27293
CL=27293
|
|
store only the original import path string (+ .a)
if 6g resolves it to an archive file.
let 6l re-resolve the .a at link time.
this lets libraries build against an archive
in the current directory but get used
against an installed archive.
R=r
OCL=27244
CL=27244
|
|
package main
func main() { func(){}() + + }
x.go:2: syntax error near _f001
becomes
x.go:2: syntax error near func
R=ken
OCL=27047
CL=27047
|
|
package main
func main() {
println("hello,", 123);
}
R=ken
OCL=27043
CL=27043
|
|
package main
var f = func(a, b int) int { return a + b }
R=ken
OCL=26935
CL=26935
|
|
signature generation) into gc.
R=ken
OCL=26933
CL=26933
|
|
R=ken
OCL=26929
CL=26929
|
|
int brcom(int);
int brrev(int);
void setmaxarg(Type*);
Sig* lsort(Sig*, int(*)(Sig*, Sig*));
int dotoffset(Node*, int*, Node**);
void stringpool(Node*);
void tempname(Node*, Type*);
R=ken
OCL=26922
CL=26922
|
|
R=ken
OCL=26914
CL=26914
|
|
R=ken
OCL=26909
CL=26909
|
|
in favor of the lib9 compatibility layer. no need for two.
now that mycreate is gone, .6 files are 0644 not 0755.
TBR=r
OCL=26679
CL=26679
|
|
new feature 'case nil:' in type switch
will match iff the interface is nil.
R=r
OCL=26404
CL=26404
|
|
various bug fixes and tests involving constants.
test/const1.go is the major new test case.
R=ken
OCL=26216
CL=26224
|
|
runtime not finished.
R=r
OCL=26217
CL=26217
|
|
R=r
OCL=26152
CL=26152
|
|
DIR.
R=ken,rsc
DELTA=49 (41 added, 2 deleted, 6 changed)
OCL=26057
CL=26092
|
|
2. fixed fault on bug128
3. got rid of typeof
4. fixed bug in t,ok = I2T
R=r
OCL=25873
CL=25873
|
|
in preparation of type switch.
no functional change (yet).
R=r
OCL=25784
CL=25788
|
|
R=ken
OCL=25720
CL=25720
|
|
R=ken
DELTA=131 (60 added, 41 deleted, 30 changed)
OCL=25617
CL=25633
|
|
warn about composite literal { } syntax.
R=ken
OCL=25018
CL=25023
|
|
R=ken
OCL=24350
CL=24914
|
|
R=r
OCL=24639
CL=24639
|
|
R=ken
OCL=24501
CL=24566
|
|
make f(g()) work when g returns multiple
args with names different than f expects.
func swap(a, b int) (c, d int) {
return b, a
}
swap(swap(1,2))
R=ken
OCL=24474
CL=24476
|
|
R=ken
OCL=23958
CL=23961
|
|
heuristic to not print bogus strings.
fix one error message format.
R=ken
OCL=23849
CL=23851
|