Commit Graph

1638 Commits

Author SHA1 Message Date
Dmitri Gribenko
51ce68ce0f Fix benchmarks after Optional.None => .none rename 2016-02-20 00:55:35 -08:00
Max Moiseev
40b1a0b7e0 [stdlib] all sorts of require renamed back to precondition 2016-02-19 18:21:29 -08:00
Nadav Rotem
5df42b7f91 Track the performance of calls to protocol methods.
rdar://22704464.
2016-02-19 16:48:29 -08:00
practicalswift
9b13c664cd [Python] Python class names should be CamelCase:d by convention 2016-02-19 21:28:51 +01:00
Dmitri Gribenko
98561f6137 stdlib: joinWithSeparator(_:) => join(separator:) 2016-02-18 22:30:57 -08:00
Luke Larson
784f18f605 [benchmark] Remove empty directory 2016-02-18 15:06:57 -08:00
John McCall
e3e107b46a Teach IRGen how to derive associated type data for non-primary archetypes.
NFC for now because we're aggressively fulfilling associated type data.
2016-02-18 14:08:28 -08:00
Dmitri Gribenko
189f6c4b63 Remove an accidental commit 2016-02-18 02:57:14 -08:00
John McCall
e249fd680e Destructure result types in SIL function types.
Similarly to how we've always handled parameter types, we
now recursively expand tuples in result types and separately
determine a result convention for each result.

The most important code-generation change here is that
indirect results are now returned separately from each
other and from any direct results.  It is generally far
better, when receiving an indirect result, to receive it
as an independent result; the caller is much more likely
to be able to directly receive the result in the address
they want to initialize, rather than having to receive it
in temporary memory and then copy parts of it into the
target.

The most important conceptual change here that clients and
producers of SIL must be aware of is the new distinction
between a SILFunctionType's *parameters* and its *argument
list*.  The former is just the formal parameters, derived
purely from the parameter types of the original function;
indirect results are no longer in this list.  The latter
includes the indirect result arguments; as always, all
the indirect results strictly precede the parameters.
Apply instructions and entry block arguments follow the
argument list, not the parameter list.

A relatively minor change is that there can now be multiple
direct results, each with its own result convention.
This is a minor change because I've chosen to leave
return instructions as taking a single operand and
apply instructions as producing a single result; when
the type describes multiple results, they are implicitly
bound up in a tuple.  It might make sense to split these
up and allow e.g. return instructions to take a list
of operands; however, it's not clear what to do on the
caller side, and this would be a major change that can
be separated out from this already over-large patch.

Unsurprisingly, the most invasive changes here are in
SILGen; this requires substantial reworking of both call
emission and reabstraction.  It also proved important
to switch several SILGen operations over to work with
RValue instead of ManagedValue, since otherwise they
would be forced to spuriously "implode" buffers.
2016-02-18 01:26:28 -08:00
Dmitri Gribenko
dd75aed67a Merge remote-tracking branch 'origin/master' into swift-3-api-guidelines 2016-02-17 14:40:05 -08:00
Dmitri Gribenko
624461f242 wip 2016-02-15 23:48:02 -08:00
Dmitri Gribenko
efaa39ea79 stdlib: add first argument labels and some other changes to conform to API guidelines 2016-02-15 23:47:54 -08:00
Luke Larson
d4ece4b4d0 [benchmark] Correctly depend on stdlib targets 2016-02-15 17:22:07 -08:00
Max Moiseev
3a3984877a Merge remote-tracking branch 'origin/master' into swift-3-api-guidelines 2016-02-15 15:43:34 -08:00
practicalswift
1ddf6b50ad [gardening] Remove double spaces in newly introduced code. 2016-02-14 12:45:48 +01:00
Nadav Rotem
73df70e57f Merge pull request #1294 from dgrove-oss/benchmark-sequential-integrate
Add sequential variant of Integrate benchmark
2016-02-12 17:58:48 -08:00
David Grove
8fa5378cbe Add sequential variant of Integrate benchmark
A simple recursive divide and conquer algorithm
whose parallel variant is often used to assess
scheduling overheads in dynamic task-based runtimes.
2016-02-12 17:32:27 -05:00
practicalswift
85e29caac8 [gardening] Fix recently introduced typo: "apend" → "append" 2016-02-12 23:29:25 +01:00
practicalswift
87bcd45c9e [Python] Fix recently introduced PEP 8 regressions.
After this commit:

$ flake8
$

(No PEP 8 warnings or errors left in the repo.)
2016-02-10 22:23:49 +01:00
Luke Larson
b606297f83 [benchmark] Correct perf_test_driver class name 2016-02-10 12:02:39 -08:00
Daniel Duan
993fd5cc6e use keyword "associatedtype" in benchmark code 2016-02-10 00:55:55 -08:00
lplarson
15d94d1595 Merge pull request #1234 from practicalswift/benchmark-pep8-fixes
[Python] Bring new code in line with subset of PEP 8 used in project
2016-02-09 18:49:19 -08:00
Nadav Rotem
732f38447b [Benchmark] Add a new test to the test suite. 2016-02-09 16:36:59 -08:00
Luke Larson
2c62011276 [benchmark] Don't hard code directory structure 2016-02-09 15:21:05 -08:00
Nadav Rotem
0188d27937 Add a short description to the benchmark. 2016-02-09 11:50:38 -08:00
Nadav Rotem
115274fe42 [Benchmark] Add a test that checks the performance of protocol conformance. 2016-02-09 11:35:29 -08:00
practicalswift
e678f7a141 [gardening] Fix recently introduced typos 2016-02-09 14:18:10 +01:00
Michael Gottesman
8093134b8f [perf-test] [cmake] Refactor out arch/optset specific code from swift_benchmark_compile into swift_benchmark_compile_archopts. 2016-02-08 15:07:12 -08:00
Michael Gottesman
c01c70342d [perf-test] [cmake] Rename add-swift-benchmark-suite.cmake => AddSwiftBenchmarkSuite.cmake to match the current naming scheme of cmake modules in swift/llvm. 2016-02-08 14:45:59 -08:00
Michael Gottesman
1c2f40e246 [perf-test] Add in the Benchmark_DTrace driver.
This and the associated *.d file can be used to determine dynamic
retain/release counts over the perf test suite.
2016-02-08 14:35:47 -08:00
practicalswift
576ef29629 [Python] Fix redundant list comprehensions in recently introduced code. 2016-02-08 20:54:20 +01:00
practicalswift
a7cbdb4ea5 Bring new Python code in line with subset of PEP 8 used in project. 2016-02-08 20:42:19 +01:00
Luke Larson
0356ec8ec3 Add Swift Benchmark Suite 2016-02-08 10:47:58 -08:00
Dmitri Gribenko
3bc99c7913 bulid-script: simplify code and use more idiomatic variable names 2015-12-19 21:28:35 -08:00
Luke Larson
5d1c6e16a0 [build-script] Support perf tests on additional platforms 2015-12-10 14:54:59 -08:00
Michael Gottesman
b88b701b73 [cmake] Do not attempt to include the perf test suite by default 2015-11-03 07:11:39 -08:00
Ted Kremenek
bd7b963efa Include full checking for performance test suite. 2015-11-02 20:46:59 -08:00
Michael Gottesman
f14e75c2ea Enable the perf test suite to be imported if it is checked out. This is a stop gap measure to make it easier to run tests. 2015-11-02 18:29:18 -08:00