swh:1:snp:a72e953ecd624a7df6e6196bbdd05851996c5e40

sort by:
Revision Author Date Message Commit Date
05c6b2b Extend code_typed to be able to debug constant prop I'm currently debugging code that uses a lot of arrays with dimensions in their type parameters. This type of code heavily relies on constant propagation to lift dimensions from the value domain into the type domain. Unfortunately, it's a bit hard to discover what exactly causes inference to drop information from constants, because there's no way to feed in constants for a particular invocation using code_typed. This is a quick hack to remidy that, by making `$`-interpolated expressions available as constants to type inference, e.g. ```julia julia> @code_typed 1+1 CodeInfo( 53 1 ─ %1 = (Base.add_int)(x, y)::Int64 └── return %1 ) => Int64 julia> @code_typed $(1)+$(1) CodeInfo( 53 1 ─ return 2 ) => Int64 ``` Additionally, this extends the same mechanism to apply to get/setproperty!, even in the absence of `$` for the symbol argument, reflecting their special casing inference. 09 October 2018, 04:02:18 UTC
cfc967b cleanup history file for generate_precompile (#29068) 06 October 2018, 14:48:46 UTC
62e9ba4 Update performance-tips.md (#29543) My apologies if this small edit is somewhere else waiting to be merged. I couldn't find it... 06 October 2018, 08:44:49 UTC
0a685d3 Turn some asserts into runtime traps instead Unfortunately, we cannnot always rely on :invokes to have argument values that match the declared ssa types (e.g. if the :invoke is dynamically unreachable). Because of that, we cannot assert here, but must instead emit a runtime trap. 06 October 2018, 03:10:31 UTC
cdddf35 Don't eliminate PiNodes for mismatched types E.g. if we had `PiNode(1, CartesianIndex)`, we would eliminate that because `1` was a constant. However, leaving this in allows the compiler to realize that this code is unreachable, as well as guarding codegen against having to wrok through invalid IR. 06 October 2018, 03:10:31 UTC
58dc4d1 add tests for new PartialTuple capabilities 06 October 2018, 03:10:31 UTC
55b500c Replace `InferenceResult` varargs hack with new inference lattice element for "partially constant" tuples Previously, we hacked in an additional `InferenceResult` field to store varargs type information in order to facilitate better constant propagation through varargs methods. There were many other places, however, where constants moving in/out of tuples/varargs thwarted constant propagation. This commit removes the varargs hack, replacing it with a new inference lattice element (`PartialTuple`) that represents tuples where some (but not all) of the elements are constants. This allows us to follow through with constant propagation in more situations involving tuple construction/destructuring, and also enabled a clean-up of the `InferenceResult` caching code. 06 October 2018, 03:10:31 UTC
ec574fb mul!, rmul! and lmul! methods for UniformScaling (#29506) * mul!, rmul! and lmul! methods for UniformScaling As per https://discourse.julialang.org/t/in-place-multiplication-methods-for-uniformscaling-type/15837 * Add tests and another mul! method 06 October 2018, 03:01:19 UTC
ea7b1a7 task: drop parent and module references (#29483) The parent link can unnecessarily hold memory references live, and the current-module function is gone. Their uses have been deprecated in favor of the macros @`__FILE__` and @`__MODULE__`. The `workspace()` function is also gone now, so we can remove the support code for it. To implement detection of broken incremental compilation (and help ensure the module is permanently rooted as is generally expected), keep track of all "open" modules in a hashtable (jl_current_modules). We can further refine this later, if desired (e.g. also allow any submodule and of any item in `jl_module_init_order`). Also removes the global `module_stack` state. This makes us a bit more robust to async module definition. We could perhaps do even more here, if necessary (e.g. by checking first that all parents are initialized, instead of just the direct ancestor). But this is hopefully a vanishingly rare situation anyways. 05 October 2018, 20:21:06 UTC
d461d56 Merge pull request #28368 from rbehrends/rb/gc-extensions GC Extensions 05 October 2018, 19:55:53 UTC
50c27fd one(::CartesianIndex) => oneunit(::CartesianIndex) (#29442) 05 October 2018, 11:14:26 UTC
1968b23 Add NEWS entry for #28156: add `splitpath(p)` (#29448) 05 October 2018, 06:49:18 UTC
3cc4b80 Fix a typo in parallel computing doc (#29521) 05 October 2018, 06:36:40 UTC
601ef78 Remove unecessary mention of Julia version in docs (#29519) fix #29510 05 October 2018, 06:35:17 UTC
0210b1d at-kwdef support for parametric types and subtypes (#29316) * at-kwdef support for parametric types and subtypes Fixes #29307. 05 October 2018, 04:32:58 UTC
7942395 Add a test for the task scanner. 05 October 2018, 00:48:19 UTC
8ff75ad Better dominators This commit replaces the naive algorithm for replacing dominator trees by a faster implementation based on the Semi-NCA algorithm (reference in the code comments). LLVM recently switched to this algorithm and found it to be faster in practice than SLT (which it used before). It is also slightly easier to implement. More importantly though, it should easily extend to dynamic dominators. This fixes the preformance problems in dominator construction noted in #25927 and should provide a basis for a dynamic dominator implementation to fix #29107. 05 October 2018, 00:15:29 UTC
83bc53b Add functionality to find a task's stack buffer. 04 October 2018, 23:40:11 UTC
37ab710 REPL: show "failed" when i-search fails, like in readline (#29413) The i-search prompt becomes for example: `(failed forward-i-search)`. 04 October 2018, 16:32:20 UTC
0f920ab Fix phinode rename bug during domsort Since the edge list of a phi may be incomplete with respect to predecessors, it is not safe to replace a one-value phi by its value, unless we know that there is only one predecessor. Remove the incorrect logic from domsort. We do also do the correct transformation in compaction right afterwards these days. 04 October 2018, 16:14:36 UTC
f9b9d85 Typo (#29482) 04 October 2018, 14:52:22 UTC
9280bfc REPL: make paste work in search mode (#29373) 04 October 2018, 14:00:32 UTC
32e3851 Use atomic operations to initialize conservative GC support. 04 October 2018, 13:59:53 UTC
62d9cde Copy mark stack struct to thread-local storage. Copying the mark stack struct instead of aliasing it ensures that structural replacement of aggregates for its members can still take place in the mark loop. 04 October 2018, 13:59:53 UTC
64b019d Rename gc_mark_sp_t to jl_gc_mark_sp_t 04 October 2018, 13:59:15 UTC
3821314 Improve comments for the GC extension functionality. 04 October 2018, 13:58:37 UTC
aadb507 Update GC extension tests. * Fix formatting. * Make tests work with 1.0.0. * Enable conservative support. 04 October 2018, 13:58:37 UTC
680cb7a Revise GC extensions implementation in accordance with code review. * Adjustments to conservative marking. * Remove symbol concatenation from gc_invoke_callbacks(). * Clean up handling of jl_buff_tag objects. * Add comments. * Fix formatting. 04 October 2018, 13:58:37 UTC
55c3c29 REPL: really fix #29347, searching a string not in history (#29412) 04 October 2018, 13:48:30 UTC
fa95de1 Use age bits to determine liveness for conservative marking. 04 October 2018, 13:46:16 UTC
68836e5 Revised support for conservative marking. 04 October 2018, 13:46:16 UTC
66c36d4 Add tests for the new GC extensions. 04 October 2018, 13:46:16 UTC
3adc378 Support optional conservative tracing of objects in the GC. 04 October 2018, 13:46:16 UTC
05cb43c Support the tracing of additional roots in the GC. 04 October 2018, 13:46:16 UTC
5b38be1 Support foreign types with custom mark and sweep functions. 04 October 2018, 13:40:09 UTC
2c751b8 Initial framework for Julia GC extensions. 04 October 2018, 13:38:19 UTC
60cff80 Merge pull request #29440 from JuliaLang/teh/colon_cartindex Add colon constructor for CartesianIndices 04 October 2018, 13:16:57 UTC
be0fceb Update README.md (#29514) Fixed typo 04 October 2018, 12:38:07 UTC
4fa7161 Fix NEWS-update.jl for cases of empty issues list 04 October 2018, 10:38:39 UTC
ba0add8 Add colon constructor for CartesianIndices See https://discourse.julialang.org/t/psa-replacement-of-ind2sub-sub2ind-in-julia-0-7/14666/6 and posts below it. 04 October 2018, 10:37:58 UTC
b8ca1a4 remove vestigial code related to (removed) custom inlining of `^` 04 October 2018, 03:29:41 UTC
5bc3de4 Minor English fixes (#29337) 04 October 2018, 01:34:52 UTC
7dd1e4c English fixes (#29336) 04 October 2018, 01:32:56 UTC
d02f4f0 fix a transitivity error in method specificity (#29405) 04 October 2018, 01:28:08 UTC
7cc9209 Add --project option to man page (#29497) 04 October 2018, 01:20:31 UTC
8b5f5da Allow :new constant inference in more cases Previously we allowed only bitstypes. However, it is legal to do so for and the current code works for all concrete immutables, so weaken the guarding condition appropriately here. 03 October 2018, 22:17:10 UTC
a984ad0 Fix #29451: parse(Int, s::AbstractString) when ncodeunits(s) > lastindex(s) (#29465) 03 October 2018, 21:45:04 UTC
6eb4921 Use recursion rather than iteration for error check in uncolon Inference has an easier time analyzing recursion (esp if structural over tuples) than iteration, which is why the rest of this function is using recursion. With sufficient inlining, LLVM does generally get rid of the extra error check and branch, but by switching to recursion, we make things easier on non-LLVM backends. 03 October 2018, 20:50:23 UTC
ea16391 fix #29468, bug in intersection of different-length vararg tuples (#29487) 03 October 2018, 20:12:45 UTC
37dc16e correct language in documentation (#29502) 03 October 2018, 18:41:36 UTC
db100ad More robust show for invalid CFG Despite the fact that the compiler should never generate invalid data structures, it is a good practice for the show functions to be able to handle these and indicate what the problem is. In this case, if the IR has more instructions than its supposed to according to the CFG, put all trailing instructions into a "!" basic block to indicate an error. 03 October 2018, 18:09:21 UTC
590ee83 Align StmtRange field names with UnitRange 03 October 2018, 18:09:21 UTC
434c065 move 1.0 news to HISTORY file; prepare NEWS file for 1.1 (#29490) [ci skip] 03 October 2018, 17:06:32 UTC
a897365 Upgrade to new Documenter. (#29470) 03 October 2018, 14:45:26 UTC
a9550d5 Removed unnecessary extra line (#29476) Line 73 cleared. 03 October 2018, 13:47:19 UTC
4412dd4 Add an option to disable building libssh2 tests These fail to build if mbedtls is not available in the global linker search path. Add a simple flag to disable them, since we don't use them. 03 October 2018, 01:06:14 UTC
59b6645 Still set rpath-link in RPATH_ESCAPED_ORIGIN We use this setting for linking curl, which itself needs to find libssh2 and mbedtls. However, while curl will indeed eventually be in the same directory as these two libraries, it is not during linking, causing link failures (unless we happen to have global copies of the same libraries that the linker can pick up). Add an rpath-link command with the absolute path to our library directory to make sure the dependent libraries get picked up at link time. 03 October 2018, 01:06:14 UTC
b0a37b5 Document scripting tips (#29423) 02 October 2018, 22:08:25 UTC
1f0f40f rm redundant `show` method for Enum types (#29460) 02 October 2018, 21:54:26 UTC
39117c9 tiny formatting fix on docs (#29463) C and Julia code were inside the same code block 02 October 2018, 16:45:30 UTC
dee7d77 Closed issue #29454 (#29475) Changed `String` to `BitSet` as a `mutable struct` example. 02 October 2018, 16:08:19 UTC
50e9275 fix unusual line spacing (#29474) 02 October 2018, 16:07:29 UTC
18652ea updated README.md (#29473) 02 October 2018, 16:06:48 UTC
9705c96 add elseif to reserved-words (#29222) 02 October 2018, 14:48:03 UTC
d769ad2 Merge pull request #13099 from JuliaLang/jn/no_copy_stacks no-copy stacks 02 October 2018, 12:41:41 UTC
a2df80e Don't error on help for keyword functions (#29308) Fixes #23991. Also allows for help where some arguments are undefined. 01 October 2018, 20:36:40 UTC
29b780e Improved English and egs (#29281) Improved English and egs The examples starting around line 80 showing how to create arrays with dimensions are unhelpful because in every case the dimensions are 2x2 so people don't get any sense of which dimension is which. So I've changed them all to 2x3 which doesn't take up any more vertical space but makes it much clearer which dimension is which. I don't like the Comprehensions example because the expression is much too complicated: the idea is to show comprehensions, so I think the expression should be a lot simpler. I changed the `searchsorted` eg to make the searched for number different from all the others to improve clarity. 01 October 2018, 18:39:47 UTC
2460b57 win,init: if stdio is not available, do not exit (#29374) Fix #28820 01 October 2018, 17:42:35 UTC
e721d35 slightly faster String allocation (#29254) Only a few % saved, but it essentially removes the cost of computing the sizeclass, so this should save on processor resources (frontend, BTP) also. And it makes the computation correct (previously the cutoff was slightly offset, so it would switch to the next larger size-class at 609 instead of at 624, for example). 01 October 2018, 15:53:31 UTC
61696f9 Merge pull request #29262 from JuliaLang/jn/interpret-phi interpreter: fix bugs with ssair phi-node handling 01 October 2018, 15:21:05 UTC
4851fab Merge pull request #29376 from JuliaLang/ksh/improvar Some improvements to variables and scoping manual 01 October 2018, 13:53:53 UTC
391f2dd Merge pull request #29446 from eli-schwartz/system-nondefault-llvm build: work correctly when linking to a system llvm which is not the default 01 October 2018, 00:58:50 UTC
f07d461 Allow eliminating nothrow intrinsics during optimization 30 September 2018, 23:59:04 UTC
d1fab72 build: work correctly when linking to a system llvm which is not the default It's erroneous to assume hardcoded -lLLVM works, when it will either not exist, or exist and be a symlink to -lLLVM-6.0, or exist and be a symlink to a completely invalid -lLLVM-7 Instead, use llvm-config for what it's meant to do, and acquire the linker --libs. In one case this means we can simplify on --libfiles rather than --libdir plus appending some hardcoded strings, and in another case we can simply drop a huge, confusingly repetitive invocation which was meant to work around very old llvm versions that are no longer supported. 30 September 2018, 19:30:53 UTC
ebfbe62 Add test for eliminating apply_type/TypeVar 30 September 2018, 17:33:18 UTC
8fa5296 Make TypeVar constructor a builtin Or more precisely make a builtin-equivalent of jl_new_typevar. This allows us to give it a proper nothrow tfunc, thus letting us eliminate it if it is not otherwise used. 30 September 2018, 17:33:18 UTC
f81749f Make apply_type nothrow tfunc more aggressive 30 September 2018, 17:33:18 UTC
2c86c1f Remove link missed in #26432 (#29434) 30 September 2018, 08:21:40 UTC
4d06e00 Merge pull request #29325 from JuliaLang/vc/restored check return from jl_restore_incremental correctly 30 September 2018, 01:52:30 UTC
f7f87c2 intrinsic casts: perform error checking (#29422) previously, we just let LLVM abort (even though this could potentially happen in dead-code). 29 September 2018, 22:36:48 UTC
8907aff Fix sentence fragment (#29431) Move whereas clause into subordinate position to avoid sentence fragment. 29 September 2018, 19:21:09 UTC
f42f7b7 fix #20872, handle UnionAll types in `which` (#29419) 29 September 2018, 19:20:25 UTC
9454c8d stdlib/SparseArrays: add rmul! and lmul! of sparse matrix with Diagonal (#29296) * Add rmul! and lmul! of sparse matrix with Diagonal 29 September 2018, 18:38:47 UTC
201cba5 Merge pull request #29341 from JuliaLang/sf/llvm_wasm Add `LLVM_EXPERIMENTAL_TARGETS` and default it to `WebAssembly` 29 September 2018, 14:01:36 UTC
75f798f Change from parametric T signature to Int32 in _ldexp_exp (#29401) __ldexp_exp(f) requires the second argument to be an Int32, so we might as well hard-code that here. It also seems that the old specification is actually not valid, or might have unexpected results, so we should just go with Int32, see #29400 . 29 September 2018, 13:17:09 UTC
3b3a163 avoid file ownership requirement in touch (#28819) Using `futimes` and passing NULL for the `times` parameter sets the current and access file times, but does not require file ownwership. From man page: > If times is NULL, the access and modification times are set to the current time. The caller must be the owner of the file, have permission to write the file, or be the superuser. 28 September 2018, 20:17:22 UTC
39f2561 interpreter: implement PhiC/Upsilon node handling 28 September 2018, 18:43:18 UTC
7638cb3 interpreter: redesign phi-node handling it is not valid to treat these like statements, since they are actually arguments to the basic block it turns out to be a bit hard to deal with this particular representation of phi nodes in an interpreter, since the information is spread out across multiple statements and could pop up at any time, but with some care, it is possible. we just need to be careful to process phi nodes as a block, and taking care to look for implicit edges. fix #29342 28 September 2018, 18:43:18 UTC
e2fb8d6 interpreter: fix bug with ssair phi-node handling 28 September 2018, 18:43:18 UTC
f93c6ef improve compiler performance somehow these were missed in the last round of `nospecialize` annotations in this file, but these are also very important for compiler performance (especially as we have now been adding more places where we inspect tuples with this method) 28 September 2018, 18:43:18 UTC
e1f42b1 fix `sizeof(str::AbstractString)` docstring (#29414) 28 September 2018, 17:52:46 UTC
6794778 fix #29208, incorrect `Union{}` result from type intersection (#29380) also fixes #29357 28 September 2018, 17:51:02 UTC
bc34c64 improve findnext/findprev docstring for strings (#29415) 28 September 2018, 17:48:58 UTC
ba41f69 doc: fix not-true-anymore example with promote_rule (#29416) 28 September 2018, 17:48:39 UTC
47668c8 Remove docstring relicts of findlast/findprev for regex (#29398) 27 September 2018, 20:57:15 UTC
8d5c109 Minor English fixes/improvements (#29391) 27 September 2018, 15:17:51 UTC
da964d6 Add SHA to UUIDs dependencies in Project.toml (#29375) A dependency on SHA was added to UUIDs in #28761 but the Project.toml was not updated to reflect that, resulting in warnings while building Julia. 26 September 2018, 21:54:19 UTC
4020729 Some improvements to variables and scoping manual 26 September 2018, 18:26:44 UTC
8eca2c2 UUIDs: add uuid5 function (#28761) This function matches Python and Rust behavior but does not match the `uuidgen` command-line tool. 26 September 2018, 17:58:59 UTC
493068b fix crash when interpreting optimized top-level expressions (#29217) 26 September 2018, 17:03:57 UTC
back to top