Граф коммитов

525 Коммитов

Автор SHA1 Сообщение Дата
Joseph Tremoulet ab87f80359 Merge pull request #446 from JosephTremoulet/RootRegion
Annotate root region as covering entire method
2015-04-16 18:03:02 -04:00
Joseph Tremoulet c6b9d41dae Merge pull request #445 from JosephTremoulet/PreservePropagates
Preserve stack-propagating-ness in fgSplitBlock
2015-04-16 16:55:34 -04:00
Joseph Tremoulet a5478f0f0d Merge pull request #444 from JosephTremoulet/SplitPointBlock
Allow splitting point blocks in splitCurrentBlock
2015-04-16 16:48:12 -04:00
Joseph Tremoulet e366ee34d8 Merge pull request #443 from JosephTremoulet/ExplicitPoint
Allow explicit offset argument to createPointBlock
2015-04-16 16:44:54 -04:00
Joseph Tremoulet 97e648796f Allow blocks to have zero stack-propagating preds
Update `maintainOperandStacks` and new block processing in `msilToIR` to
accomodate this.  Some EH-related blocks will have only exception dispatch
point blocks as predecessors.
2015-04-16 13:39:24 -07:00
Joseph Tremoulet a95743cbd8 Merge pull request #442 from JosephTremoulet/CreateStack
Move initial capacity calculation into createStack
2015-04-16 16:37:06 -04:00
Pat Gavlin 20f7585ce0 Fix a number of warnings from clang.
- Remove unused __cdecl attributes where necessary
- Change a zero-sized array to a one-sized array; 0-sized arrays are not
  standard C++
- Give names to two anonymous structs in ntimage.h
2015-04-16 13:29:39 -07:00
Russell C Hadley 80ef8ce3ce Merge pull request #439 from russellhadley/RemoveGlobalDumpLevel
Remove global dumpLevel routine.
2015-04-16 13:09:12 -07:00
Joseph Tremoulet b31094b56a Add __pycache__ to .gitignore
Python creates test/__pycache__ as a side-effect of running
test/llilc_runtests.py.
2015-04-16 12:52:19 -07:00
Joseph Tremoulet c56f3703f6 Remove `beginfinally` intrinsic from EH plans
The LLVM plan is actually that filter invocations must be included in the
possible side-effects of calls that may throw exceptions.  That plan
should work for LLILC as well.
2015-04-16 15:47:59 -04:00
Andy Ayers c0c42bbe99 Merge pull request #437 from AndyAyersMS/Doc10
Some doxygen updates.
2015-04-16 12:34:18 -07:00
Joseph Tremoulet 39b3434e7a Allow explicit offset argument to createPointBlock
This allows creating point blocks for points other than CurrInstrOffset
2015-04-16 15:03:36 -04:00
rhadley 17355a369f Remove global dumpLevel routine.
The global dumpLevel routine was left in the code by a mistaken merge.  This change just removes the dead code.
2015-04-16 10:43:08 -07:00
Andy Ayers e7c58656cd Some doxygen updates.
Documented reader.h's flow graph interface. Trimmed out some of the options that we'll never use, as well as a couple of useless helpers. Fix some typos.
2015-04-16 09:28:53 -07:00
Joseph Tremoulet aa5a80cfac Annotate root region as covering entire method
Without this, we were leaving its start and end offsets both set to zero,
which makes it appear not to contain its children and confuses things.
2015-04-16 09:07:00 -07:00
Joseph Tremoulet a42b3a011c Allow splitting point blocks in splitCurrentBlock
Check for the case that the current block is a point block for point
CurrInstrOffset; in that case, using NextInstrOffset for the split would
extend the block's range, so preserve the smaller end offset.
2015-04-16 09:06:26 -07:00
Joseph Tremoulet 664425732d Preserve stack-propagating-ness in fgSplitBlock
If we're splitting a block that we've already marked as not propagating
stack (i.e. a point block), preserve that annotation on the newly-created
tail block (since it represents the same flow point as exit from the
original block).  The bit is left set on the original block (which becomes
the head); it's up to the caller to know why it's splitting the block here
and whether stack is propagated at this split point.
2015-04-16 09:05:43 -07:00
Joseph Tremoulet b0c5e22d67 Rename CallBlock -> PointBlock
The old name is a vestige of when this code used to specifically deal with
calls, instead of generally dealing with point blocks.
2015-04-16 09:00:47 -07:00
Joseph Tremoulet df17da88c6 Move initial capacity calculation into createStack
We were using the same calculation at all callsites, so just remove the
parameter and do the calculation in the method itself; this simplifies
adding new callsites.

Also remove the ReaderBase parameter, since it's always the same as the
instance pointer.
2015-04-16 08:59:40 -07:00
Pat Gavlin c7d2d724d2 Merge pull request #435 from pgavlin/UTF16
Fix some wide string issues in JIT options.
2015-04-15 20:12:30 -07:00
Eugene Rozenfeld ab9d0027b7 Merge pull request #434 from phomes/master
Code cleanup
2015-04-15 17:58:47 -07:00
Pat Gavlin 3f7c22f2bd Fix some wide string issues in JIT options.
On *Nix platforms, a `wchar_t` is actually a UTF-32 codepoint; on Windows,
it is a UTF-16 codepoint. Thus, when the CLR headers say `wchar_t`, what
they actually mean is `char16_t`. Fix the JIT options code to deal in
UTF-16 strings on all platforms.
2015-04-15 17:35:50 -07:00
Thomas Hindoe Paaboel Andersen 1d2c8f46e1 Code cleanup
* Remove a few unused variables
* Remove dead assignments
2015-04-15 23:34:10 +02:00
Pat Gavlin e8e4495c77 Merge pull request #433 from pgavlin/LinuxBuild
Fix the Linux build and some style issues.
2015-04-15 13:54:25 -07:00
Pat Gavlin f648e2e213 Fix the Linux build and some style issues.
- The PAL definitions we need from CoreCLR moved out of libcoreclr and
  into libcoreclrpal. Update CMakeLists accordingly.
- The JIT options sources were inconsistent with the rest of the code
  w.r.t. the use of the `this` pointer and were missing copyright
  headers.
2015-04-15 11:38:11 -07:00
Russell C Hadley 28114642b9 Merge pull request #429 from gitter-badger/gitter-badge
Add a Gitter chat badge to README.md
2015-04-15 07:06:13 -07:00
The Gitter Badger 5ac8141962 Added Gitter badge 2015-04-15 13:49:49 +00:00
Pat Gavlin 6cc265252f Merge pull request #427 from mewpull/master
Improve documentation, as described below.
2015-04-14 07:36:01 -07:00
mewmew 4881807a07 Improve documentation, as described below.
* Fix broken fragment identifiers.
* Use relative links when possible.
* Remove unused {#mainpage} from index.md
* Use consistent formatting for subheaders; e.g.

Use:
   ## Subheader

Instead of:
   Subheader
   ----------
2015-04-14 12:30:49 +02:00
Michelle McDaniel 3a45f16246 Merge pull request #426 from adiaaida/fixReadme
Update badges in README
2015-04-13 15:20:59 -07:00
Michelle McDaniel 0eaa04b488 Update badges in README
We updated the names of the windows jobs in the lab, so we need to
update the link in the README.
2015-04-13 15:19:09 -07:00
Russell C Hadley 16742d0873 Merge pull request #424 from russellhadley/UpdateArchDiag
Updated architecture diagrams
2015-04-13 13:27:36 -07:00
rhadley 9a965f5bc2 Updated architecture diagrams
As part of the building up the announcement materials I updated the documents.  So adding them to the checked in docs.
2015-04-13 13:08:11 -07:00
Bengu Li e08bafccb4 Merge pull request #423 from libengu/UpdatePythonDump
Prepend COMPlus_ to DumpLLVMIR in python script
2015-04-13 11:12:24 -07:00
Bengu Li 303ca80420 Prepend COMPlus_ to DumpLLVMIR in python script
The JIT options change in https://github.com/dotnet/llilc/pull/412 prepends
COMPlus_ to DumpLLVMIR environment flag. Changes were made in Powershell
script but not in Python script. Update the python script accordingly. Also
update all COMPLus_ flags with consistent upper/lower cases.
2015-04-13 10:08:27 -07:00
Russell C Hadley b6e3392fdf Merge pull request #412 from russellhadley/JitOptions
Add initial JIT Options class.
2015-04-11 08:26:13 -07:00
rhadley 67236e4f93 Add initial support for JIT options
Makes use of the new CLR/EE interface to extract environment variables.
Initial support only covers COMPLUS_AltJit and COMPLUS_DUMPLLVMIR.

* Adds Options container in the JITContext.  This is used to interface
  with CoreCLR and hold any state.  Currently implements the AltJit
  detection as well as DumpLevel(COMPlus_DUMPLLVMIR) and OptLevel.
* Includes basic method set support that will be used to implement
  matching of methods.
* Adds simple utility functions to do cross platform UTF16 to UTF8
  conversions.  This is based on the facilities supplied by LLVM.
* Fix testing scripts to prepend 'COMPlus_' on the DUMPLLVMIR variable.
2015-04-10 22:54:38 -07:00
Russell C Hadley fda6100d1a Merge pull request #419 from libengu/UpdateExclusion
Update test case exclusion after adding GC test cases in CoreCLR - Need this now to unblock team.
2015-04-10 17:29:51 -07:00
Bengu Li 2667487be3 Update test case exclusion after adding GC test cases in CoreCLR
83 GC related test cases were just added to CoreCLR repository.
12 of them cannot run with LLILC at this point. Exclude them for now.
Exclusion is added in both powershell script and python script.
Passed verification with llilc_test.

Also added newline at the end of exclusion file.
2015-04-10 15:42:57 -07:00
Russell C Hadley fac5249a95 Merge pull request #411 from dotnet/richlander-patch-1
Correct name of OS X
2015-04-10 09:53:50 -07:00
Eugene Rozenfeld 9fcd609b2b Merge pull request #418 from erozenfeld/InitializeArray
Use a normal call instead of an intrinsic for InitializeArray.
2015-04-10 09:34:55 -07:00
Eugene Rozenfeld 72ca60c812 Use a normal call instead of an intrinsic for InitializeArray.
This gets us two more methods in HelloWorld.
2015-04-09 23:31:38 -07:00
Eugene Rozenfeld 04bb281907 Merge pull request #413 from erozenfeld/MSILOffsetGraphOrder
Process the flow graph in the order of MSIL offsets.
2015-04-09 23:29:31 -07:00
Bengu Li 0b13d2010a Merge pull request #406 from libengu/RunTest
Add Python llilc_runtest script
2015-04-09 21:58:17 -07:00
Eugene Rozenfeld 72d20e97a7 Process the flow graph in the order of MSIL offsets.
This is necessary to compute PHI types before processing their blocks.
ECMA-335 guarantees empty operand stacks on MSIL offset back edges.

Update the reader document.

Remove tail block if it's unreached.

This fixes all current verification errors in Roslyn build.
2015-04-09 21:30:55 -07:00
Bengu Li f67ffa0aab Add Python llilc_runtest script
This script runs CoreCLR test with specified LLILC JIT and pre-built
CoreCLR runtime. If verbose level is specified, either summary or
verbose, a result will be created in default location or a place
that is specified. In verbose case, the result will be normalized
with filter.

It is required to run this script from tests directory in a CoreCLR
repository.

To exclude undesired test cases, please edit exclusion file.

usage: llilc_runtest.py [-h] [-a {x86,x64}] [-b {debug,release}]
                        [-d {summary,verbose}] [-r RESULT_PATH] -j JIT_PATH -c
                        CORECLR_RUNTIME_PATH

optional arguments:
  -h, --help            show this help message and exit
  -a {x86,x64}, --arch {x86,x64}
                        the target architure
  -b {debug,release}, --build {debug,release}
                        release or debug build of CoreCLR run-time used
  -d {summary,verbose}, --dump-level {summary,verbose}
                        the dump level: summary, or verbose
  -r RESULT_PATH, --result-path RESULT_PATH
                        the path to runtest result output directory
  -j JIT_PATH, --jit-path JIT_PATH
                        full path to jit .dll
  -c CORECLR_RUNTIME_PATH, --coreclr-runtime-path CORECLR_RUNTIME_PATH
                        full path to CoreCLR run-time binary directory

This script assumes developer handles the work environment by themselves
and CoreCLR test has been built.

llilc_checkpass will follow.

This script is LLILC wrapper of underlying CoreCLR runtest which is
now still Windows only and about to get cross-platform. When that happens,
the implementation of this script will be updated accordingly. But the
command line interface is intended to remain the same.
2015-04-09 16:36:11 -07:00
Swaroop Sridhar 72cd23e259 Merge pull request #414 from swaroop-sridhar/check
Precise GC: Bail early on managed aggregates
2015-04-09 16:19:31 -07:00
Swaroop Sridhar a202dc85ea Precise GC: Bail early on managed aggregates
Precise GC using statepoints cannot handle aggregates that contain
managed pointers yet. (Issue #33)

So, this change adds a check to the reader-postpass, which scans the
generated IR if it contains values of managed-aggregate type.
If so, the compilation fails gracefully by throwing a NYI exception.

This check in ReaderIr.cpp is based on the assertion checks in
RewriteStatepointsForGC.cpp.

[Issue #32]
2015-04-09 14:36:04 -07:00
Joseph Tremoulet 329dc562e2 Merge pull request #415 from JosephTremoulet/NormalizePhi
Add normalization for phi arguments
2015-04-09 12:59:07 -04:00
Joseph Tremoulet 977af5bea4 Merge pull request #416 from JosephTremoulet/PointSplit
Factor out two IR maintenance helpers
2015-04-09 12:54:52 -04:00