Skip to content

Commit

Permalink
Revert "Let compiler handle ABI"
Browse files Browse the repository at this point in the history
This reverts commit ebe9f19.
  • Loading branch information
kotori2 committed Jan 4, 2021
1 parent ebe9f19 commit 30e9ead
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions edxp-core/src/main/cpp/main/include/art/runtime/thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,29 @@
namespace art {

class Thread : public edxp::HookedObject {
struct ObjPtr { void *data; ObjPtr(ObjPtr const &) = delete; } ;
CREATE_FUNC_SYMBOL_ENTRY(ObjPtr, DecodeJObject, void *thiz, jobject obj) {

#ifdef __i386__
typedef void (*DecodeJObjectType)(void **, void *thiz, jobject obj);
inline static void (*DecodeJObjectSym)(void **, void *thiz, jobject obj);
static void *DecodeJObject(void *thiz, jobject obj) {
if (LIKELY(DecodeJObjectSym)) {
// Special call conversion
void *ret = nullptr;
DecodeJObjectSym(&ret, thiz, obj);
// Stack unbalanced since we faked return value as 1st param
__asm__("sub $0x4, %esp");
return ret;
} else
return nullptr;
}
#else
CREATE_FUNC_SYMBOL_ENTRY(void *, DecodeJObject, void *thiz, jobject obj) {
if (DecodeJObjectSym)
return DecodeJObjectSym(thiz, obj);
else
return ObjPtr{nullptr};
return nullptr;
}
#endif

public:
Thread(void *thiz) : HookedObject(thiz) {}
Expand All @@ -24,7 +40,7 @@ namespace art {

void *DecodeJObject(jobject obj) {
if (thiz_ && DecodeJObjectSym) {
return DecodeJObject(thiz_, obj).data;
return DecodeJObject(thiz_, obj);
}
return nullptr;
}
Expand Down

0 comments on commit 30e9ead

Please sign in to comment.