[vmkit-commits] [vmkit] r199011 - Cleanup of trampolines

Gael Thomas gael.thomas at lip6.fr
Sat Jan 11 07:35:54 PST 2014


Author: gthomas
Date: Sat Jan 11 09:35:53 2014
New Revision: 199011

URL: http://llvm.org/viewvc/llvm-project?rev=199011&view=rev
Log:
Cleanup of trampolines

Modified:
    vmkit/branches/mcjit/include/j3/j3arch-dep.h
    vmkit/branches/mcjit/include/j3/j3trampoline.h
    vmkit/branches/mcjit/lib/j3/vm/j3arch-dep.s
    vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc

Modified: vmkit/branches/mcjit/include/j3/j3arch-dep.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3arch-dep.h?rev=199011&r1=199010&r2=199011&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3arch-dep.h (original)
+++ vmkit/branches/mcjit/include/j3/j3arch-dep.h Sat Jan 11 09:35:53 2014
@@ -5,8 +5,8 @@ namespace j3 {
 	class J3Method;
 
 	class J3TrampolineArg {
-		uint64_t  savee[8*2 + 6 + 2]; 
 		/* xmm0 - xmm7 + %rdi/%rsi/%rdx/%rcx/%r8/%r9 + %rbp, %rsp */
+		uint64_t  registers[8*2 + 6 + 2]; 
 	};
 }
 

Modified: vmkit/branches/mcjit/include/j3/j3trampoline.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3trampoline.h?rev=199011&r1=199010&r2=199011&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3trampoline.h (original)
+++ vmkit/branches/mcjit/include/j3/j3trampoline.h Sat Jan 11 09:35:53 2014
@@ -3,11 +3,12 @@
 
 #include <stdint.h>
 
-extern "C" char       trampoline_generic;
-extern "C" char       trampoline_generic_method;
-extern "C" char       trampoline_generic_resolver; 
-extern "C" char       trampoline_generic_end;
-extern "C" void       trampoline_restart(void* ptr, void* saveZone);
+/* defined by j3arch-dep.s */
+extern "C" char      trampoline_generic;
+extern "C" char      trampoline_generic_method;
+extern "C" char      trampoline_generic_resolver; 
+extern "C" char      trampoline_generic_end;
+extern "C" void      trampoline_restart(void* ptr, void* saveZone);
 
 namespace vmkit {
 	class BumpAllocator;
@@ -18,6 +19,9 @@ namespace j3 {
 	class J3Object;
 
 	class J3Trampoline {
+		/* used by j3arch-dep.s */
+		static uintptr_t argOffset;
+
 		static void  interfaceTrampoline(J3Object* obj);
 		static void  staticTrampoline(J3Object* obj, J3Method* ref);
 		static void  virtualTrampoline(J3Object* obj, J3Method* ref);

Modified: vmkit/branches/mcjit/lib/j3/vm/j3arch-dep.s
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3arch-dep.s?rev=199011&r1=199010&r2=199011&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3arch-dep.s (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3arch-dep.s Sat Jan 11 09:35:53 2014
@@ -1,5 +1,5 @@
 	.section	__DATA,__data
-	.globl _trampoline_offset, __ZN5vmkit15ThreadAllocator6_magicE
+	.globl __ZN2j312J3Trampoline9argOffsetE, __ZN5vmkit15ThreadAllocator6_magicE
 	.globl _trampoline_generic, _trampoline_generic_method, _trampoline_generic_resolver, _trampoline_generic_end
 	
 _trampoline_generic:
@@ -21,7 +21,7 @@ _trampoline_generic_end:
 _trampoline_save:
 	mov 		%rsp, %rax
 	and 		__ZN5vmkit15ThreadAllocator6_magicE(%rip), %rax
-	add 		_trampoline_offset(%rip), %rax
+	add 		__ZN2j312J3Trampoline9argOffsetE(%rip), %rax
 
 	mov 		%xmm0, 0(%rax)
 	mov 		%xmm1, 16(%rax)

Modified: vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc?rev=199011&r1=199010&r2=199011&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc Sat Jan 11 09:35:53 2014
@@ -5,13 +5,13 @@
 #include "j3/j3class.h"
 #include "j3/j3.h"
 
-
 using namespace j3;
 
-extern "C" uintptr_t trampoline_offset = (uint64_t)&((J3Thread*)0)->_trampolineArg;
+uintptr_t J3Trampoline::argOffset = (uint64_t)&((J3Thread*)0)->_trampolineArg;
 
 void J3Trampoline::interfaceTrampoline(J3Object* obj) {
 	J3TrampolineArg arg = J3Thread::get()->_trampolineArg;
+
 	J3ObjectHandle* prev = J3Thread::get()->tell();
 	J3ObjectHandle* handle = J3Thread::get()->push(obj);
 	J3ObjectType* type = obj->vt()->type()->asObjectType();
@@ -37,7 +37,9 @@ void J3Trampoline::interfaceTrampoline(J
 
 void J3Trampoline::staticTrampoline(J3Object* obj, J3Method* target) {
 	J3TrampolineArg arg = J3Thread::get()->_trampolineArg;
+
 	target->ensureCompiled(0);
+
 	trampoline_restart(target->fnPtr(), &arg);
 }
 	





More information about the vmkit-commits mailing list