| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
integrated into Reader. Parser.* was just a bad idea. AnalyzerInternals.h
is no longer needed. ReaderPrimitives.h was integrated into Reader.h and
Reader.cpp. Dumper.cpp was integrated into Analyzer.cpp. ReaderInternals.h
became Reader.h. AnalyzerWrappers.cpp was integerated into
ReaderWrappers.cpp
llvm-svn: 14496
|
|
|
|
| |
llvm-svn: 14201
|
|
|
|
|
|
|
| |
to index into structure types and allows arbitrary 32- and 64-bit integer
types to index into sequential types.
llvm-svn: 12651
|
|
|
|
|
|
|
| |
prerelease format for LLVM bytecode files. Now we only are compatible with
LLVM 1.0+.
llvm-svn: 12643
|
|
|
|
|
|
| |
that are still left in the lazy reader map.
llvm-svn: 10944
|
|
|
|
|
|
|
|
| |
This shrinks the bytecode file for 176.gcc by about 200K (10%), and 254.gap by
about 167K, a 25% reduction. There is still a lot of room for improvement in
the encoding of the compaction table.
llvm-svn: 10914
|
|
|
|
|
|
|
| |
type planes. This saves about 5k on 176.gcc, and is needed for a subsequent
patch of mine I'm working on.
llvm-svn: 10908
|
|
|
|
| |
llvm-svn: 10875
|
|
|
|
|
|
|
|
|
|
| |
returning error codes. Because they don't return an error code, they can
return the value read, which simplifies the code and makes the reader more
efficient (yaay!).
Also eliminate the special case code for little endian machines.
llvm-svn: 10871
|
|
|
|
|
|
| |
to emit all of those sbyte constants.
llvm-svn: 10863
|
|
|
|
|
|
| |
the bytecode revision generated by LLVM 1.2.
llvm-svn: 10848
|
|
|
|
|
|
|
| |
* Refactor reader stuff out of include/llvm/Bytecode/Primitives.h. This is
internal implementation details for the reader, not public interfaces!
llvm-svn: 10739
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
each basic block in function. Instead, just emit a stream of instructions,
chopping up basic blocks based on when we find terminator instructions. This
saves a fairly substantial chunk of bytecode space. In stripped, sample
cases, for example, we get this reduction in size:
197.parser: 163036 -> 137180: 18.8% reduction
254.gap : 844936 -> 689392: 22.6%
255.vortex: 621724 -> 528444: 17.7%
...
Not bad for something this simple. :) Note that this doesn't require a new
bytecode version number at all, though version 1.1 should not need to support
the old format.
llvm-svn: 10280
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Strength reduce several data structures which were left over from the
"bad old days"
* Minor efficiency improvements
* Major efficiency improvement: In BytecodeParser::insertValue, do not allocate
a new ValueTab entry just because some value exists with a large type. This
dramatically reduces the number of allocations/deallocations performed by the
bytecode reader, and speeds up parsing of Kimwitu++ from 34s to 17s. This is
to help address PR127
llvm-svn: 10085
|
|
|
|
|
|
| |
speeds up disassembly of kc++ by .6s
llvm-svn: 10079
|
|
|
|
|
|
|
|
| |
These fools don't even wrap code at 80 columns.
Oh wait, _I_ wrote that. That explains a lot!!
llvm-svn: 9999
|
|
|
|
|
|
|
| |
constant expression, but is of (for example) ubyte type, then it is a
ConstantUInt. This was not true for placeholders.
llvm-svn: 9994
|
|
|
|
| |
llvm-svn: 9903
|
|
|
|
| |
llvm-svn: 9736
|
|
|
|
|
|
| |
inside DEBUG_OUTPUT so that it compiles.
llvm-svn: 9614
|
|
|
|
| |
llvm-svn: 9321
|
|
|
|
|
|
|
| |
* More dense bytecode encoding for varargs calls (like printf)
* Eliminated the extremely old bytecode format. rev #0 is now 1.0
llvm-svn: 9220
|
|
|
|
| |
llvm-svn: 9077
|
|
|
|
| |
llvm-svn: 9072
|
|
|
|
| |
llvm-svn: 9071
|
|
|
|
|
|
| |
Throw the RawInst class in an anon namespace
llvm-svn: 8990
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
changes:
* BytecodeReader::getType(...) used to return a null pointer
on error. This was only checked about half the time. Now we convert
it to throw an exception, and delete the half that checked for error.
This was checked in before, but psmith crashed and lost the change :(
* insertValue no longer returns -1 on error, so callers don't need to
check for it.
* Substantial rewrite of InstructionReader.cpp, to use more efficient,
simpler, data structures. This provides another 5% speedup. This also
makes the code much easier to read and understand.
llvm-svn: 8984
|
|
|
|
|
|
|
| |
simplifies the control flow a bit. This provides a small (~3%) speedup,
but it's primarily a cleanup exercise.
llvm-svn: 8983
|
|
|
|
|
|
| |
This results in no significant speedup, but does provide simpler code
llvm-svn: 8980
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
new, simpler, ForwardReferences data structure. This is just the first
simple replacement, subsequent changes will improve the code more.
This simple change improves the performance of loading a file from HDF5
(contributed by Bill) from 2.36s to 1.93s, a 22% improvement. This
presumably has to do with the fact that we only create ONE placeholder for
a particular forward referenced values, and also may be because the data
structure is much simpler.
llvm-svn: 8979
|
|
|
|
| |
llvm-svn: 8978
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the bytecode parser. Before we tried to shoehorn basic blocks into the
"getValue" code path with other types of values. For a variety of reasons
this was a bad idea, so this patch separates it out into its own data structure.
This simplifies the code, makes it fit in 80 columns, and is also much faster.
In a testcase provided by Bill, which has lots of PHI nodes, this patch speeds
up bytecode parsing from taking 6.9s to taking 2.32s. More speedups to
follow later.
llvm-svn: 8977
|
|
|
|
| |
llvm-svn: 8976
|
|
|
|
|
|
| |
Bill gave me from 8.69s to 6.90s.
llvm-svn: 8971
|
|
|
|
|
|
|
| |
and because, while the class used by the interface is abstract, the actual
concept is not.
llvm-svn: 8850
|
|
|
|
|
|
| |
as 'by reference' arguments.
llvm-svn: 8849
|
|
|
|
|
|
| |
can just use PATypeHolders
llvm-svn: 8832
|
|
|
|
|
|
| |
return std::auto_ptr and use exceptions
llvm-svn: 8684
|
|
|
|
| |
llvm-svn: 8677
|
|
|
|
|
|
|
|
|
| |
- no more passing around a string pointer to set errors
- no more returning booleans and checking for errors, we use C++ exceptions
* Broke functionality into 2 new classes, one reads from file, one from a stream
* Implemented lazy function streaming - the parser can read in a function at-a-time
llvm-svn: 8671
|
|
|
|
|
|
|
|
| |
year old.
If you still have these suckers laying around, you have GOT to rebuild them. geeze.
llvm-svn: 8395
|
|
|
|
| |
llvm-svn: 8352
|
|
|
|
|
|
| |
some space for extra flags, so we don't need to bump the revision number.
llvm-svn: 8118
|
|
|
|
|
|
| |
'Type'.
llvm-svn: 6774
|
|
|
|
| |
llvm-svn: 6284
|
|
|
|
| |
llvm-svn: 6283
|
|
|
|
| |
llvm-svn: 5836
|
|
|
|
| |
llvm-svn: 5790
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix problems where the constant table would not get updated when
resolving constants causes other constants to change.
Changes to the V2 bytecode format
- Null values are implicitly encoded instead of explicitly, this makes
things more compact!
- More compactly represent ConstantPointerRefs
- Bytecode files are represented as:
Header|GlobalTypes|GlobalVars/Function Protos|Constants|Functions|SymTab
instead of
Header|GlobalTypes|Constants|GlobalVars/Function Protos|Functions|SymTab
which makes a lot of things simpler.
Changes to the reader:
- Function loading code is much simpler. We now no longer make function
PlaceHolderHelper objects to be replaced with real functions.
llvm-svn: 5748
|
|
|
|
| |
llvm-svn: 5716
|