This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]