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