;
; Исходный код среды исполнения ПВТ-ОО.
;
; Этот исходный код является частью проекта ПВТ-ОО.
;
; Copyright © 2021 Малик Разработчик
;
; Это свободная программа: вы можете перераспространять её и/или
; изменять её на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
; в каком она была опубликована Фондом свободного программного обеспечения;
; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
;
; Эта программа распространяется в надежде, что она может быть полезна,
; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
; общественной лицензии GNU.
;
; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
; вместе с этой программой. Если это не так, см.
; <http://www.gnu.org/licenses/>.
;
; <fold platform.dependent.ThreadEntry (natives)>
method platform.dependent.ThreadEntry$getCurrentThreadContext$ ; returns long <fold >
menter
lload rbx
mleaveq
eleave
; </fold>
method platform.dependent.ThreadEntry$addref$avt.lang.Object$, \
instance, avt.lang.Object ; <fold >
menter
lverify instance, TAG_OBJECT
mov r0, [.instance]
lock inc qword[r0+avt.lang.Object$fldRefCountFromOthers]
mleave
eleave
; </fold>
method platform.dependent.ThreadEntry$release$avt.lang.Object$, \
instance, avt.lang.Object ; <fold >
menter
lverify instance, TAG_OBJECT
mov r0, [.instance]
lock dec qword[r0+avt.lang.Object$fldRefCountFromOthers]
mleave
eleave
; </fold>
method platform.dependent.ThreadEntry$getInstancePointer$avt.lang.Object$, \
instance, avt.lang.Object ; returns long <fold >
menter
lverify instance, TAG_OBJECT
lload [.instance]
mleaveq
eleave
; </fold>
method platform.dependent.ThreadEntry$getThreadProcedurePointer$ ; returns long <fold >
menter
lea r0, [platform.dependent.ThreadEntry$threadProcedure$avt.lang.Runnable$]
call inst$lpush
mleaveq
eleave
; </fold>
method platform.dependent.ThreadEntry$getThreadStackDataSize$ ; returns long <fold >
menter
mov r0d, [ctx$threadStackDataSize]
call inst$lpush
mleaveq
eleave
; </fold>
; </fold>