1 /*
2 * Copyright (c) 2000, 2026, Oracle and/or its affiliates. All rights reserved.
3 * Copyright (c) 2012, 2025 SAP SE. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
387
388 // Additional interface for entry frames:
389 inline entry_frame_locals* get_entry_frame_locals() const {
390 return (entry_frame_locals*) (((address) fp()) - entry_frame_locals_size);
391 }
392
393 enum {
394 // size, in words, of frame metadata (e.g. pc and link)
395 metadata_words = sizeof(java_abi) >> LogBytesPerWord,
396 // size, in words, of metadata at frame bottom, i.e. it is not part of the
397 // caller/callee overlap
398 metadata_words_at_bottom = 0,
399 // size, in words, of frame metadata at the frame top, i.e. it is located
400 // between a callee frame and its stack arguments, where it is part
401 // of the caller/callee overlap
402 metadata_words_at_top = sizeof(java_abi) >> LogBytesPerWord,
403 // in bytes
404 frame_alignment = 16,
405 frame_alignment_in_words = frame_alignment >> LogBytesPerWord,
406 // size, in words, of maximum shift in frame position due to alignment
407 align_wiggle = 1
408 };
409
410 // returns the sending frame, without applying any barriers
411 inline frame sender_raw(RegisterMap* map) const;
412
413 #endif // CPU_PPC_FRAME_PPC_HPP
|
1 /*
2 * Copyright (c) 2000, 2026, Oracle and/or its affiliates. All rights reserved.
3 * Copyright (c) 2012, 2026 SAP SE. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
387
388 // Additional interface for entry frames:
389 inline entry_frame_locals* get_entry_frame_locals() const {
390 return (entry_frame_locals*) (((address) fp()) - entry_frame_locals_size);
391 }
392
393 enum {
394 // size, in words, of frame metadata (e.g. pc and link)
395 metadata_words = sizeof(java_abi) >> LogBytesPerWord,
396 // size, in words, of metadata at frame bottom, i.e. it is not part of the
397 // caller/callee overlap
398 metadata_words_at_bottom = 0,
399 // size, in words, of frame metadata at the frame top, i.e. it is located
400 // between a callee frame and its stack arguments, where it is part
401 // of the caller/callee overlap
402 metadata_words_at_top = sizeof(java_abi) >> LogBytesPerWord,
403 // in bytes
404 frame_alignment = 16,
405 frame_alignment_in_words = frame_alignment >> LogBytesPerWord,
406 // size, in words, of maximum shift in frame position due to alignment
407 align_wiggle = 1,
408 // This is wrong and unimplemented
409 sender_sp_offset = 0
410 };
411
412 // returns the sending frame, without applying any barriers
413 inline frame sender_raw(RegisterMap* map) const;
414
415 static intptr_t* repair_sender_sp(nmethod* nm, intptr_t* sp, intptr_t** saved_fp_addr);
416 bool was_augmented_on_entry(int& real_size) const;
417
418 #endif // CPU_PPC_FRAME_PPC_HPP
|