- 02 Nov, 2017 17 commits
-
-
Brad Fitzpatrick authored
Fixes #21343 Change-Id: I3582fced902592fe12bfa29acf7b40b6e5e554a7 Reviewed-on: https://go-review.googlesource.com/75150 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Kenny Grant authored
The comment on invalid time values in Constants and example refers to _ zero padding when it should refer to space padding. Change-Id: I5784356e389d324703e20eec6203f147db92880f Reviewed-on: https://go-review.googlesource.com/75410Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Tobias Klauser authored
The ztypes_windows* file names indicate that these are auto-generated but they aren't. Rename them to types_windows* to avoid this confusion. This follows CL 52950 which did the same for golang.org/x/sys. Change-Id: Ia557ec5d4bcfb6bae20e34e71b5f3f190285794f Reviewed-on: https://go-review.googlesource.com/75390 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Marcel van Lohuizen authored
The only file that really changed is x/net/idna (upstream 8253218a). See CL 73730: avoid memory leak in validation codes The rest is just a small change in the generation line at the top. Change-Id: I62c5172f77f63d919c41d11c6db0a9517bc2a221 Reviewed-on: https://go-review.googlesource.com/74953Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Martin Möhrmann authored
Handle make(map[any]any) and make(map[any]any, hint) where hint <= BUCKETSIZE special to allow for faster map initialization and to improve binary size by using runtime calls with fewer arguments. Given hint is smaller or equal to BUCKETSIZE in which case overLoadFactor(hint, 0) is false and no buckets would be allocated by makemap: * If hmap needs to be allocated on the stack then only hmap's hash0 field needs to be initialized and no call to makemap is needed. * If hmap needs to be allocated on the heap then a new special makehmap function will allocate hmap and intialize hmap's hash0 field. Reduces size of the godoc by ~36kb. AMD64 name old time/op new time/op delta NewEmptyMap 16.6ns ± 2% 5.5ns ± 2% -66.72% (p=0.000 n=10+10) NewSmallMap 64.8ns ± 1% 56.5ns ± 1% -12.75% (p=0.000 n=9+10) Updates #6853 Change-Id: I624e90da6775afaa061178e95db8aca674f44e9b Reviewed-on: https://go-review.googlesource.com/61190 Run-TryBot: Martin Möhrmann <moehrmann@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
isharipo authored
Current AllowedOpCodes is 1024, which is not enough for modern x86. Changed limit to 2048 (though AVX512 will exceed this). Additional Z-cases and ytab tables are added to make it possible to handle missing AVX1 and AVX2 instructions. This CL is required by x86avxgen to work properly: https://go-review.googlesource.com/c/arch/+/66972 Change-Id: I290214bbda554d2cba53349f50dcd34014fe4cee Reviewed-on: https://go-review.googlesource.com/70650 Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ilya Tocar <ilya.tocar@intel.com>
-
Ilya Tocar authored
Add support for ADX cpuid bit detection and all instructions, implied by that bit (ADOX/ADCX). They are useful for rsa and math/big in general. Change-Id: Idaa93303ead48fd18b9b3da09b3e79de2f7e2193 Reviewed-on: https://go-review.googlesource.com/74850 Run-TryBot: Ilya Tocar <ilya.tocar@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Cherry Zhang authored
Change-Id: Ifa7701e97c0ec7d113e952b2b366edf422d6df2f Reviewed-on: https://go-review.googlesource.com/69351 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Lynn Boger authored
This change adds an asm implementations modf for ppc64x. Improvements: BenchmarkModf-16 7.48 6.26 -16.31% Updates: #21390 Change-Id: I9c4f3213688e3e8842d050840dc04fc9c0bf6ce4 Reviewed-on: https://go-review.googlesource.com/74411 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Munday <mike.munday@ibm.com>
-
Blixt authored
The comment currently implies that a zero will be added, but the underscore is used to add a space for single-digit dates. Change-Id: Ib3bac8a16bc2d1fcb26ab3bb7ad172b89e1a4a24 Reviewed-on: https://go-review.googlesource.com/75230Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Tobias Klauser authored
Since CL 33071, testCPUProfile is only one user of the badOS map. Replace it by the corresponding switch, with the "plan9" case removed because it is already checked earlier in the same function. Change-Id: Id647b8ee1fd37516bb702b35b3c9296a4f56b61b Reviewed-on: https://go-review.googlesource.com/75110 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Russ Cox authored
If GODEBUG=gocacheverify=1, then instead of using the cache to avoid computations, the go command will do the computations and double-check that they match any existing cache entries. This is handled entirely in the cache implementation; there's no complexity added to any of the cache usage sites. (As of this CL there aren't any cache usage sites, but soon there will be.) Also change GOCMDDEBUGHASH to the more usual GODEBUG=gocachehash=1. Change-Id: I574f181e06b5299b1d9c6d402e40c57a0e064e74 Reviewed-on: https://go-review.googlesource.com/75294 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Russ Cox authored
This lets users see the effective GOCACHE setting. Change-Id: I0b6dd2945d54611be89ed68fe2fd99110b9a25f6 Reviewed-on: https://go-review.googlesource.com/75293Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Russ Cox authored
These are convenience function for small cached items. Change-Id: Iba92b7826a9fd6979e627687f2ce72d4b4799385 Reviewed-on: https://go-review.googlesource.com/75292Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Russ Cox authored
Use a build cache separate from the default user cache, one that will be wiped out during startup, so that make.bash continues to start from a clean slate. Change-Id: I38733991015c66efb89fc170c71701b1dd9de28d Reviewed-on: https://go-review.googlesource.com/75291 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Russ Cox authored
This makes ImportDir("$GOROOT/src/math", 0) and Import("math", "", 0) equivalent. It was an oversight that they were not before. An upcoming change to the go command relies on the two returning the same results. Change-Id: I187da4830fae85f8dde673c22836ff2da6801047 Reviewed-on: https://go-review.googlesource.com/75290 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Russ Cox authored
The cache is stored in $GOCACHE, which is printed by go env and defaults to a subdirectory named "go-build" in the standard user cache directory for the host operating system. This CL only implements the cache. Future CLs will store data in it. Change-Id: I0b4965a9e50f852e17e44ec3d6dafe05b58f0d22 Reviewed-on: https://go-review.googlesource.com/68116 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
- 01 Nov, 2017 23 commits
-
-
griesemer authored
At the end of type-checking a function or closure, unused local variables are reported by looking at all variables in the function scope and its nested children scopes. If a nested scope belonged to a nested function (closure), that scope would be searched twice, leading to multiple error messages for unused variables. This CL introduces an internal-only marker to identify function scopes so that they can be ignored where needed. Fixes #22524. Change-Id: If58cc17b2f0615a16f33ea262f50dffd0e86d0f0 Reviewed-on: https://go-review.googlesource.com/75251Reviewed-by: Alan Donovan <adonovan@google.com>
-
Evan Jones authored
Mac OS X 10.13 introduced APFS which stores nanosecond resolution timestamps. The implementation of os.Stat already returns full resolution timestamps, but os.Chtimes only sets timestamps with microsecond resolution. Fix this by using setattrlist on Darwin, which takes a struct timeval with nanosecond resolution. This is what Mac OS X 10.13 appears uses to implement utimensat, according to dtruss. Fixes #22528 Change-Id: I397dabef6b2b73a081382999aa4c4405ab8c6015 Reviewed-on: https://go-review.googlesource.com/74952 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
Updates #21322 Change-Id: Ib03ee9dbe1b44c2fecd51f2f2c23a88482158e7e Reviewed-on: https://go-review.googlesource.com/75250Reviewed-by: Rob Pike <r@golang.org>
-
Tom Bergan authored
Updates http2 to x/net/http2 git rev c73622c77280 http2: always delay closing the connection after sending GOAWAY https://golang.org/cl/71372 http2: Discard data reads on HEAD requests https://golang.org/cl/72551 Fixes #18701 Fixes #22376 Change-Id: I2460cec64848992fff21790868b5fb8c91f050f2 Reviewed-on: https://go-review.googlesource.com/75210 Run-TryBot: Tom Bergan <tombergan@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Tim Cooper authored
The marshal method allows the hash's internal state to be serialized and unmarshaled at a later time, without having the re-write the entire stream of data that was already written to the hash. Fixes #20573 Change-Id: I40bbb84702ac4b7c5662f99bf943cdf4081203e5 Reviewed-on: https://go-review.googlesource.com/66710Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Leigh McCulloch authored
Whitespace is ignored in bool values and attrs. It is convenient and relatively safe since whitespace around a bool value is often unimportant. The same logic can be applied to numeric values of types int, uint, and float. Fixes #22146 Change-Id: Ie0462def90304af144b8e2e72d85b644857c27cc Reviewed-on: https://go-review.googlesource.com/73891Reviewed-by: Sam Whited <sam@samwhited.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Sam Whited <sam@samwhited.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Leigh McCulloch authored
Whitespace is ignored in bool values and attrs, but there are no tests capturing this behavior. Change-Id: I7a7249de4886f510869e91de937e69b83c3254c8 Reviewed-on: https://go-review.googlesource.com/73890Reviewed-by: Sam Whited <sam@samwhited.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Sam Whited <sam@samwhited.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Mikio Hara authored
Also replaces verbs for error message from %s to %v. In general, low level IO APIs return an error value containing non-string types and there's no guarantee that all the types implement fmt.Stringer interface. Change-Id: I8a6e2a80d5c721c772a83b9556bac16556eaa771 Reviewed-on: https://go-review.googlesource.com/73931 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Mikio Hara authored
Change-Id: Ibae06adcc69cae34cb0a14d990a0949b77fa772c Reviewed-on: https://go-review.googlesource.com/73930 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Dmitri Shuralyov authored
In CL 50510, the Content-Type header started to be set in Redirect when request method is GET. (Prior to that, it wasn't set at all, which is what said CL was fixing.) However, according to HTTP specification, the expected response for a HEAD request is identical to that of a GET request, but without the response body. This CL updates the behavior to set the Content-Type header for HEAD method in addition to GET. This actually allows a simpler implementation than before. This change largely reverts CL 50510, and applies the simpler implementation. Add a test for Content-Type header and body for GET, HEAD requests. Updates CL 50510. Change-Id: If33ea3f4bbc5246bb5dc751458004828cfe681b9 Reviewed-on: https://go-review.googlesource.com/65190 Run-TryBot: Dmitri Shuralyov <shurcool@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Tom Bergan <tombergan@google.com>
-
Radek Sohlich authored
It is easy to miss the documentation information that no arguments in the Notify function means that the Notify will catch all possible signals. So the example was added with explicit comment above the Notify usage. Fixes #22257 Change-Id: Ia6a16dd4a419f7c77d89020ca5db85979b5b474e Reviewed-on: https://go-review.googlesource.com/74730 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Cherry Zhang authored
The counter part, writeInt in cmd/internal/obj, writes int64s. So the reader side should also read int64s. This may cause a larger range of values being accepted, some of which should not be that large. This is probably ok: for example, for size/index/length, the very large value (due to corruption) may be well past the end and causes other errors. And we did not do much bound check anyway. One exmaple where this matters is ARM32's object file. For one type of relocation it encodes the instruction into Reloc.Add field (which itself may be problematic and worth fix) and the instruction encoding overflows int32, causing ARM32 object file being rejected by goobj (and so objdump and nm) before. Unskip ARM32 object file tests in goobj, nm, and objdump. Updates #19811. Change-Id: Ia46c2b68df5f1c5204d6509ceab6416ad6372315 Reviewed-on: https://go-review.googlesource.com/69010 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
griesemer authored
Fixes #22473. Change-Id: Ie886dfc8b5510970d6d63ca6472c73325f6f2276 Reviewed-on: https://go-review.googlesource.com/74971 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Martin Möhrmann <moehrmann@google.com>
-
Daniel Martí authored
By position, to ensure deterministic output. Fixes #22525. Change-Id: I28777d504a622416678b52afd6fc4c3ef32c12af Reviewed-on: https://go-review.googlesource.com/75090 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alberto Donizetti authored
An initial draft of the Newton code for Float.Sqrt was structured like this: for condition // do Newton iteration.. prec *= 2 since prec, at the end of the loop, was double the precision used in the last Newton iteration, the termination condition was set to 2*limit. The code was later rewritten in the form for condition prec *= 2 // do Newton iteration.. but condition was not updated, and it's still 2*limit, which is about double what we actually need, and is triggering the execution of an additional, and unnecessary, Newton iteration. This change adjusts the Newton termination condition to the (correct) value of z.prec, plus 32 guard bits as a safety margin. name old time/op new time/op delta FloatSqrt/64-4 798ns ± 3% 802ns ± 3% ~ (p=0.458 n=8+8) FloatSqrt/128-4 1.65µs ± 1% 1.65µs ± 1% ~ (p=0.290 n=8+8) FloatSqrt/256-4 3.10µs ± 1% 2.10µs ± 0% -32.32% (p=0.000 n=8+7) FloatSqrt/1000-4 8.83µs ± 1% 4.91µs ± 2% -44.39% (p=0.000 n=8+8) FloatSqrt/10000-4 107µs ± 1% 40µs ± 1% -62.68% (p=0.000 n=8+8) FloatSqrt/100000-4 2.91ms ± 1% 0.96ms ± 1% -67.13% (p=0.000 n=8+8) FloatSqrt/1000000-4 240ms ± 1% 80ms ± 1% -66.66% (p=0.000 n=8+8) name old alloc/op new alloc/op delta FloatSqrt/64-4 416B ± 0% 416B ± 0% ~ (all equal) FloatSqrt/128-4 720B ± 0% 720B ± 0% ~ (all equal) FloatSqrt/256-4 1.34kB ± 0% 0.82kB ± 0% -39.29% (p=0.000 n=8+8) FloatSqrt/1000-4 5.09kB ± 0% 2.50kB ± 0% -50.94% (p=0.000 n=8+8) FloatSqrt/10000-4 45.9kB ± 0% 23.5kB ± 0% -48.81% (p=0.000 n=8+8) FloatSqrt/100000-4 533kB ± 0% 251kB ± 0% -52.90% (p=0.000 n=8+8) FloatSqrt/1000000-4 9.21MB ± 0% 4.61MB ± 0% -49.98% (p=0.000 n=8+8) name old allocs/op new allocs/op delta FloatSqrt/64-4 9.00 ± 0% 9.00 ± 0% ~ (all equal) FloatSqrt/128-4 13.0 ± 0% 13.0 ± 0% ~ (all equal) FloatSqrt/256-4 15.0 ± 0% 12.0 ± 0% -20.00% (p=0.000 n=8+8) FloatSqrt/1000-4 24.0 ± 0% 19.0 ± 0% -20.83% (p=0.000 n=8+8) FloatSqrt/10000-4 40.0 ± 0% 35.0 ± 0% -12.50% (p=0.000 n=8+8) FloatSqrt/100000-4 66.0 ± 0% 55.0 ± 0% -16.67% (p=0.000 n=8+8) FloatSqrt/1000000-4 143 ± 0% 122 ± 0% -14.69% (p=0.000 n=8+8) Change-Id: I4868adb7f8960f2ca20e7792734c2e6211669fc0 Reviewed-on: https://go-review.googlesource.com/75010Reviewed-by: Robert Griesemer <gri@golang.org>
-
Joe Kyo authored
Change-Id: I4542f6c095a35a4dec03c67c45a75a155197eb56 Reviewed-on: https://go-review.googlesource.com/74650Reviewed-by: Tom Bergan <tombergan@google.com>
-
David Chase authored
Recurse into structs/arrays of one element when assigning names. Test incorporated into existing end-to-end debugger test, hand-verified that it fails without this CL. Fixes #19868 Revives CL 40010 Old-Change-Id: I0266e58af975fb64cfa17922be383b70f0a7ea96 Change-Id: I122ac2375931477769ec8d763607c1ec42d78a7f Reviewed-on: https://go-review.googlesource.com/71731 Run-TryBot: David Chase <drchase@google.com> Reviewed-by: Heschi Kreinick <heschi@google.com> Reviewed-by: Keith Randall <khr@golang.org>
-
Alessandro Arzilli authored
Dsymutil, an utility used on macOS when externally linking executables, does not support base address selector entries in debug_ranges. To work around this deficiency this commit removes base address selectors from debug_ranges and emits instead a list composed only of compile unit relative addresses. A new type of relocation is introduced, R_ADDRCUOFF, similar to R_ADDROFF, that relocates an address to its offset from the low_pc of the symbol's compile unit. Fixes #21945 Change-Id: Ie991f9bc1afda2b49ac5d734eb41c37d3a37e554 Reviewed-on: https://go-review.googlesource.com/72371 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Heschi Kreinick <heschi@google.com>
-
Russ Cox authored
After this CL, "go vet" can be guaranteed to have complete type information about the packages being checked, even if cgo or swig is in use, which will in turn make it reasonable for vet checks to insist on type information. It also fixes vet's understanding of unusual import paths like relative paths and vendored packages. For now "go tool vet" will continue to cope without type information, but the eventual plan is for "go tool vet" to query the go command for what it needs, and also to be able to query alternate build systems like bazel. But that's future work. Fixes #4889. Fixes #12556 (if not already fixed). Fixes #15182. Fixes #16086. Fixes #17571. Change-Id: I932626ee7da649b302cd269b82eb6fe5d7b9f0f2 Reviewed-on: https://go-review.googlesource.com/74750Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Russ Cox authored
This CL adds support for accepting package config from the go command. Paired with CL 74356 this lets us make sure vet has complete information about package sources. This fixes many issues (see CL 74356 for the list), including mishandling of cgo and vendoring. Change-Id: Ia4a1dce6f9b1b0a8ef5fdf9005a20a8b294969f1 Reviewed-on: https://go-review.googlesource.com/74355 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Filippo Valsorda authored
Also, support spaces in go binaries locations, and document GOROOT_BOOTSTRAP at the top. Change-Id: I643d22df57aad9a2200cc256edd20e8c811bc70d Reviewed-on: https://go-review.googlesource.com/74951 Run-TryBot: Filippo Valsorda <hi@filippo.io> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Martin Möhrmann authored
The check of uintptr(newcap) > maxSliceCap(et.size) in addition to capmem > _MaxMem is needed to prevent a reproducible overflow on 32bit architectures. On 64bit platforms this problem is less likely to occur as allocation of a sufficiently large array or slice to be append is likely to already exhaust available memory before the call to append can be made. Example program that without the fix in this CL does segfault on 386: type T [1<<27 + 1]int64 var d T var s []T func main() { s = append(s, d, d, d, d) print(len(s), "\n") } Fixes #21586 Change-Id: Ib4185435826ef43df71ba0f789e19f5bf9a347e6 Reviewed-on: https://go-review.googlesource.com/55133 Run-TryBot: Martin Möhrmann <moehrmann@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Tobias Klauser authored
testing.Skip{,f} will exit the test via runtime.Goexit. Thus, the successive return is never reached and can be removed. Change-Id: I1e399f3d5db753ece1ffba648850427e1b4be300 Reviewed-on: https://go-review.googlesource.com/74990 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
-