comparison src/cpu/x86/vm/sharedRuntime_x86_64.cpp @ 7154:5d0bb7d52783

changes to support Graal co-existing with the other HotSpot compiler(s) and being used for explicit compilation requests and code installation via the Graal API
author Doug Simon <doug.simon@oracle.com>
date Wed, 12 Dec 2012 21:36:40 +0100
parents e522a00b91aa
children 291ffc492eb6
comparison
equal deleted inserted replaced
7153:c421c19b7bf8 7154:5d0bb7d52783
1994 1994
1995 __ bind(hit); 1995 __ bind(hit);
1996 1996
1997 int vep_offset = ((intptr_t)__ pc()) - start; 1997 int vep_offset = ((intptr_t)__ pc()) - start;
1998 1998
1999 #ifdef GRAAL 1999 #ifdef GRAALVM
2000 if (InlineObjectHash && (method->intrinsic_id() == vmIntrinsics::_hashCode || method->intrinsic_id() == vmIntrinsics::_identityHashCode)) { 2000 if (InlineObjectHash && (method->intrinsic_id() == vmIntrinsics::_hashCode || method->intrinsic_id() == vmIntrinsics::_identityHashCode)) {
2001 // Object.hashCode can pull the hashCode from the header word 2001 // Object.hashCode can pull the hashCode from the header word
2002 // instead of doing a full VM transition once it's been computed. 2002 // instead of doing a full VM transition once it's been computed.
2003 // Since hashCode is usually polymorphic at call sites we can't do 2003 // Since hashCode is usually polymorphic at call sites we can't do
2004 // this optimization at the call site without a lot of work. 2004 // this optimization at the call site without a lot of work.
2036 __ ret(0); 2036 __ ret(0);
2037 } 2037 }
2038 2038
2039 __ bind (slowCase); 2039 __ bind (slowCase);
2040 } 2040 }
2041 #endif // GRAAL 2041 #endif // GRAALVM
2042 2042
2043 // The instruction at the verified entry point must be 5 bytes or longer 2043 // The instruction at the verified entry point must be 5 bytes or longer
2044 // because it can be patched on the fly by make_non_entrant. The stack bang 2044 // because it can be patched on the fly by make_non_entrant. The stack bang
2045 // instruction fits that requirement. 2045 // instruction fits that requirement.
2046 2046
3418 // It will be patched later with the throwing pc. The correct value is not 3418 // It will be patched later with the throwing pc. The correct value is not
3419 // available now because loading it from memory would destroy registers. 3419 // available now because loading it from memory would destroy registers.
3420 __ push(0); 3420 __ push(0);
3421 3421
3422 // Save everything in sight. 3422 // Save everything in sight.
3423 RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words); 3423 map = RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words);
3424 3424
3425 // Now it is safe to overwrite any register 3425 // Now it is safe to overwrite any register
3426 3426
3427 // Deopt during an exception. Save exec mode for unpack_frames. 3427 // Deopt during an exception. Save exec mode for unpack_frames.
3428 __ movl(r14, Deoptimization::Unpack_exception); // callee-saved 3428 __ movl(r14, Deoptimization::Unpack_exception); // callee-saved