]> gitweb.factorcode.org Git - factor.git/commitdiff
Added vm passing to inline_cache_miss x86.32 asm
authorPhil Dawes <phil@phildawes.net>
Fri, 4 Sep 2009 20:11:13 +0000 (21:11 +0100)
committerPhil Dawes <phil@phildawes.net>
Wed, 16 Sep 2009 07:22:17 +0000 (08:22 +0100)
vm/cpu-x86.32.S
vm/inline_cache.cpp
vm/inline_cache.hpp

index 1618171b5baa85c6d366d32c36b8813bcc080458..a486fed29db4173f9c8ebfec81012134b39fe7ab 100644 (file)
@@ -49,13 +49,14 @@ DEF(long long,read_timestamp_counter,(void)):
        rdtsc
        ret
 
-DEF(void,primitive_inline_cache_miss,(void)):
+DEF(void,primitive_inline_cache_miss,(void *vm)):
        mov (%esp),%ebx
-DEF(void,primitive_inline_cache_miss_tail,(void)):
+DEF(void,primitive_inline_cache_miss_tail,(void *vm)):
        sub $8,%esp
+       push %eax   /* push vm ptr */
        push %ebx
        call MANGLE(inline_cache_miss)
-       add $12,%esp
+       add $16,%esp
        jmp *%eax
 
 DEF(void,get_sse_env,(void*)):
index 35479c29f5ac15ecf56fdb63de723bea3ed7a057..4c77a83a93d8c3c5a224608435c18f9998b42c19 100755 (executable)
@@ -245,9 +245,10 @@ void *factorvm::inline_cache_miss(cell return_address)
        return xt;
 }
 
-VM_C_API void *inline_cache_miss(cell return_address)
+VM_C_API void *inline_cache_miss(cell return_address, factorvm *myvm)
 {
-       return vm->inline_cache_miss(return_address);
+       ASSERTVM();
+       return VM_PTR->inline_cache_miss(return_address);
 }
 
 
index 5b1bbdf51699398c02c8679dc5b446c221ea2fcc..02ac43dce8f39bf78e3db58867423845a0edce40 100644 (file)
@@ -5,6 +5,6 @@ PRIMITIVE(inline_cache_stats);
 PRIMITIVE(inline_cache_miss);
 PRIMITIVE(inline_cache_miss_tail);
 
-VM_C_API void *inline_cache_miss(cell return_address);
+VM_C_API void *inline_cache_miss(cell return_address, factorvm *vm);
 
 }