Alien-LibJIT

 view release on metacpan or  search on metacpan

libjit/ChangeLog  view on Meta::CPAN

	accordingly.

	* tools/gen-apply.c (detect_float_return): On x86 only the first
	10 bytes of 12 byte long doubles are significant and are used for
	comparison.

2005-12-12  Aleksey Demakov  <ademakov@gmail.com>

	* jit/jit-dump.c (dump_object_code): in order to make dump work on
	cygwin call "as" and "objdump" in two separate system() calls because
	it looks like the ';' separator between commands does not work there.
	Also on Win32 use TMP and TEMP environment variables as the tmp
	directory names and fallback to "c:/tmp".

	* jit/jit-gen-x86.h (jit_assert): change the macro definition to
	resolve	problems introduced at 2005-12-10.

2005-12-10  Aleksey Demakov  <ademakov@gmail.com>

	* jit/jit-gen-x86.h: Merged changes from the latest Mono project's
	version	of this file.

libjit/doc/libjit.texi  view on Meta::CPAN

probably still need to port @code{jit_apply} to each new architecture.

The @code{libjit} library makes use of gcc's @code{__builtin_apply}
facility to do most of the hard work of function application.
This gcc facility takes three arguments: a pointer to the function
to invoke, a structure containing register arguments, and a size
value that indicates the number of bytes to push onto the stack
for the call.

Unfortunately, the register argument structure is very system dependent.
There is no standard format for it, but it usually looks something
like this:

@table @code
@item stack_args
Pointer to an array of argument values to push onto the stack.

@item struct_ptr
Pointer to the buffer to receive a @code{struct} return value.
The @code{struct_ptr} field is only present if the architecture
passes @code{struct} pointers in a special register.

libjit/dpas/dpas-parser.y  view on Meta::CPAN

ProgramHeading
	: K_PROGRAM Identifier '(' IdentifierList ')' ';'	{
				jit_free($2);
				identifier_list_free($4.list, $4.len);
			}
	| K_PROGRAM Identifier ';'	{
				jit_free($2);
			}
	| K_MODULE Identifier '(' IdentifierList ')' ';'	{
				/* The "module" keyword is provided as an alternative
				   to "program" because it looks odd to put "program"
				   on code included via an "import" clause */
				jit_free($2);
				identifier_list_free($4.list, $4.len);
			}
	| K_MODULE Identifier ';'	{
				jit_free($2);
			}
	;

ImportDeclarationPart

libjit/jit/jit-insn.c  view on Meta::CPAN

	if(!(func->builder->thrown_exception))
	{
		func->builder->thrown_exception =
			jit_value_create(func, jit_type_void_ptr);
	}
	return func->builder->thrown_exception;
}

/*
 * Initialize the "setjmp" setup block that is needed to catch exceptions
 * thrown back to this level of execution.  The block looks like this:
 *
 *		jit_jmp_buf jbuf;
 *		void *catcher;
 *
 *      _jit_unwind_push_setjmp(&jbuf);
 *      if(setjmp(&jbuf.buf))
 *		{
 *			catch_pc = jbuf.catch_pc;
 *			if(catch_pc)
 *			{

libjit/jitruby/ext/method_data.c.rpp  view on Meta::CPAN

  return result;
}
    END
  end

  nil
END

/* Define a method and attach data to it.
 *
 * The method looks to ruby like a normal aliased CFUNC, with a modified
 * origin class:
 *
 * NODE_FBODY
 *   |- (u1) orig - origin class
 *   |  |- basic
 *   |  |  |- flags - origin class flags + FL_SINGLETON
 *   |  |  +- klass - NODE_MEMO
 *   |  |     |- (u1) cfnc - actual C function to call
 *   |  |     |- (u2) rval - stored data
 *   |  |     +- (u3) 0



( run in 0.640 second using v1.01-cache-2.11-cpan-64827b87656 )