Mercurial > hg > graal-compiler
comparison src/cpu/sparc/vm/sharedRuntime_sparc.cpp @ 710:e5b0439ef4ae
6655638: dynamic languages need method handles
Summary: initial implementation, with known omissions (x86/64, sparc, compiler optim., c-oops, C++ interp.)
Reviewed-by: kvn, twisti, never
author | jrose |
---|---|
date | Wed, 08 Apr 2009 10:56:49 -0700 |
parents | 70998f2e05ef |
children | 6b2273dd6fa9 |
comparison
equal
deleted
inserted
replaced
709:1d037ecd7960 | 710:e5b0439ef4ae |
---|---|
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 |