The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
1999-12-05  Bradley M. Kuhn  <bkuhn@ebb.org>

	* README: wrote a full README file as it should be for a first
	public release.  :)

	* ChangeLog: spell-checked change log.

	* Java/org/perl/internals/Scalar.java: added seq and sne functions

	* Jasmin.pm (B::LOGOP::JVMJasminPre): got cond_expr working
	(B::BINOP::JVMJasminPost): fixed seq and sne work

1999-12-04  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Jasmin/Emit.pm (nop): added method

	* Jasmin.pm (B::BINOP::JVMJasminPre): had to change things so that
	the "concat" pre-processing did argument IN order.  It looks like
	the "trick" of processing things in reverse order may be
	problematic.  In this case, it occurred because if there are
	cascaded BINOPs of "concat" type, and some of them are actually
	".=" operations, we can get the wrong r-values in cases like:
	$x = $y . ($y .= "f");

	* lib/B/JVM/Jasmin/Emit.pm (dup): spruced up the POD and error
	messages for this function
	(swap): added function

	* Jasmin.pm (B::UNOP::JVMJasminPre): added processing for creation
	of the result StackElement here [instead of doing it in the child OP].
	(B::UNOP::JVMJasminPost): set up things so that we can handle the
	OPf_MOD flag properly.

	* Java/org/perl/internals/Scalar.java: implemented concat member
	function.

	* Jasmin.pm (B::BINOP::JVMJasminPre): changed processing on
	"sassign" to be in order
	(TurnStackElementsToScalars): wrote function
	(B::BINOP::JVMJasminPost): got "sassign" working properly using
	TurnStackElementsToScalars

	* Java/org/perl/internals/Scalar.java: added isConstant member
	variable for sanity checking for assigning to constants

1999-11-28  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Jasmin/Emit.pm: moved labels to be handled inside
	methods [just as locals are].  Since labels are, in fact, local to
	methods, they should not be handled globally on the file level.
	(ifne): spruced up the POD and error messages for this function
	(labelCreate): spruced up the POD and error messages for this function
	(labelSend): spruced up the POD and error messages for this function
	(gotoLabel): spruced up the POD and error messages for this function

	* ChangeLog: spell-checked change log.

	* Jasmin.pm (walkoptree): removed recursive walks from this
	function; they should now be done in the B::*::JasminPre
	functions, when necessary
	(B::LISTOP::JasminPre): changed the print function so that it
	would process the pushmark first, and then process its arguments
	in reverse order.  This was required so that the prints occur in
	the proper order.  Apparently, perl is able to use the stack as a
	queue at times.  Perl seems to first find the mark, and then
	process from the mark to the end of the list as if it is a queue.
	Very odd.
	(B::LISTOP::JasminPre): added processing for "list" op so that it
	works similarly to print.  The difference is that when a listop is
	processed, it appears to pushmark, and then simply put the options
	on in order, and then removes the mark at the end of the "list"
	operation.  I took the same approach that I took for
	"print"---except I threw away to "pushmark" operation and reversed
	the order the other sub-ops are processed.  This may not work in
	all cases for the "list" operation, but it at least works when
	processing a 'print LIST' construct.  :)

	* lib/B/JVM/Jasmin/Emit.pm (methodCreateLocal): changed so that
	locals could be reused, as I found that far too many locals were
	being generated for even the simplest of operations
	(methodFreeLocal): created this function so that locals can be freed.

1999-11-27  Bradley M. Kuhn  <bkuhn@ebb.org>

	* Makefile.PL: fixed so that it could handle program names for
	Java binaries better.

	* lib/B/JVM/Jasmin/Emit.pm (returnVoid): added method

	* Java/org/perl/internals/Functions.java: created a print(Scalar)
	function.

	* MANIFEST: for some reason Java/org/perl/internals/Hash.java was
	not in here, also added Java/org/perl/internals/Functions.java
	

	* Jasmin.pm (B::LISTOP::JasminPost): added handling and loop for
	print function
	(B::SVOP::JasminPre): added code for handling a string const.
	This might work as it stands for any scalar, assuming that the
	$op->sv->PV() will promote.  I fear that it might not.  We'll find
	out eventually I suppose.  :)

	* lib/B/JVM/Jasmin/Emit.pm (iconst): added method
	(istore): added method
	(iload): added method
	(iand): added method
	(pop): added method
	(getstatic): added method
	(ldc): added method
	(newObject): added method; should be called new, but cannot be as
	it would conflict with constructor!
	(invokespecial): added method
	(dup): added method
	(gotoLabel): added method
	(astore): fixed to generate both astore_N and astore instructions
	correctly
	(aload): fixed to generate both aload_N and aload instructions
	correctly

	* Java/org/perl/internals/Scalar.java: added Scalar(String)
	constructor so that we can easily create Scalars from native
	strings easily.

1999-11-26  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Jasmin/Emit.pm (labelCreate): realized that I needed
	both a labelCreate and labelSend method to avoid ever having to
	back-patch.  This way, I can generate labels when I need them, and
	use the labelSend method to emit them at the right location on the
	output.
	(astore): added method
	(invokevirtual): added method
	(astore): added method
	(invokestatic): added method

1999-11-23  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Jasmin/CompileState.pm (DESTROY): added method to
	cleanup any files on the $self->{cleanUpFiles} list.

	* Java/org/perl/internals: got all the Java files to compile properly

	* Java/org/perl/internals/Scalar.java: added isTrue() method

	* Java/org/perl/internals/GV.java: created the GV object.
	Currently, it can only hold hashes and scalars

	* Java/org/perl/internals/Stash.java: finished implementation of
	of findNamespace and findGV

1999-11-18  Bradley M. Kuhn  <bkuhn@ebb.org>

	* Java/org/perl/internals/Hash.java: created this class.  Just a
	placeholder for now.

	* Java/org/perl/internals/HV.java: created HV class.  I removed SV
	interface a few days ago because I realized it was unneeded.  I
	think I need HV because I want to wrap the fact that I am using
	Java hashtable's internally---that might change and I'd like
	another layer of abstraction.  This might be helpful for magic too.

	* Java/org/perl/internals: modified lots of the .java files to get
	them to compile properly.  :)

	* Java/org/perl/internals/ScalarException.java: created this class
	for throwing from class, Scalar

	* Java/org/perl/internals/Scalar.java: got file to compile properly

1999-11-16  Bradley M. Kuhn  <bkuhn@ebb.org>

	* Java: moved files to Java/org/perl/internals

1999-11-10  Bradley M. Kuhn  <bkuhn@ebb.org>

	* Java/SvDouble.java: created an initial version of this class
	that "mirrors" SvNV in the perlguts, which I got to understand by
	reading http://home.sol.no/~aas/perl/guts/, so stuff may be
	missing.  :)

	* Java/SvInteger.java: created an initial version of this class
	that "mirrors" SvIV in the perlguts, which I got to understand by
	reading http://home.sol.no/~aas/perl/guts/, so stuff may be
	missing.  :)

	* Java/InvalidSVFieldException.java: wrote this exception class
	that is needed by the Sv* hierarchy.

	* Java/SvString.java: created an initial version of this class
	that "mirrors" an SvPV in the perlguts, which I got to understand by
	reading http://home.sol.no/~aas/perl/guts/, so stuff may be
	missing.  :)

	* Java/SvBase.java: created an initial version of this base class
	for scalar variables.

	* Java/SV.java: created initial version of the interface.

1999-11-09  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Utils.pm: this module is some utility functions that
	didn't fit anywhere else.  

1999-11-08  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Jasmin/CompileState.pm (emit): Added this method and
	other code so that we can store an emitter object with this package.

1999-11-06  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Jasmin/Emit.pm: This is the emitter for
	Jasmin-specific stuff.  It's a first hack, that doesn't support
	everything yet [actually, it supports nearly nothing.  :]

1999-11-03  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Emit.pm: Wrote the initial Emit object.  The idea is
	that we should be able to port to non-Jasmin assemblers, or even a
	direct bytecode syntax.  That's the hope at least.

1999-10-26  Bradley M. Kuhn  <bkuhn@ebb.org>

	* Jasmin.pm (compile): Began playing with this function and had it
	be called automatically from O.  Currently, the function does
	nothing but print some test output.

	* lib/B/JVM/Jasmin/CompileState.pm (new): changed some of the
	configuration parameters, and documented all configuration parameters.
	(createNewFile): Completed this function and made sure it had
	everything it would need for initial testing.

1999-10-25  Bradley M. Kuhn  <bkuhn@ebb.org>

	* lib/B/JVM/Jasmin/CompileState.pm: moved
	B::JVM::Jasmin::CompileState into its own file

	* Makefile.PL: rewrote this to search for jasmin and java
	programs, and fixed it so it handled CompileState.pm

1999-10-20  Bradley M. Kuhn  <bkuhn@ebb.org>

	* Jasmin.pm: created CompileState package for holding the state
	of the compilation.
	(new): new method for CompileState

1999-10-07  Bradley M. Kuhn  <bkuhn@ebb.org>

	* Jasimin.pm: original version created by h2xs 1.19

#	LocalWords:  pushmark ops lib methodCreateLocal const sv PV iconst ldc
#	LocalWords:  istore iload iand getstatic newObject invokespecial dup op
#	LocalWords:  astore aload labelCreate labelSend invokevirtual JasminPre
#	LocalWords:  invokestatic gotoLabel walkoptree listop methodFreeLocal
#	LocalWords:  cleanUpFiles perlguts SvPV Jasmin bytecode pm returnVoid
#	LocalWords:  createNewFile PL jasmin java CompileState Jasimin xs GV HV
#	LocalWords:  isTrue findNamespace findGV hashtable's SvNV SvIV seq sne
#	LocalWords:  cond expr nop concat pre BINOPs StackElement OPf sassign
#	LocalWords:  TurnStackElementsToScalars isConstant ifne ChangeLog