Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id$
-
*/
#endif /* defined(ENABLE_REPLACEMENT) */
-/* code_get_stack_frame_size ***************************************************
-
- Return the number of stack slots that the stack frame of the given code
- comprises.
-
- IMPORTANT: The return value does *not* include the saved return address
- slot, although it is part of non-leaf stack frames on RISC
- architectures. The rationale behind this is that the saved
- return address is never moved or changed by replacement, and
- this way CISC and RISC architectures can be treated the same.
- (See also doc/stack_frames.txt.)
-
- IN:
- code.............the codeinfo of the code in question
- (must be != NULL)
-
- RETURN VALUE:
- the number of stack slots
-
-*******************************************************************************/
-
-#if defined(ENABLE_REPLACEMENT)
-int code_get_stack_frame_size(codeinfo *code)
-{
-#if 0
- int count;
-
- assert(code);
-
- /* slots allocated by register allocator plus saved registers */
-
-#ifdef HAS_4BYTE_STACKSLOT
- count = code->memuse + code->savedintcount + 2*code->savedfltcount;
-#else
- count = code->memuse + code->savedintcount + code->savedfltcount;
-#endif
-
- /* add slots needed in synchronized methods */
-
- count += code_get_sync_slot_count(code);
-
- /* keep stack aligned */
-
-#if defined(__X86_64__)
- /* the x86_64 codegen only aligns the stack in non-leaf methods */
- if (!code->isleafmethod || opt_verbosecall)
- count |= 1; /* even when return address is added */
-#endif
-
- /* XXX align stack on alpha */
-#if defined(__MIPS__)
- if (code->isleafmethod)
- count = (count + 1) & ~1;
- else
- count |= 1; /* even when return address is added */
-#endif
-
-#if defined(__POWERPC__)
- /* keep stack 16-byte aligned */
- count = (count + 3) & ~3;
-#endif
-
- return count;
-#endif
-
- return code->stackframesize;
-}
-#endif /* defined(ENABLE_REPLACEMENT) */
-
-
/* code_codeinfo_free **********************************************************
Free the memory used by a codeinfo.