Konstantin Knizhnik's version 1.11; ISO source file format (no \r's).
Renamed jlint.cpp to jlint.cc and makefile to Makefile.
Split up jlint.h (renamed to jlint.hh) and jlint.cc into several files.
Not every class is in its own file (local_context.cc contains all ctx_* classes, graph.cc contains graph_edge and graph_vertex).
types.hh is the most important include file as it contains a lot of #define's and constants. inlines.hh contains inlined functions; functions.hh contains extern function declarations that are (possibly) needed in several places.
Several classes have no .cc files as there are only inlined methods.
Generated dependencies for Makefile with ~/perl/mkmf.pl. Re-used top part of former Makefile.
Top part of original Makefile, which can be reused using mkmf.pl.
Numerous glitches in Makefile fixed (by fixing mkmf.pl).
Fixed minotr bug in debugging printf statement. Jlint now runs on the entire java class tree without dumping its core.
Makefile: added flag -DHASH_TABLE
callee_desc: fixed typo.
class_desc: added monitor_table holding locks of current thread.
component_desc: indentation.
field_desc: Added field "equals" holding reference which was assigned to a field (or is_this|is_new).
jlint: Added some extra debugging output.
jlint.d: renamed swap to Jswap (naming conflict with STL)
jlint.msg: fixed typos.
method_desc.cc: added current class as parameter to parse_code; numerous extensions:
	1. Introduced "equals" fields in several data types for storing information about content of references. First successes in implementation.
	2. Introduced hash tables for storing sets of locks - imperfect:
	   * Unclear exactly how contexts/threads are handled.
	   * No count for too many/too few monitor allocations/releases (should be correctly generated by compiler, though).
	3. Wait/notify call now checks whether thread holds monitor before issuing race condition warning -> eliminates some spurious warnings.
	   To do:
	   * Make sure wait()ing thread only owns lock it is waiting on (otherwise: potential deadlock).
	   * Add wait/notify call to call graph (by implementing support for synchronized blocks as described below).
method_desc.hh: fixed typos.
types.hh: typedef for hash_map|map; Added equals field in vbm_operand.
var_desc: indentation.
Added necessary NULL pointer check in monitorexit block; fixes segfault.
Indentation (tabs -> spaces).
Indentation.
Makefile temporarily changed to debug mode.
First steps of adding error message about wait/notify inside synchronized blocks.
Replaced tabs with spaces.
- Using getNew() from for obtaining reference returned by "anew".
- List (vector) of references is tracked for cleanup and naming of those references.
- Changed some #ifdef DUMP_MONITOR to DUMP_STACK which prints the current stack element or a list of all local variables used (for debugging).
Added support for aload/astore instructions.
Removed work around bug (not needed anymore).
Makefile: using again non-debug version.
jlint.cc: changed type of verbose from int to bool.
jlint.msg: Added new message about list of locks; also replaced old wait_nosync message.
method_desc.cc: restructured code for wait/notify treatment; also added a check for the current lock set (deadlocks).
jlint.cc: Moved comment about format_message to right place.
method_desc.cc: Avoid counting warning about locks twice, if locklist warning ist given.
types.hh: extern decl. for n_messages.
Removed "this_class" argument in method_desc::parse_code, which was redundant.
Changed all occurrences of "this_class" to "cls".
- Makefile: generated new Makefile to include locks.hh and string_pool.hh.
- new files:
 	locks.hh: class that handles locks on objects
		(and also the order in which the locks were acquired).
	string_pool.hh: aux. class that allocates a string if not yet present
		in string pool. Otherwise, given string can be re-used. Useful
		for pseudo class or field names which are not present in
		constant pool, but may have to be retained for the entire rest
		of jlint's runtime.
- class_desc:	now uses new Lock classes.
- constant.hh:	added special constructors for is_this.
- field_desc.hh:	important changes: 1) equals now points to a read-only
	object. 2) name_and_type field was introduced.
- graph.cc:	Special error message for deadlocks with synchronized blocks.
- jlint.cc:	global constant is_const and per-class constant is_this are
	allocated.
- jlint.msg:	New error message for synchronized blocks.
- method_desc.cc:	Major changes.
	- Work around bug with synchronized blocks (edges pointing to self are
	not added to call graph).
	- parse_code now takes is_this parameter (optimization).
	- now uses locks.hh to track usage of locks
	- uses is_const for equals if name_and_type are incorrect (since equals
	can no longer be written to). This might result in less useful error
	messages (not thoroughly tested yet).
	- certain checks against NULL pointers added.
	- MAIN CHANGE: now adds recursive locking schemes (within same method)
	to call graph. Cannot (yet) do inter-method analysis (also more testing
	needed). Code is unfortunately rather complicated because jlint's design
	cannot handle this.
- method_desc:hh: Updated definitions, usage of string_pool.
- types.hh, var_desc.hh:	field_desc is read-only.
First version.
Added locks.cc, locks.hh, and string_pool.hh to dep's.
Fixed typo and wrong lock order in message about locks.