Tonny Lau wrote:
2006/10/30, Alex Astapchuk <[EMAIL PROTECTED]>:

Tonny,

Tonny Lau wrote:
> Hi,
>
> I want to override some specific java methods with native fast path
> implementations. So I try to override them in
> compile_do_compilation_jit()(vm/vmcore/src/jit/compile.cpp), that is,
> I add several entries in
>
_stub_override_entries_base[](vm/vmcore/src/util/ia32/base/compile_IA32.cpp),
>
> and lookup this table
> before invoke jit->compile_method_with_params().
>
> It works for JET, but failed when OPT recompile these method. Does the
OPT
> go different path?

I suppose it's because OPT inlines the methods of your interest, so they
simply do not go through the VM's compilation machinery.

> If so, how can I override it? Does anyone can help me?

Try to turn off inlining in OPT - will it help?


You're right. It works for OPT after I disable inline.  :)
But there is a performance regression when the compiler switch to OPT. I'll
continue the investigation. Thanks!

Well, I don't see much options here rather than do the overriding in the OPT codebase.

VM guys may correct me here:
As far as I remember, the VM had a special machinery to override the methods [1]. if memory serves, the method entries were handled on class preparation - somewhere at [2]. So the JIT 'saw' them as native and did not try to inline them. Seems very close to the functionality you need.

However after a quick look on the latest srcs, it seems the machinery is not used anymore.


[1] Have a look at the end of vmcore\src\util\ia32\base\compile_IA32.cpp - it's the table for the methods handles in a special way.
[2] vmcore\src\class_support\Prepare.cpp


--
Thanks,
  Alex

Reply via email to