Leopold Toetsch wrote:I have thought about this, with a little help from ddd:
> Nicholas Clark wrote:
>> Inside a cgoto core have 1 extra op - enter JITted section.
> Or go the other way round: Run from JIT. If there is a sequence of non
> JITable ops, convert these to a CGP section, which returns to JIT when
> finished. This would save a lot of function calls to jit_normal_op.
This produces unoptimized almost the same code quality and speed as -O3.
The cur_opcode is in %esi, all operand access is done like in the posted
2) There is one new opcode:
B<jmp_to_eip inconst INT>
The argument is the native_ptr in JIT code, where to return from a
goto **(cur_opcode + 1);
The address is filled in by the JIT emit functions.
3) The Parrot_jit_begin() emits code to call cgp_core (alas setting up
4) When there is a seqence (more then 1) non JITed ops,
5) non JITed branches do not fit very nicely in this scheme, but there
6) and finally the prederefed B<end> opcode gets jumped to by code
So we would not have any function call overhead and getting the best
This approach would of course need some architecture/compiler specific
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.