mirror of
https://github.com/corda/corda.git
synced 2025-01-19 11:16:54 +00:00
87b02eb949
Previously, I used a shell script to extract modification date ranges from the Git history, but that was complicated and unreliable, so now every file just gets the same year range in its copyright header. If someone needs to know when a specific file was modified and by whom, they can look at the Git history themselves; no need to include it redundantly in the header.
174 lines
3.9 KiB
Plaintext
174 lines
3.9 KiB
Plaintext
comment #
|
|
Copyright (c) 2008-2013, Avian Contributors
|
|
|
|
Permission to use, copy, modify, and/or distribute this software
|
|
for any purpose with or without fee is hereby granted, provided
|
|
that the above copyright notice and this permission notice appear
|
|
in all copies.
|
|
|
|
There is NO WARRANTY for this software. See license.txt for
|
|
details.
|
|
|
|
ORIGIN: https://github.com/gkvas/avian/tree/wince
|
|
#
|
|
|
|
.586
|
|
.MODEL FLAT, C
|
|
|
|
comment # types.h #
|
|
VOID_TYPE equ 0
|
|
INT8_TYPE equ 1
|
|
INT16_TYPE equ 2
|
|
INT32_TYPE equ 3
|
|
INT64_TYPE equ 4
|
|
FLOAT_TYPE equ 5
|
|
DOUBLE_TYPE equ 6
|
|
POINTER_TYPE equ 7
|
|
|
|
comment # target-fields.h #
|
|
ifdef TARGET_BYTES_PER_WORD
|
|
if TARGET_BYTES_PER_WORD eq 8
|
|
|
|
TARGET_THREAD_EXCEPTION equ 80
|
|
TARGET_THREAD_EXCEPTIONSTACKADJUSTMENT equ 2256
|
|
TARGET_THREAD_EXCEPTIONOFFSET equ 2264
|
|
TARGET_THREAD_EXCEPTIONHANDLER equ 2272
|
|
|
|
TARGET_THREAD_IP equ 2216
|
|
TARGET_THREAD_STACK equ 2224
|
|
TARGET_THREAD_NEWSTACK equ 2232
|
|
TARGET_THREAD_SCRATCH equ 2240
|
|
TARGET_THREAD_CONTINUATION equ 2248
|
|
TARGET_THREAD_TAILADDRESS equ 2280
|
|
TARGET_THREAD_VIRTUALCALLTARGET equ 2288
|
|
TARGET_THREAD_VIRTUALCALLINDEX equ 2296
|
|
TARGET_THREAD_HEAPIMAGE equ 2304
|
|
TARGET_THREAD_CODEIMAGE equ 2312
|
|
TARGET_THREAD_THUNKTABLE equ 2320
|
|
TARGET_THREAD_STACKLIMIT equ 2368
|
|
|
|
elseif TARGET_BYTES_PER_WORD eq 4
|
|
|
|
TARGET_THREAD_EXCEPTION equ 44
|
|
TARGET_THREAD_EXCEPTIONSTACKADJUSTMENT equ 2164
|
|
TARGET_THREAD_EXCEPTIONOFFSET equ 2168
|
|
TARGET_THREAD_EXCEPTIONHANDLER equ 2172
|
|
|
|
TARGET_THREAD_IP equ 2144
|
|
TARGET_THREAD_STACK equ 2148
|
|
TARGET_THREAD_NEWSTACK equ 2152
|
|
TARGET_THREAD_SCRATCH equ 2156
|
|
TARGET_THREAD_CONTINUATION equ 2160
|
|
TARGET_THREAD_TAILADDRESS equ 2176
|
|
TARGET_THREAD_VIRTUALCALLTARGET equ 2180
|
|
TARGET_THREAD_VIRTUALCALLINDEX equ 2184
|
|
TARGET_THREAD_HEAPIMAGE equ 2188
|
|
TARGET_THREAD_CODEIMAGE equ 2192
|
|
TARGET_THREAD_THUNKTABLE equ 2196
|
|
TARGET_THREAD_STACKLIMIT equ 2220
|
|
|
|
else
|
|
error
|
|
endif
|
|
else
|
|
error
|
|
endif
|
|
|
|
ifdef AVIAN_USE_FRAME_POINTER
|
|
ALIGNMENT_ADJUSTMENT equ 0
|
|
else
|
|
ALIGNMENT_ADJUSTMENT equ 12
|
|
endif
|
|
|
|
CALLEE_SAVED_REGISTER_FOOTPRINT equ 16 + ALIGNMENT_ADJUSTMENT
|
|
|
|
_TEXT SEGMENT
|
|
|
|
public C vmInvoke
|
|
vmInvoke:
|
|
push ebp
|
|
mov ebp,esp
|
|
|
|
; 8(%ebp): thread
|
|
; 12(%ebp): function
|
|
; 16(%ebp): arguments
|
|
; 20(%ebp): argumentFootprint
|
|
; 24(%ebp): frameSize
|
|
; 28(%ebp): returnType
|
|
|
|
; allocate stack space for callee-saved registers
|
|
sub esp,offset CALLEE_SAVED_REGISTER_FOOTPRINT
|
|
|
|
; remember this stack position, since we won't be able to rely on
|
|
; %rbp being restored when the call returns
|
|
mov eax,ds:dword ptr[8+ebp]
|
|
mov ds:dword ptr[TARGET_THREAD_SCRATCH+eax],esp
|
|
|
|
mov ds:dword ptr[0+esp],ebx
|
|
mov ds:dword ptr[4+esp],esi
|
|
mov ds:dword ptr[8+esp],edi
|
|
|
|
; allocate stack space for arguments
|
|
sub esp,ds:dword ptr[24+ebp]
|
|
|
|
; we use ebx to hold the thread pointer, by convention
|
|
mov ebx,eax
|
|
|
|
; copy arguments into place
|
|
mov ecx,0
|
|
mov edx,ds:dword ptr[16+ebp]
|
|
jmp LvmInvoke_argumentTest
|
|
|
|
LvmInvoke_argumentLoop:
|
|
mov eax,ds:dword ptr[edx+ecx*1]
|
|
mov ds:dword ptr[esp+ecx*1],eax
|
|
add ecx,4
|
|
|
|
LvmInvoke_argumentTest:
|
|
cmp ecx,ds:dword ptr[20+ebp]
|
|
jb LvmInvoke_argumentLoop
|
|
|
|
; call function
|
|
call dword ptr[12+ebp]
|
|
|
|
public vmInvoke_returnAddress
|
|
vmInvoke_returnAddress:
|
|
; restore stack pointer
|
|
mov esp,ds:dword ptr[TARGET_THREAD_SCRATCH+ebx]
|
|
|
|
; clear MyThread::stack to avoid confusing another thread calling
|
|
; java.lang.Thread.getStackTrace on this one. See
|
|
; MyProcess::getStackTrace in compile.cpp for details on how we get
|
|
; a reliable stack trace from a thread that might be interrupted at
|
|
; any point in its execution.
|
|
mov ds:dword ptr[TARGET_THREAD_STACK+ebx],0
|
|
|
|
public vmInvoke_safeStack
|
|
vmInvoke_safeStack:
|
|
|
|
; restore callee-saved registers
|
|
mov ebx,ds:dword ptr[0+esp]
|
|
mov esi,ds:dword ptr[4+esp]
|
|
mov edi,ds:dword ptr[8+esp]
|
|
|
|
add esp,offset CALLEE_SAVED_REGISTER_FOOTPRINT
|
|
|
|
mov ecx,ds:dword ptr[28+esp]
|
|
|
|
pop ebp
|
|
ret
|
|
|
|
LgetPC:
|
|
mov esi,ds:dword ptr[esp]
|
|
ret
|
|
|
|
public vmJumpAndInvoke
|
|
vmJumpAndInvoke:
|
|
; vmJumpAndInvoke should only be called when continuations are
|
|
; enabled
|
|
int 3
|
|
|
|
_TEXT ENDS
|
|
|
|
END
|