1 /* |
1 /* |
2 * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. |
2 * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
935 // of temp registers to work with: mostly G1, G3 & G4. |
935 // of temp registers to work with: mostly G1, G3 & G4. |
936 |
936 |
937 // Inputs: |
937 // Inputs: |
938 // G2_thread - TLS |
938 // G2_thread - TLS |
939 // G5_method - Method oop |
939 // G5_method - Method oop |
940 // O0 - Flag telling us to restore SP from O5 |
940 // G4 (Gargs) - Pointer to interpreter's args |
941 // O4_args - Pointer to interpreter's args |
941 // O0..O4 - free for scratch |
942 // O5 - Caller's saved SP, to be restored if needed |
942 // O5_savedSP - Caller's saved SP, to be restored if needed |
943 // O6 - Current SP! |
943 // O6 - Current SP! |
944 // O7 - Valid return address |
944 // O7 - Valid return address |
945 // L0-L7, I0-I7 - Caller's temps (no frame pushed yet) |
945 // L0-L7, I0-I7 - Caller's temps (no frame pushed yet) |
946 |
946 |
947 // Outputs: |
947 // Outputs: |
948 // G2_thread - TLS |
948 // G2_thread - TLS |
949 // G1, G4 - Outgoing long args in 32-bit build |
949 // G1, G4 - Outgoing long args in 32-bit build |
950 // O0-O5 - Outgoing args in compiled layout |
950 // O0-O5 - Outgoing args in compiled layout |
952 // O7 - Valid return address |
952 // O7 - Valid return address |
953 // L0-L7, I0-I7 - Caller's temps (no frame pushed yet) |
953 // L0-L7, I0-I7 - Caller's temps (no frame pushed yet) |
954 // F0-F7 - more outgoing args |
954 // F0-F7 - more outgoing args |
955 |
955 |
956 |
956 |
957 // O4 is about to get loaded up with compiled callee's args |
957 // Gargs is the incoming argument base, and also an outgoing argument. |
958 __ sub(Gargs, BytesPerWord, Gargs); |
958 __ sub(Gargs, BytesPerWord, Gargs); |
959 |
959 |
960 #ifdef ASSERT |
960 #ifdef ASSERT |
961 { |
961 { |
962 // on entry OsavedSP and SP should be equal |
962 // on entry OsavedSP and SP should be equal |