-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Type inference prototype based on static analysis #92
base: develop
Are you sure you want to change the base?
Commits on Jun 18, 2016
-
Adds BranchNode for easy operation on branches
Also branch optimization technique is proposed, however it is currently lead to a malformed graph Issue: #32
Configuration menu - View commit details
-
Copy full SHA for cd3ffe7 - Browse repository at this point
Copy the full SHA cd3ffe7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0e68d06 - Browse repository at this point
Copy the full SHA 0e68d06View commit details -
Configuration menu - View commit details
-
Copy full SHA for 113bed0 - Browse repository at this point
Copy the full SHA 113bed0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1688a7d - Browse repository at this point
Copy the full SHA 1688a7dView commit details -
Refactors GraphWalker to use node colors
This allows us to classify graph edges during graph walk.
Configuration menu - View commit details
-
Copy full SHA for 90b42b2 - Browse repository at this point
Copy the full SHA 90b42b2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1dba10d - Browse repository at this point
Copy the full SHA 1dba10dView commit details -
Configuration menu - View commit details
-
Copy full SHA for b77dd54 - Browse repository at this point
Copy the full SHA b77dd54View commit details -
Configuration menu - View commit details
-
Copy full SHA for c91b043 - Browse repository at this point
Copy the full SHA c91b043View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8dcb48f - Browse repository at this point
Copy the full SHA 8dcb48fView commit details -
Configuration menu - View commit details
-
Copy full SHA for d4a7be7 - Browse repository at this point
Copy the full SHA d4a7be7View commit details -
Fixes tau optimizer by handling nodes by pairs
Previous version of optimizer merged taus incorrectly. Method which produced error was Interval>>do: Producer1 \ { Aggregator <- Consumer } x 3 / Producer2 \ { Aggregator <- Consumer } x 3 Producer3 / Correct solution should be Producer1 \ / Consumer1 Aggregator - Consumer2 / \ Consumer3 Producer2 \ / Consumer4 Aggregator - Consumer5 Producer3 / \ Consumer6 but due to incorrect handling of pending nodes lists algorithm yielded the following result: Producer1 \ Producer2 - Aggregator <- Consumer x 6 Producer3 / So there was a single aggregator node that was referred by all six consumers.
Configuration menu - View commit details
-
Copy full SHA for 119c38f - Browse repository at this point
Copy the full SHA 119c38fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6c9105b - Browse repository at this point
Copy the full SHA 6c9105bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0b67873 - Browse repository at this point
Copy the full SHA 0b67873View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2fcf67e - Browse repository at this point
Copy the full SHA 2fcf67eView commit details -
Fixes graph linker in case of assign node first in the domain
AssignX instructions leave their argument on the stack. That was causing problems during processing of argument requests.
Configuration menu - View commit details
-
Copy full SHA for 7e70c0d - Browse repository at this point
Copy the full SHA 7e70c0dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 61a2543 - Browse repository at this point
Copy the full SHA 61a2543View commit details -
Configuration menu - View commit details
-
Copy full SHA for ec1644c - Browse repository at this point
Copy the full SHA ec1644cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5b3a637 - Browse repository at this point
Copy the full SHA 5b3a637View commit details -
Configuration menu - View commit details
-
Copy full SHA for 44a1370 - Browse repository at this point
Copy the full SHA 44a1370View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3ac8c0a - Browse repository at this point
Copy the full SHA 3ac8c0aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 97ea0cb - Browse repository at this point
Copy the full SHA 97ea0cbView commit details -
Configuration menu - View commit details
-
Copy full SHA for d6db564 - Browse repository at this point
Copy the full SHA d6db564View commit details -
Adds order, comparison and composition operators to the Type
It allows to compare any two types, store them in STL container such as std::set, use them as a key in std::map and use composition operators during type inference procedure. Operator | is a disjunction-like operator used to get sum of several possible types within a type. For example: 2 | 2 -> 2 2 | 3 -> (2, 3) 2 | * -> (2, *) (Object) | (SmallInt) -> ((Object), (SmallInt)) This operator may be used to aggregate possible types within a linear sequence where several type outcomes are possible: x <- y isNil ifTrue: [ nil ] ifFalse: [ 42 ]. In this case x will have composite type (nil, 42). On the other hand, when dealing with loops we need some kind of a reduction operator that will act as a conjunction: 2 & 2 -> 2 2 & 3 -> (SmallInt) 2 & (SmallInt) -> (SmallInt) <any type> & * -> * (SmallInt) & (Object) -> * This operator is used during induction run of the type analyzer to prove that variable does not leave it's local type domain, i.e it's type is not reduced to a *. Issue: #17
Configuration menu - View commit details
-
Copy full SHA for 3a66f0c - Browse repository at this point
Copy the full SHA 3a66f0cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1cc3e65 - Browse repository at this point
Copy the full SHA 1cc3e65View commit details -
Adds meta information to control graph
Meta info is very useful during type analysis. It helps to make decisions based on graph structure. In future, more flags will be added. Issue: #17
Configuration menu - View commit details
-
Copy full SHA for 12d5460 - Browse repository at this point
Copy the full SHA 12d5460View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6c8a069 - Browse repository at this point
Copy the full SHA 6c8a069View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3adc4dc - Browse repository at this point
Copy the full SHA 3adc4dcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4a921d9 - Browse repository at this point
Copy the full SHA 4a921d9View commit details -
Configuration menu - View commit details
-
Copy full SHA for d53e50d - Browse repository at this point
Copy the full SHA d53e50dView commit details -
Adds temporary solution for several SmallInt primitives
This code need to be refactored properly. In case if both operands are literal, then result may be defined as literal too. Otherwise primitive should "fail" by allowing control flow to pass further. For literal calculation it is best to use existing code for software VM. Issue: #17
Configuration menu - View commit details
-
Copy full SHA for 998d38a - Browse repository at this point
Copy the full SHA 998d38aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 752e88e - Browse repository at this point
Copy the full SHA 752e88eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4e40ce8 - Browse repository at this point
Copy the full SHA 4e40ce8View commit details -
Configuration menu - View commit details
-
Copy full SHA for f83fa6a - Browse repository at this point
Copy the full SHA f83fa6aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8c9cf68 - Browse repository at this point
Copy the full SHA 8c9cf68View commit details -
Configuration menu - View commit details
-
Copy full SHA for ed3415a - Browse repository at this point
Copy the full SHA ed3415aView commit details -
Configuration menu - View commit details
-
Copy full SHA for d92e33f - Browse repository at this point
Copy the full SHA d92e33fView commit details -
Configuration menu - View commit details
-
Copy full SHA for a5bc8c5 - Browse repository at this point
Copy the full SHA a5bc8c5View commit details -
Configuration menu - View commit details
-
Copy full SHA for b3953db - Browse repository at this point
Copy the full SHA b3953dbView commit details -
Configuration menu - View commit details
-
Copy full SHA for ec073fd - Browse repository at this point
Copy the full SHA ec073fdView commit details -
Collects graph meta info during graph construction
This information is very useful during type inference. It may be gathered on-demand, but that would require additional pass. It is very cheap to collect meta info on the fly, so why not? Issue: #17
Configuration menu - View commit details
-
Copy full SHA for cae2904 - Browse repository at this point
Copy the full SHA cae2904View commit details -
Configuration menu - View commit details
-
Copy full SHA for c7036a5 - Browse repository at this point
Copy the full SHA c7036a5View commit details -
std::set here is an overkill. Index arrays are at most 10 entries big, unique vector is ok here. Issue: #17
Configuration menu - View commit details
-
Copy full SHA for 92cf908 - Browse repository at this point
Copy the full SHA 92cf908View commit details -
Configuration menu - View commit details
-
Copy full SHA for cc62ba0 - Browse repository at this point
Copy the full SHA cc62ba0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 37677b7 - Browse repository at this point
Copy the full SHA 37677b7View commit details -
Adds inference of the captured context
This logic provides a way to propagate captured context to the block across the call stack and collect types of the temporary variables that may be assigned in the closure block. This information will be used to update the method's control flow graph and introduce nontrivial tau nodes. Issue: #17
Configuration menu - View commit details
-
Copy full SHA for c6003e6 - Browse repository at this point
Copy the full SHA c6003e6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5a8c692 - Browse repository at this point
Copy the full SHA 5a8c692View commit details -
Configuration menu - View commit details
-
Copy full SHA for c0f7a53 - Browse repository at this point
Copy the full SHA c0f7a53View commit details -
Configuration menu - View commit details
-
Copy full SHA for bc2eb8e - Browse repository at this point
Copy the full SHA bc2eb8eView commit details -
Configuration menu - View commit details
-
Copy full SHA for d2e3ada - Browse repository at this point
Copy the full SHA d2e3adaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8536cb3 - Browse repository at this point
Copy the full SHA 8536cb3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2ca6f8d - Browse repository at this point
Copy the full SHA 2ca6f8dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4b13dbb - Browse repository at this point
Copy the full SHA 4b13dbbView commit details -
Configuration menu - View commit details
-
Copy full SHA for ed47820 - Browse repository at this point
Copy the full SHA ed47820View commit details -
Configuration menu - View commit details
-
Copy full SHA for f78ba24 - Browse repository at this point
Copy the full SHA f78ba24View commit details
Commits on Jun 19, 2016
-
Configuration menu - View commit details
-
Copy full SHA for a612201 - Browse repository at this point
Copy the full SHA a612201View commit details
Commits on Jun 20, 2016
-
Configuration menu - View commit details
-
Copy full SHA for d3d9262 - Browse repository at this point
Copy the full SHA d3d9262View commit details -
Configuration menu - View commit details
-
Copy full SHA for 197197b - Browse repository at this point
Copy the full SHA 197197bView commit details
Commits on Jun 23, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 9b79157 - Browse repository at this point
Copy the full SHA 9b79157View commit details -
Configuration menu - View commit details
-
Copy full SHA for 649ebe7 - Browse repository at this point
Copy the full SHA 649ebe7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6a0b389 - Browse repository at this point
Copy the full SHA 6a0b389View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5fd6a7d - Browse repository at this point
Copy the full SHA 5fd6a7dView commit details
Commits on Jun 24, 2016
-
Configuration menu - View commit details
-
Copy full SHA for aa90705 - Browse repository at this point
Copy the full SHA aa90705View commit details
Commits on Jun 26, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 881c62b - Browse repository at this point
Copy the full SHA 881c62bView commit details -
Configuration menu - View commit details
-
Copy full SHA for c08afa6 - Browse repository at this point
Copy the full SHA c08afa6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 663dd9c - Browse repository at this point
Copy the full SHA 663dd9cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 93142ef - Browse repository at this point
Copy the full SHA 93142efView commit details
Commits on Jun 28, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 06b52e4 - Browse repository at this point
Copy the full SHA 06b52e4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0f311b1 - Browse repository at this point
Copy the full SHA 0f311b1View commit details -
Configuration menu - View commit details
-
Copy full SHA for c856ee5 - Browse repository at this point
Copy the full SHA c856ee5View commit details -
Configuration menu - View commit details
-
Copy full SHA for ecfb6a2 - Browse repository at this point
Copy the full SHA ecfb6a2View commit details
Commits on Jul 1, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 3f85065 - Browse repository at this point
Copy the full SHA 3f85065View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0bf6f42 - Browse repository at this point
Copy the full SHA 0bf6f42View commit details -
Configuration menu - View commit details
-
Copy full SHA for 15d4d04 - Browse repository at this point
Copy the full SHA 15d4d04View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5b7bcb5 - Browse repository at this point
Copy the full SHA 5b7bcb5View commit details -
Adds special handling of messages that do not return normally
Some methods like Object>>error: do not return a value in a usual way. In that case control flow is interrupted and all call chain aborts. Type analyzer uses an empty composite type () to mark such special case. Please note that () is not equal to * or ? types that still return a value. Issue: #17 Issue: #92
Configuration menu - View commit details
-
Copy full SHA for 8290467 - Browse repository at this point
Copy the full SHA 8290467View commit details
Commits on Jul 2, 2016
-
Configuration menu - View commit details
-
Copy full SHA for ce9f0b7 - Browse repository at this point
Copy the full SHA ce9f0b7View commit details
Commits on Jul 5, 2016
-
Configuration menu - View commit details
-
Copy full SHA for d74c752 - Browse repository at this point
Copy the full SHA d74c752View commit details -
Configuration menu - View commit details
-
Copy full SHA for 31ff87f - Browse repository at this point
Copy the full SHA 31ff87fView commit details
Commits on Jul 9, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 63aacb2 - Browse repository at this point
Copy the full SHA 63aacb2View commit details -
Refactors inference.h by namespaces by adding explicit st:: prefix
Configuration menu - View commit details
-
Copy full SHA for eb8eeb9 - Browse repository at this point
Copy the full SHA eb8eeb9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 40eb706 - Browse repository at this point
Copy the full SHA 40eb706View commit details
Commits on Jul 10, 2016
-
Configuration menu - View commit details
-
Copy full SHA for c6385ad - Browse repository at this point
Copy the full SHA c6385adView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3fc7659 - Browse repository at this point
Copy the full SHA 3fc7659View commit details
Commits on Jul 17, 2016
-
Configuration menu - View commit details
-
Copy full SHA for cc2e736 - Browse repository at this point
Copy the full SHA cc2e736View commit details -
Configuration menu - View commit details
-
Copy full SHA for f2c78e3 - Browse repository at this point
Copy the full SHA f2c78e3View commit details -
Configuration menu - View commit details
-
Copy full SHA for cf7d822 - Browse repository at this point
Copy the full SHA cf7d822View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9d39182 - Browse repository at this point
Copy the full SHA 9d39182View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5263fe0 - Browse repository at this point
Copy the full SHA 5263fe0View commit details -
Configuration menu - View commit details
-
Copy full SHA for c9af814 - Browse repository at this point
Copy the full SHA c9af814View commit details -
Configuration menu - View commit details
-
Copy full SHA for 15a7e2a - Browse repository at this point
Copy the full SHA 15a7e2aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3daecdb - Browse repository at this point
Copy the full SHA 3daecdbView commit details
Commits on Jul 21, 2016
-
Configuration menu - View commit details
-
Copy full SHA for f17ef79 - Browse repository at this point
Copy the full SHA f17ef79View commit details -
Adds special handling of dynamically inferred blocks
Unlike statically inferred block, dynamic ones need to create and carry their closure environment. Two blocks with the same set of argument types may have different closure types even if their closure context is the same. We add closure types to a dynamic block's cache key and to block function name to disambiguate calls. Issue: #17 Issue: #92
Configuration menu - View commit details
-
Copy full SHA for ee7d469 - Browse repository at this point
Copy the full SHA ee7d469View commit details -
Configuration menu - View commit details
-
Copy full SHA for a532ac0 - Browse repository at this point
Copy the full SHA a532ac0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9741b46 - Browse repository at this point
Copy the full SHA 9741b46View commit details -
Configuration menu - View commit details
-
Copy full SHA for 206db1c - Browse repository at this point
Copy the full SHA 206db1cView commit details
Commits on Jul 25, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 33f4452 - Browse repository at this point
Copy the full SHA 33f4452View commit details -
Configuration menu - View commit details
-
Copy full SHA for fc6d1dd - Browse repository at this point
Copy the full SHA fc6d1ddView commit details
Commits on Aug 2, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 878db08 - Browse repository at this point
Copy the full SHA 878db08View commit details
Commits on Aug 6, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 6a1167e - Browse repository at this point
Copy the full SHA 6a1167eView commit details
Commits on Aug 12, 2016
-
Configuration menu - View commit details
-
Copy full SHA for aefcc90 - Browse repository at this point
Copy the full SHA aefcc90View commit details
Commits on Aug 13, 2016
-
Configuration menu - View commit details
-
Copy full SHA for 63f134e - Browse repository at this point
Copy the full SHA 63f134eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 62019e7 - Browse repository at this point
Copy the full SHA 62019e7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 033a3e8 - Browse repository at this point
Copy the full SHA 033a3e8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 34c1048 - Browse repository at this point
Copy the full SHA 34c1048View commit details