{"push_id":661334954,"size":177,"distinct_size":3,"ref":"refs/heads/GC","head":"2b25450d623888aad1f10fe718c953289cd3e27d","before":"a2ce25f9869ce4c7bfe86cd7a3481401204c40c8","commits":[{"sha":"c2727a4b5e5e52e772744f261cfaed2638b86165","author":{"email":"25bde77e144fcca55ce01543af70cbcf516b8a17@microsoft.com","name":"Joseph Tremoulet"},"message":"Use correct helper to throw NullReferenceException\n\nNow that the helper to throw NullRefrenceException is available in the\nruntime, use that for null-checks.\n\nCloses #285","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/c2727a4b5e5e52e772744f261cfaed2638b86165"},{"sha":"c05c973916440d7b0539797522e4b198a95ffdc2","author":{"email":"6566d4ac644d552ecc4d7a106c3806f21b7ba0aa@microsoft.com","name":"Pat Gavlin"},"message":"Add an ABI abstraction for computing function signatures.\n\nLLVM's support for calling conventions does not handle aggregate\nparameters or return values in a way that is consistent with the\nrules for a particular calling convention. Instead of applying\nwhatever rules are particular to a given calling convention, it\nsimply recursively decomposes aggregates into a linear sequence\nof arguments of non-aggregate type. It is the frontend's\nresponsibility, then, to emit calls such that the backend will\nlower them appropriately for the target calling convention.\n\nPractically speaking, this means that the frontend must do the\nwork to determine how each argument to a function--aggregate or\notherwise--should be passed (e.g. directly/indirectly, as an\nexpanded series of arguments, etc.) when generating calls and\nfunction symbols. To this end, this change adds abstractions\nto encapsulate ABI information and compute argument and result\npassing information for a function signature (i.e. a calling\nconvention, result type, and argument types). These abstractions\nare then used to emit function calls, home method arguments, and\nreturn method results in a way that is compatible with the\nbackend.","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/c05c973916440d7b0539797522e4b198a95ffdc2"},{"sha":"e1219f98d31c1545a2f7a9aba5d89a190f0d1192","author":{"email":"b0f3f51d8d106eafa68beb64af628906d14dc803@gmail.com","name":"Pat Gavlin"},"message":"Merge pull request #394 from pgavlin/ABIInfo\n\nAdd an ABI abstraction for computing function signatures.","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/e1219f98d31c1545a2f7a9aba5d89a190f0d1192"},{"sha":"f3c1fba4aedfa9ba74cb57f8ea970d4850e44821","author":{"email":"8ca7188ad8d9b98e1ad5584704078fcf19aa7c78@gmail.com","name":"Joseph Tremoulet"},"message":"Merge pull request #405 from JosephTremoulet/FixNullRefHelper\n\nUse correct helper to throw NullReferenceException","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/f3c1fba4aedfa9ba74cb57f8ea970d4850e44821"},{"sha":"4058c27ed97929c2dfdf5387136588986726b5fc","author":{"email":"c890ac7c807a7bcf9e13b1db688c38a109db8565@microsoft.com","name":"Swaroop Sridhar"},"message":"Call JIT_GCPoll() runtime helper from gc.safepoint_poll()\n\ngc.safepoint_poll() helper required by Safepoint placement pass was an\nempty function. This change fixes this to call the correct runtime helper\nto perform the CLR GC Poll.\n\nThe current strategy is to use an unconditional call to the GCPoll helper.\nInlining the GCPoll helper is future work.\n\nIssue #32","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/4058c27ed97929c2dfdf5387136588986726b5fc"},{"sha":"7701ab14a9495542b4e4a9dd8f7eda782511ec98","author":{"email":"25bde77e144fcca55ce01543af70cbcf516b8a17@microsoft.com","name":"Joseph Tremoulet"},"message":"Add normalization for phi arguments\n\nThese don't match the normal 'i64 nnnnn' pattern because the type is given\njust once for the phi and each argument appears as '[ nnnn, %pred ]'.","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/7701ab14a9495542b4e4a9dd8f7eda782511ec98"},{"sha":"6e405dcfa86c61559d1a39d16efbcd06ba103237","author":{"email":"c890ac7c807a7bcf9e13b1db688c38a109db8565@microsoft.com","name":"Swaroop Sridhar"},"message":"Merge pull request #409 from swaroop-sridhar/call\n\nCall JIT_GCPoll() runtime helper from gc.safepoint_poll()","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/6e405dcfa86c61559d1a39d16efbcd06ba103237"},{"sha":"d86eab7da1f16ef068089fdf4243fe605e3a46a4","author":{"email":"25bde77e144fcca55ce01543af70cbcf516b8a17@microsoft.com","name":"Joseph Tremoulet"},"message":"Use llvm_unreachable instead of assert(false)\n\nThis avoids\n  warning C4715: 'ABIInfo::get' : not all control paths return a value","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/d86eab7da1f16ef068089fdf4243fe605e3a46a4"},{"sha":"76449c4301a52e5d5e65c31e3683e16fc5fa83b8","author":{"email":"293b4d95480886f72df8fadcd427f82f74c18be1@microsoft.com","name":"Rich Lander"},"message":"Correct name of OS X","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/76449c4301a52e5d5e65c31e3683e16fc5fa83b8"},{"sha":"4d0fb85fa792fb614338b889e72eb6d001cea78f","author":{"email":"8ca7188ad8d9b98e1ad5584704078fcf19aa7c78@gmail.com","name":"Joseph Tremoulet"},"message":"Merge pull request #410 from JosephTremoulet/FixWarning\n\nUse llvm_unreachable instead of assert(false)","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/4d0fb85fa792fb614338b889e72eb6d001cea78f"},{"sha":"5d328336f9e5728350ddfe16937276352f492116","author":{"email":"25bde77e144fcca55ce01543af70cbcf516b8a17@microsoft.com","name":"Joseph Tremoulet"},"message":"Factor out two IR maintenance helpers\n\nCreate helpers to split the block at the current insertion point and to\nreplace one instruction with another.  The logic to do this was inline in\ninsertConditionalPointBlock, but `invoke` insertion will need to do the\nsame things.","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/5d328336f9e5728350ddfe16937276352f492116"},{"sha":"977af5bea46d90895fbd93ae4b48112a1810eb36","author":{"email":"8ca7188ad8d9b98e1ad5584704078fcf19aa7c78@gmail.com","name":"Joseph Tremoulet"},"message":"Merge pull request #416 from JosephTremoulet/PointSplit\n\nFactor out two IR maintenance helpers","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/977af5bea46d90895fbd93ae4b48112a1810eb36"},{"sha":"329dc562e2ea92179a58c64df6f615cb24768b42","author":{"email":"8ca7188ad8d9b98e1ad5584704078fcf19aa7c78@gmail.com","name":"Joseph Tremoulet"},"message":"Merge pull request #415 from JosephTremoulet/NormalizePhi\n\nAdd normalization for phi arguments","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/329dc562e2ea92179a58c64df6f615cb24768b42"},{"sha":"a202dc85eac09af00aa1712b842944926247aff1","author":{"email":"c890ac7c807a7bcf9e13b1db688c38a109db8565@microsoft.com","name":"Swaroop Sridhar"},"message":"Precise GC: Bail early on managed aggregates\n\nPrecise GC using statepoints cannot handle aggregates that contain\nmanaged pointers yet. (Issue #33)\n\nSo, this change adds a check to the reader-postpass, which scans the\ngenerated IR if it contains values of managed-aggregate type.\nIf so, the compilation fails gracefully by throwing a NYI exception.\n\nThis check in ReaderIr.cpp is based on the assertion checks in\nRewriteStatepointsForGC.cpp.\n\n[Issue #32]","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/a202dc85eac09af00aa1712b842944926247aff1"},{"sha":"72cd23e25985b2e0f37a5713023d369dba194a06","author":{"email":"c890ac7c807a7bcf9e13b1db688c38a109db8565@microsoft.com","name":"Swaroop Sridhar"},"message":"Merge pull request #414 from swaroop-sridhar/check\n\nPrecise GC: Bail early on managed aggregates","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/72cd23e25985b2e0f37a5713023d369dba194a06"},{"sha":"f67ffa0aabbf43846d0bf3bf704aba416ed90dd8","author":{"email":"af3e4dd9d4eadafc95d2f5e1fe75bef0661e56b4@microsoft.com","name":"Bengu Li"},"message":"Add Python llilc_runtest script\n\nThis script runs CoreCLR test with specified LLILC JIT and pre-built\nCoreCLR runtime. If verbose level is specified, either summary or\nverbose, a result will be created in default location or a place\nthat is specified. In verbose case, the result will be normalized\nwith filter.\n\nIt is required to run this script from tests directory in a CoreCLR\nrepository.\n\nTo exclude undesired test cases, please edit exclusion file.\n\nusage: llilc_runtest.py [-h] [-a {x86,x64}] [-b {debug,release}]\n                        [-d {summary,verbose}] [-r RESULT_PATH] -j JIT_PATH -c\n                        CORECLR_RUNTIME_PATH\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -a {x86,x64}, --arch {x86,x64}\n                        the target architure\n  -b {debug,release}, --build {debug,release}\n                        release or debug build of CoreCLR run-time used\n  -d {summary,verbose}, --dump-level {summary,verbose}\n                        the dump level: summary, or verbose\n  -r RESULT_PATH, --result-path RESULT_PATH\n                        the path to runtest result output directory\n  -j JIT_PATH, --jit-path JIT_PATH\n                        full path to jit .dll\n  -c CORECLR_RUNTIME_PATH, --coreclr-runtime-path CORECLR_RUNTIME_PATH\n                        full path to CoreCLR run-time binary directory\n\nThis script assumes developer handles the work environment by themselves\nand CoreCLR test has been built.\n\nllilc_checkpass will follow.\n\nThis script is LLILC wrapper of underlying CoreCLR runtest which is\nnow still Windows only and about to get cross-platform. When that happens,\nthe implementation of this script will be updated accordingly. But the\ncommand line interface is intended to remain the same.","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/f67ffa0aabbf43846d0bf3bf704aba416ed90dd8"},{"sha":"72d20e97a7b1b611c54ce448a8b03933e8bd6da8","author":{"email":"a96234fe51920ba0e9a34bfce5dcb85e5c8dcdcd@microsoft.com","name":"Eugene Rozenfeld"},"message":"Process the flow graph in the order of MSIL offsets.\n\nThis is necessary to compute PHI types before processing their blocks.\nECMA-335 guarantees empty operand stacks on MSIL offset back edges.\n\nUpdate the reader document.\n\nRemove tail block if it's unreached.\n\nThis fixes all current verification errors in Roslyn build.","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/72d20e97a7b1b611c54ce448a8b03933e8bd6da8"},{"sha":"0b13d2010a1710d4851fcefa95b576dcf1429519","author":{"email":"af3e4dd9d4eadafc95d2f5e1fe75bef0661e56b4@microsoft.com","name":"Bengu Li"},"message":"Merge pull request #406 from libengu/RunTest\n\nAdd Python llilc_runtest script","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/0b13d2010a1710d4851fcefa95b576dcf1429519"},{"sha":"04bb281907355c9ab19e4e346d4246c46477cc7e","author":{"email":"a96234fe51920ba0e9a34bfce5dcb85e5c8dcdcd@microsoft.com","name":"Eugene Rozenfeld"},"message":"Merge pull request #413 from erozenfeld/MSILOffsetGraphOrder\n\nProcess the flow graph in the order of MSIL offsets.","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/04bb281907355c9ab19e4e346d4246c46477cc7e"},{"sha":"72ca60c812373d468e0fc2717a9adfbe9b936c2e","author":{"email":"a96234fe51920ba0e9a34bfce5dcb85e5c8dcdcd@microsoft.com","name":"Eugene Rozenfeld"},"message":"Use a normal call instead of an intrinsic for InitializeArray.\n\nThis gets us two more methods in HelloWorld.","distinct":false,"url":"https://api.github.com/repos/adiaaida/llilc/commits/72ca60c812373d468e0fc2717a9adfbe9b936c2e"}]}