Mercurial > hg > truffle
comparison src/cpu/ppc/vm/frame_ppc.cpp @ 14726:92aa6797d639
Backed out merge changeset: b51e29501f30
Backed out merge revision to its first parent (8f483e200405)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 24 Mar 2014 21:30:43 +0100 |
parents | 58cf34613a72 |
children |
comparison
equal
deleted
inserted
replaced
14719:0bdd0d157040 | 14726:92aa6797d639 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * Copyright 2012, 2014 SAP AG. All rights reserved. | 3 * Copyright 2012, 2013 SAP AG. All rights reserved. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5 * | 5 * |
6 * This code is free software; you can redistribute it and/or modify it | 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 | 7 * under the terms of the GNU General Public License version 2 only, as |
8 * published by the Free Software Foundation. | 8 * published by the Free Software Foundation. |
40 #ifdef COMPILER1 | 40 #ifdef COMPILER1 |
41 #include "c1/c1_Runtime1.hpp" | 41 #include "c1/c1_Runtime1.hpp" |
42 #include "runtime/vframeArray.hpp" | 42 #include "runtime/vframeArray.hpp" |
43 #endif | 43 #endif |
44 | 44 |
45 #ifndef CC_INTERP | |
46 #error "CC_INTERP must be defined on PPC64" | |
47 #endif | |
48 | |
45 #ifdef ASSERT | 49 #ifdef ASSERT |
46 void RegisterMap::check_location_valid() { | 50 void RegisterMap::check_location_valid() { |
47 } | 51 } |
48 #endif // ASSERT | 52 #endif // ASSERT |
49 | 53 |
83 return fr; | 87 return fr; |
84 } | 88 } |
85 | 89 |
86 frame frame::sender_for_interpreter_frame(RegisterMap *map) const { | 90 frame frame::sender_for_interpreter_frame(RegisterMap *map) const { |
87 // Pass callers initial_caller_sp as unextended_sp. | 91 // Pass callers initial_caller_sp as unextended_sp. |
88 return frame(sender_sp(), sender_pc(), | 92 return frame(sender_sp(), sender_pc(), (intptr_t*)((parent_ijava_frame_abi *)callers_abi())->initial_caller_sp); |
89 CC_INTERP_ONLY((intptr_t*)((parent_ijava_frame_abi *)callers_abi())->initial_caller_sp) | |
90 NOT_CC_INTERP((intptr_t*)get_ijava_state()->sender_sp) | |
91 ); | |
92 } | 93 } |
93 | 94 |
94 frame frame::sender_for_compiled_frame(RegisterMap *map) const { | 95 frame frame::sender_for_compiled_frame(RegisterMap *map) const { |
95 assert(map != NULL, "map must be set"); | 96 assert(map != NULL, "map must be set"); |
96 | 97 |
180 // result value is saved into the interpreter frame. | 181 // result value is saved into the interpreter frame. |
181 #ifdef CC_INTERP | 182 #ifdef CC_INTERP |
182 interpreterState istate = get_interpreterState(); | 183 interpreterState istate = get_interpreterState(); |
183 address lresult = (address)istate + in_bytes(BytecodeInterpreter::native_lresult_offset()); | 184 address lresult = (address)istate + in_bytes(BytecodeInterpreter::native_lresult_offset()); |
184 address fresult = (address)istate + in_bytes(BytecodeInterpreter::native_fresult_offset()); | 185 address fresult = (address)istate + in_bytes(BytecodeInterpreter::native_fresult_offset()); |
185 #else | |
186 address lresult = (address)&(get_ijava_state()->lresult); | |
187 address fresult = (address)&(get_ijava_state()->fresult); | |
188 #endif | 186 #endif |
189 | 187 |
190 switch (method->result_type()) { | 188 switch (method->result_type()) { |
191 case T_OBJECT: | 189 case T_OBJECT: |
192 case T_ARRAY: { | 190 case T_ARRAY: { |
259 values.describe(frame_no, (intptr_t*)&(istate->_last_Java_sp), " last_Java_sp"); | 257 values.describe(frame_no, (intptr_t*)&(istate->_last_Java_sp), " last_Java_sp"); |
260 values.describe(frame_no, (intptr_t*)&(istate->_self_link), " self_link"); | 258 values.describe(frame_no, (intptr_t*)&(istate->_self_link), " self_link"); |
261 values.describe(frame_no, (intptr_t*)&(istate->_native_fresult), " native_fresult"); | 259 values.describe(frame_no, (intptr_t*)&(istate->_native_fresult), " native_fresult"); |
262 values.describe(frame_no, (intptr_t*)&(istate->_native_lresult), " native_lresult"); | 260 values.describe(frame_no, (intptr_t*)&(istate->_native_lresult), " native_lresult"); |
263 #else | 261 #else |
264 #define DESCRIBE_ADDRESS(name) \ | 262 Unimplemented(); |
265 values.describe(frame_no, (intptr_t*)&(get_ijava_state()->name), #name); | |
266 | |
267 DESCRIBE_ADDRESS(method); | |
268 DESCRIBE_ADDRESS(locals); | |
269 DESCRIBE_ADDRESS(monitors); | |
270 DESCRIBE_ADDRESS(cpoolCache); | |
271 DESCRIBE_ADDRESS(bcp); | |
272 DESCRIBE_ADDRESS(esp); | |
273 DESCRIBE_ADDRESS(mdx); | |
274 DESCRIBE_ADDRESS(top_frame_sp); | |
275 DESCRIBE_ADDRESS(sender_sp); | |
276 DESCRIBE_ADDRESS(oop_tmp); | |
277 DESCRIBE_ADDRESS(lresult); | |
278 DESCRIBE_ADDRESS(fresult); | |
279 #endif | 263 #endif |
280 } | 264 } |
281 } | 265 } |
282 #endif | 266 #endif |
283 | 267 |