906 // G2_thread - TLS |
906 // G2_thread - TLS |
907 // G1, G4 - Outgoing long args in 32-bit build |
907 // G1, G4 - Outgoing long args in 32-bit build |
908 // O0-O5 - Outgoing args in compiled layout |
908 // O0-O5 - Outgoing args in compiled layout |
909 // O6 - Adjusted or restored SP |
909 // O6 - Adjusted or restored SP |
910 // O7 - Valid return address |
910 // O7 - Valid return address |
911 // L0-L7, I0-I7 - Caller's temps (no frame pushed yet) |
911 // L0-L7, I0-I7 - Caller's temps (no frame pushed yet) |
912 // F0-F7 - more outgoing args |
912 // F0-F7 - more outgoing args |
913 |
913 |
914 |
914 |
915 // Gargs is the incoming argument base, and also an outgoing argument. |
915 // Gargs is the incoming argument base, and also an outgoing argument. |
916 __ sub(Gargs, BytesPerWord, Gargs); |
916 __ sub(Gargs, BytesPerWord, Gargs); |
917 |
|
918 #ifdef ASSERT |
|
919 { |
|
920 // on entry OsavedSP and SP should be equal |
|
921 Label ok; |
|
922 __ cmp(O5_savedSP, SP); |
|
923 __ br(Assembler::equal, false, Assembler::pt, ok); |
|
924 __ delayed()->nop(); |
|
925 __ stop("I5_savedSP not set"); |
|
926 __ should_not_reach_here(); |
|
927 __ bind(ok); |
|
928 } |
|
929 #endif |
|
930 |
917 |
931 // ON ENTRY TO THE CODE WE ARE MAKING, WE HAVE AN INTERPRETED FRAME |
918 // ON ENTRY TO THE CODE WE ARE MAKING, WE HAVE AN INTERPRETED FRAME |
932 // WITH O7 HOLDING A VALID RETURN PC |
919 // WITH O7 HOLDING A VALID RETURN PC |
933 // |
920 // |
934 // | | |
921 // | | |