This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
libgo patch committed: Update to current library
- From: Ian Lance Taylor <iant at google dot com>
- To: gcc-patches at gcc dot gnu dot org, gofrontend-dev at googlegroups dot com
- Date: Wed, 12 Dec 2012 15:13:32 -0800
- Subject: libgo patch committed: Update to current library
I've updated libgo to the current master Go library sources. As usual
this e-mail only includes patches to files that are substantially
specific to gccgo. The bulk of the patch is available from the
repository or from the master Go repository. Bootstrapped and ran Go
testsuite on x86_64-unknown-linux-gnu. Committed to mainline.
Ian
diff -r ddfa689e6405 libgo/MERGE
--- a/libgo/MERGE Wed Dec 05 20:09:59 2012 -0800
+++ b/libgo/MERGE Wed Dec 12 15:03:42 2012 -0800
@@ -1,4 +1,4 @@
-a070de932857
+c031aa767edf
The first line of this file holds the Mercurial revision number of the
last merge done from the master library sources.
diff -r ddfa689e6405 libgo/Makefile.am
--- a/libgo/Makefile.am Wed Dec 05 20:09:59 2012 -0800
+++ b/libgo/Makefile.am Wed Dec 12 15:03:42 2012 -0800
@@ -221,6 +221,7 @@
toolexeclibgoexpdir = $(toolexeclibgodir)/exp
toolexeclibgoexp_DATA = \
+ exp/cookiejar.gox \
exp/ebnf.gox \
exp/html.gox \
$(exp_inotify_gox) \
@@ -251,6 +252,7 @@
go/ast.gox \
go/build.gox \
go/doc.gox \
+ go/format.gox \
go/parser.gox \
go/printer.gox \
go/scanner.gox \
@@ -1194,6 +1196,9 @@
go/encoding/xml/typeinfo.go \
go/encoding/xml/xml.go
+go_exp_cookiejar_files = \
+ go/exp/cookiejar/jar.go \
+ go/exp/cookiejar/storage.go
go_exp_ebnf_files = \
go/exp/ebnf/ebnf.go \
go/exp/ebnf/parser.go
@@ -1284,6 +1289,8 @@
go/go/doc/filter.go \
go/go/doc/reader.go \
go/go/doc/synopsis.go
+go_go_format_files = \
+ go/go/format/format.go
go_go_parser_files = \
go/go/parser/interface.go \
go/go/parser/parser.go
@@ -1384,6 +1391,7 @@
go_mime_multipart_files = \
go/mime/multipart/formdata.go \
go/mime/multipart/multipart.go \
+ go/mime/multipart/quotedprintable.go \
go/mime/multipart/writer.go
go_net_http_files = \
@@ -1456,6 +1464,7 @@
go_os_user_files = \
go/os/user/user.go \
+ go/os/user/lookup.go \
go/os/user/lookup_unix.go
go_path_filepath_files = \
@@ -1822,6 +1831,7 @@
encoding/json.lo \
encoding/pem.lo \
encoding/xml.lo \
+ exp/cookiejar.lo \
exp/ebnf.lo \
exp/html.lo \
exp/html/atom.lo \
@@ -1836,6 +1846,7 @@
go/ast.lo \
go/build.lo \
go/doc.lo \
+ go/format.lo \
go/parser.lo \
go/printer.lo \
go/scanner.lo \
@@ -2658,6 +2669,15 @@
@$(CHECK)
.PHONY: encoding/xml/check
+@go_include@ exp/cookiejar.lo.dep
+exp/cookiejar.lo.dep: $(go_exp_cookiejar_files)
+ $(BUILDDEPS)
+exp/cookiejar.lo: $(go_exp_cookiejar_files)
+ $(BUILDPACKAGE)
+exp/cookiejar/check: $(CHECK_DEPS)
+ @$(CHECK)
+.PHONY: exp/cookiejar/check
+
@go_include@ exp/ebnf.lo.dep
exp/ebnf.lo.dep: $(go_exp_ebnf_files)
$(BUILDDEPS)
@@ -2802,6 +2822,15 @@
@$(CHECK)
.PHONY: go/doc/check
+@go_include@ go/format.lo.dep
+go/format.lo.dep: $(go_go_format_files)
+ $(BUILDDEPS)
+go/format.lo: $(go_go_format_files)
+ $(BUILDPACKAGE)
+go/format/check: $(CHECK_DEPS)
+ @$(CHECK)
+.PHONY: go/format/check
+
@go_include@ go/parser.lo.dep
go/parser.lo.dep: $(go_go_parser_files)
$(BUILDDEPS)
@@ -3450,6 +3479,8 @@
encoding/xml.gox: encoding/xml.lo
$(BUILDGOX)
+exp/cookiejar.gox: exp/cookiejar.lo
+ $(BUILDGOX)
exp/ebnf.gox: exp/ebnf.lo
$(BUILDGOX)
exp/html.gox: exp/html.lo
@@ -3482,6 +3513,8 @@
$(BUILDGOX)
go/doc.gox: go/doc.lo
$(BUILDGOX)
+go/format.gox: go/format.lo
+ $(BUILDGOX)
go/parser.gox: go/parser.lo
$(BUILDGOX)
go/printer.gox: go/printer.lo
@@ -3681,6 +3714,7 @@
encoding/json/check \
encoding/pem/check \
encoding/xml/check \
+ exp/cookiejar/check \
exp/ebnf/check \
exp/html/check \
exp/html/atom/check \
@@ -3696,6 +3730,7 @@
go/ast/check \
$(go_build_check_omitted_since_it_calls_6g) \
go/doc/check \
+ go/format/check \
go/parser/check \
go/printer/check \
go/scanner/check \
diff -r ddfa689e6405 libgo/runtime/chan.c
--- a/libgo/runtime/chan.c Wed Dec 05 20:09:59 2012 -0800
+++ b/libgo/runtime/chan.c Wed Dec 12 15:03:42 2012 -0800
@@ -197,7 +197,7 @@
runtime_lock(c);
// TODO(dvyukov): add similar instrumentation to select.
if(raceenabled)
- runtime_racereadpc(c, pc);
+ runtime_racereadpc(c, pc, runtime_chansend);
if(c->closed)
goto closed;
@@ -1271,7 +1271,7 @@
}
if(raceenabled) {
- runtime_racewritepc(c, runtime_getcallerpc(&c));
+ runtime_racewritepc(c, runtime_getcallerpc(&c), runtime_closechan);
runtime_racerelease(c);
}
diff -r ddfa689e6405 libgo/runtime/mgc0.c
--- a/libgo/runtime/mgc0.c Wed Dec 05 20:09:59 2012 -0800
+++ b/libgo/runtime/mgc0.c Wed Dec 12 15:03:42 2012 -0800
@@ -949,6 +949,7 @@
dumpspan(spanidx);
}
}
+
void
runtime_gchelper(void)
{
@@ -1025,16 +1026,21 @@
mstats.stacks_sys = stacks_sys;
}
+// Structure of arguments passed to function gc().
+// This allows the arguments to be passed via reflect_call.
+struct gc_args
+{
+ int32 force;
+};
+
+static void gc(struct gc_args *args);
+
void
runtime_gc(int32 force)
{
M *m;
- int64 t0, t1, t2, t3;
- uint64 heap0, heap1, obj0, obj1;
const byte *p;
- GCStats stats;
- M *m1;
- uint32 i;
+ struct gc_args a, *ap;
// The atomic operations are not atomic if the uint64s
// are not aligned on uint64 boundaries. This has been
@@ -1074,12 +1080,37 @@
if(gcpercent < 0)
return;
+ // Run gc on a bigger stack to eliminate
+ // a potentially large number of calls to runtime_morestack.
+ // But not when using gccgo.
+ a.force = force;
+ ap = &a;
+ gc(ap);
+
+ if(gctrace > 1 && !force) {
+ a.force = 1;
+ gc(&a);
+ }
+}
+
+static void
+gc(struct gc_args *args)
+{
+ M *m;
+ int64 t0, t1, t2, t3;
+ uint64 heap0, heap1, obj0, obj1;
+ GCStats stats;
+ M *m1;
+ uint32 i;
+
runtime_semacquire(&runtime_worldsema);
- if(!force && mstats.heap_alloc < mstats.next_gc) {
+ if(!args->force && mstats.heap_alloc < mstats.next_gc) {
runtime_semrelease(&runtime_worldsema);
return;
}
+ m = runtime_m();
+
t0 = runtime_nanotime();
m->gcing = 1;
@@ -1181,9 +1212,6 @@
// give the queued finalizers, if any, a chance to run
if(finq != nil)
runtime_gosched();
-
- if(gctrace > 1 && !force)
- runtime_gc(1);
}
void runtime_ReadMemStats(MStats *)
diff -r ddfa689e6405 libgo/runtime/race.h
--- a/libgo/runtime/race.h Wed Dec 05 20:09:59 2012 -0800
+++ b/libgo/runtime/race.h Wed Dec 12 15:03:42 2012 -0800
@@ -20,8 +20,8 @@
void runtime_racefree(void *p);
void runtime_racegostart(int32 goid, void *pc);
void runtime_racegoend(int32 goid);
-void runtime_racewritepc(void *addr, void *pc);
-void runtime_racereadpc(void *addr, void *pc);
+void runtime_racewritepc(void *addr, void *callpc, void *pc);
+void runtime_racereadpc(void *addr, void *callpc, void *pc);
void runtime_racefingo(void);
void runtime_raceacquire(void *addr);
void runtime_raceacquireg(G *gp, void *addr);