changeset in /hg/icedtea6: 2008-11-07 Gary Benson <gbenson at red...
Gary Benson
gbenson at redhat.com
Fri Nov 7 02:36:58 PST 2008
changeset 56fbf813637d in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=56fbf813637d
description:
2008-11-07 Gary Benson <gbenson at redhat.com>
* ports/hotspot/src/cpu/zero/vm/frame_zero.cpp
(frame::interpreter_frame_result): Implemented.
diffstat:
2 files changed, 57 insertions(+), 1 deletion(-)
ChangeLog | 5 ++
ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 53 +++++++++++++++++++++++++-
diffs (75 lines):
diff -r b182fe895dda -r 56fbf813637d ChangeLog
--- a/ChangeLog Thu Nov 06 12:14:32 2008 -0500
+++ b/ChangeLog Fri Nov 07 05:36:53 2008 -0500
@@ -1,3 +1,8 @@ 2008-11-06 Gary Benson <gbenson at redhat
+2008-11-07 Gary Benson <gbenson at redhat.com>
+
+ * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp
+ (frame::interpreter_frame_result): Implemented.
+
2008-11-06 Gary Benson <gbenson at redhat.com>
* ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
diff -r b182fe895dda -r 56fbf813637d ports/hotspot/src/cpu/zero/vm/frame_zero.cpp
--- a/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Thu Nov 06 12:14:32 2008 -0500
+++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Fri Nov 07 05:36:53 2008 -0500
@@ -133,7 +133,58 @@ BasicType frame::interpreter_frame_resul
BasicType frame::interpreter_frame_result(oop* oop_result,
jvalue* value_result)
{
- Unimplemented();
+ assert(is_interpreted_frame(), "interpreted frame expected");
+ methodOop method = interpreter_frame_method();
+ BasicType type = method->result_type();
+ intptr_t* tos_addr = (intptr_t *) interpreter_frame_tos_address();
+ oop obj;
+
+ switch (type) {
+ case T_VOID:
+ break;
+ case T_BOOLEAN:
+ value_result->z = *(jboolean *) tos_addr;
+ break;
+ case T_BYTE:
+ value_result->b = *(jbyte *) tos_addr;
+ break;
+ case T_CHAR:
+ value_result->c = *(jchar *) tos_addr;
+ break;
+ case T_SHORT:
+ value_result->s = *(jshort *) tos_addr;
+ break;
+ case T_INT:
+ value_result->i = *(jint *) tos_addr;
+ break;
+ case T_LONG:
+ value_result->j = *(jlong *) tos_addr;
+ break;
+ case T_FLOAT:
+ value_result->f = *(jfloat *) tos_addr;
+ break;
+ case T_DOUBLE:
+ value_result->d = *(jdouble *) tos_addr;
+ break;
+
+ case T_OBJECT:
+ case T_ARRAY:
+ if (method->is_native()) {
+ obj = get_interpreterState()->oop_temp();
+ }
+ else {
+ oop* obj_p = (oop *) tos_addr;
+ obj = (obj_p == NULL) ? (oop) NULL : *obj_p;
+ }
+ assert(obj == NULL || Universe::heap()->is_in(obj), "sanity check");
+ *oop_result = obj;
+ break;
+
+ default:
+ ShouldNotReachHere();
+ }
+
+ return type;
}
int frame::frame_size() const
More information about the distro-pkg-dev
mailing list