зеркало из https://github.com/mozilla/gecko-dev.git
Previous check in had invalied CRLF...
This commit is contained in:
Родитель
e4f7972248
Коммит
17a70ee3e7
|
@ -1,98 +1,98 @@
|
||||||
#
|
#
|
||||||
# ***** BEGIN LICENSE BLOCK *****
|
# ***** BEGIN LICENSE BLOCK *****
|
||||||
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
#
|
#
|
||||||
# The contents of this file are subject to the Mozilla Public License Version
|
# The contents of this file are subject to the Mozilla Public License Version
|
||||||
# 1.1 (the "License"); you may not use this file except in compliance with
|
# 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
# the License. You may obtain a copy of the License at
|
# the License. You may obtain a copy of the License at
|
||||||
# http://www.mozilla.org/MPL/
|
# http://www.mozilla.org/MPL/
|
||||||
#
|
#
|
||||||
# Software distributed under the License is distributed on an "AS IS" basis,
|
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
# for the specific language governing rights and limitations under the
|
# for the specific language governing rights and limitations under the
|
||||||
# License.
|
# License.
|
||||||
#
|
#
|
||||||
# The Original Code is mozilla.org code.
|
# The Original Code is mozilla.org code.
|
||||||
#
|
#
|
||||||
# The Initial Developer of the Original Code is
|
# The Initial Developer of the Original Code is
|
||||||
# Netscape Communications Corporation.
|
# Netscape Communications Corporation.
|
||||||
# Portions created by the Initial Developer are Copyright (C) 1998
|
# Portions created by the Initial Developer are Copyright (C) 1998
|
||||||
# the Initial Developer. All Rights Reserved.
|
# the Initial Developer. All Rights Reserved.
|
||||||
#
|
#
|
||||||
# Contributor(s):
|
# Contributor(s):
|
||||||
#
|
#
|
||||||
# Alternatively, the contents of this file may be used under the terms of
|
# Alternatively, the contents of this file may be used under the terms of
|
||||||
# either of the GNU General Public License Version 2 or later (the "GPL"),
|
# either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||||
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
# in which case the provisions of the GPL or the LGPL are applicable instead
|
# in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
# of those above. If you wish to allow use of your version of this file only
|
# of those above. If you wish to allow use of your version of this file only
|
||||||
# under the terms of either the GPL or the LGPL, and not to allow others to
|
# under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
# use your version of this file under the terms of the MPL, indicate your
|
# use your version of this file under the terms of the MPL, indicate your
|
||||||
# decision by deleting the provisions above and replace them with the notice
|
# decision by deleting the provisions above and replace them with the notice
|
||||||
# and other provisions required by the GPL or the LGPL. If you do not delete
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
# the provisions above, a recipient may use your version of this file under
|
# the provisions above, a recipient may use your version of this file under
|
||||||
# the terms of any one of the MPL, the GPL or the LGPL.
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
#
|
#
|
||||||
# ***** END LICENSE BLOCK *****
|
# ***** END LICENSE BLOCK *****
|
||||||
|
|
||||||
DEPTH = ../../../../../..
|
DEPTH = ../../../../../..
|
||||||
topsrcdir = @top_srcdir@
|
topsrcdir = @top_srcdir@
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
|
|
||||||
include $(DEPTH)/config/autoconf.mk
|
include $(DEPTH)/config/autoconf.mk
|
||||||
|
|
||||||
MODULE = xpcom
|
MODULE = xpcom
|
||||||
LIBRARY_NAME = xptcmd
|
LIBRARY_NAME = xptcmd
|
||||||
|
|
||||||
#
|
#
|
||||||
# The default is this buildable, but non-functioning code.
|
# The default is this buildable, but non-functioning code.
|
||||||
#
|
#
|
||||||
ifdef GNU_CXX
|
ifdef GNU_CXX
|
||||||
CPPSRCS = \
|
CPPSRCS = \
|
||||||
../unix/xptcinvoke_gcc_x86_unix.cpp \
|
../unix/xptcinvoke_gcc_x86_unix.cpp \
|
||||||
xptcstubs.cpp \
|
xptcstubs.cpp \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
LOCAL_INCLUDES = -I$(srcdir)/../unix
|
LOCAL_INCLUDES = -I$(srcdir)/../unix
|
||||||
DEFINES += -DMOZ_USE_STDCALL -DMOZ_NEED_LEADING_UNDERSCORE
|
DEFINES += -DMOZ_USE_STDCALL -DMOZ_NEED_LEADING_UNDERSCORE
|
||||||
else
|
else
|
||||||
|
|
||||||
CPPSRCS = xptcinvoke.cpp xptcstubs.cpp
|
CPPSRCS = xptcinvoke.cpp xptcstubs.cpp
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
# Force use of PIC
|
# Force use of PIC
|
||||||
FORCE_USE_PIC = 1
|
FORCE_USE_PIC = 1
|
||||||
|
|
||||||
include $(topsrcdir)/config/config.mk
|
include $(topsrcdir)/config/config.mk
|
||||||
|
|
||||||
ifeq ($(CPU),ALPHA)
|
ifeq ($(CPU),ALPHA)
|
||||||
CPPSRCS := xptcinvoke_alpha.cpp xptcstubs_alpha.cpp
|
CPPSRCS := xptcinvoke_alpha.cpp xptcstubs_alpha.cpp
|
||||||
ASFILES := xptcinvoke_asm_alpha.s xptcstubs_asm_alpha.s
|
ASFILES := xptcinvoke_asm_alpha.s xptcstubs_asm_alpha.s
|
||||||
AS := asaxp
|
AS := asaxp
|
||||||
ASFLAGS += /I../../..public
|
ASFLAGS += /I../../..public
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TARGET_CPU),x86_64)
|
ifeq ($(TARGET_CPU),x86_64)
|
||||||
CPPSRCS := xptcinvoke_x86_64.cpp xptcstubs_x86_64.cpp
|
CPPSRCS := xptcinvoke_x86_64.cpp xptcstubs_x86_64.cpp
|
||||||
ASFILES := xptcinvoke_asm_x86_64.asm xptcstubs_asm_x86_64.asm
|
ASFILES := xptcinvoke_asm_x86_64.asm xptcstubs_asm_x86_64.asm
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(OS_ARCH),WINCE)
|
ifeq ($(OS_ARCH),WINCE)
|
||||||
ifeq ($(TARGET_CPU),arm)
|
ifeq ($(TARGET_CPU),arm)
|
||||||
CPPSRCS = xptcinvokece.cpp xptcstubsce.cpp
|
CPPSRCS = xptcinvokece.cpp xptcstubsce.cpp
|
||||||
ASFILES =
|
ASFILES =
|
||||||
AS =
|
AS =
|
||||||
ASFLAGS += /I../../..public
|
ASFLAGS += /I../../..public
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||||
FORCE_STATIC_LIB = 1
|
FORCE_STATIC_LIB = 1
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
DEFINES += -DEXPORT_XPTC_API -D_IMPL_NS_COM -D_IMPL_NS_BASE
|
DEFINES += -DEXPORT_XPTC_API -D_IMPL_NS_COM -D_IMPL_NS_BASE
|
||||||
|
|
||||||
LOCAL_INCLUDES += -I$(srcdir)/../..
|
LOCAL_INCLUDES += -I$(srcdir)/../..
|
||||||
|
|
|
@ -1,148 +1,148 @@
|
||||||
; ***** BEGIN LICENSE BLOCK *****
|
; ***** BEGIN LICENSE BLOCK *****
|
||||||
; Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
; Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
;
|
;
|
||||||
; The contents of this file are subject to the Mozilla Public License Version
|
; The contents of this file are subject to the Mozilla Public License Version
|
||||||
; 1.1 (the "License"); you may not use this file except in compliance with
|
; 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
; the License. You may obtain a copy of the License at
|
; the License. You may obtain a copy of the License at
|
||||||
; http://www.mozilla.org/MPL/
|
; http://www.mozilla.org/MPL/
|
||||||
;
|
;
|
||||||
; Software distributed under the License is distributed on an "AS IS" basis,
|
; Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
; for the specific language governing rights and limitations under the
|
; for the specific language governing rights and limitations under the
|
||||||
; License.
|
; License.
|
||||||
;
|
;
|
||||||
; The Original Code is mozilla.org code.
|
; The Original Code is mozilla.org code.
|
||||||
;
|
;
|
||||||
; The Initial Developer of the Original Code is
|
; The Initial Developer of the Original Code is
|
||||||
; Makoto Kato <m_kato@ga2.so-net.ne.jp>.
|
; Makoto Kato <m_kato@ga2.so-net.ne.jp>.
|
||||||
; Portions created by the Initial Developer are Copyright (C) 2004
|
; Portions created by the Initial Developer are Copyright (C) 2004
|
||||||
; the Initial Developer. All Rights Reserved.
|
; the Initial Developer. All Rights Reserved.
|
||||||
;
|
;
|
||||||
; Contributor(s):
|
; Contributor(s):
|
||||||
;
|
;
|
||||||
; Alternatively, the contents of this file may be used under the terms of
|
; Alternatively, the contents of this file may be used under the terms of
|
||||||
; either the GNU General Public License Version 2 or later (the "GPL"), or
|
; either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
; the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
; the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
; in which case the provisions of the GPL or the LGPL are applicable instead
|
; in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
; of those above. If you wish to allow use of your version of this file only
|
; of those above. If you wish to allow use of your version of this file only
|
||||||
; under the terms of either the GPL or the LGPL, and not to allow others to
|
; under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
; use your version of this file under the terms of the MPL, indicate your
|
; use your version of this file under the terms of the MPL, indicate your
|
||||||
; decision by deleting the provisions above and replace them with the notice
|
; decision by deleting the provisions above and replace them with the notice
|
||||||
; and other provisions required by the GPL or the LGPL. If you do not delete
|
; and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
; the provisions above, a recipient may use your version of this file under
|
; the provisions above, a recipient may use your version of this file under
|
||||||
; the terms of any one of the MPL, the GPL or the LGPL.
|
; the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
;
|
;
|
||||||
; ***** END LICENSE BLOCK *****
|
; ***** END LICENSE BLOCK *****
|
||||||
|
|
||||||
extrn invoke_copy_to_stack:PROC
|
extrn invoke_copy_to_stack:PROC
|
||||||
|
|
||||||
|
|
||||||
.CODE
|
.CODE
|
||||||
|
|
||||||
;
|
;
|
||||||
;XPTC__InvokebyIndex(nsISupports* that, PRUint32 methodIndex,
|
;XPTC__InvokebyIndex(nsISupports* that, PRUint32 methodIndex,
|
||||||
; PRUint32 paramCount, nsXPTCVariant* params)
|
; PRUint32 paramCount, nsXPTCVariant* params)
|
||||||
;
|
;
|
||||||
|
|
||||||
XPTC__InvokebyIndex PROC
|
XPTC__InvokebyIndex PROC
|
||||||
|
|
||||||
;
|
;
|
||||||
; store register parameter
|
; store register parameter
|
||||||
;
|
;
|
||||||
|
|
||||||
mov [rsp+32], r9 ; params
|
mov [rsp+32], r9 ; params
|
||||||
mov [rsp+24], r8d ; paramCount
|
mov [rsp+24], r8d ; paramCount
|
||||||
mov [rsp+16], edx ; methodIndex
|
mov [rsp+16], edx ; methodIndex
|
||||||
mov [rsp+8], rcx ; that
|
mov [rsp+8], rcx ; that
|
||||||
|
|
||||||
;
|
;
|
||||||
; store RBX register
|
; store RBX register
|
||||||
;
|
;
|
||||||
|
|
||||||
mov [rsp-8], rbx
|
mov [rsp-8], rbx
|
||||||
mov [rsp-16], rbp
|
mov [rsp-16], rbp
|
||||||
|
|
||||||
mov rbp, rsp ; store current RSP to RBP
|
mov rbp, rsp ; store current RSP to RBP
|
||||||
sub rsp, 24
|
sub rsp, 24
|
||||||
|
|
||||||
;
|
;
|
||||||
; maybe we don't have any parameters to copy
|
; maybe we don't have any parameters to copy
|
||||||
;
|
;
|
||||||
|
|
||||||
test r8d, r8d
|
test r8d, r8d
|
||||||
jz noparams
|
jz noparams
|
||||||
|
|
||||||
;
|
;
|
||||||
; make space for 1st parameter
|
; make space for 1st parameter
|
||||||
|
|
||||||
mov eax, r8d
|
mov eax, r8d
|
||||||
shl rax, 3 ; *= 8 (max possible param size)
|
shl rax, 3 ; *= 8 (max possible param size)
|
||||||
sub rsp, rax
|
sub rsp, rax
|
||||||
mov rcx, rsp
|
mov rcx, rsp
|
||||||
|
|
||||||
;
|
;
|
||||||
; 2nd paramter is parameter count
|
; 2nd paramter is parameter count
|
||||||
;
|
;
|
||||||
|
|
||||||
mov edx, r8d
|
mov edx, r8d
|
||||||
|
|
||||||
;
|
;
|
||||||
; 3rd paramter is params
|
; 3rd paramter is params
|
||||||
;
|
;
|
||||||
|
|
||||||
mov r8, r9
|
mov r8, r9
|
||||||
|
|
||||||
sub rsp, 32
|
sub rsp, 32
|
||||||
|
|
||||||
call invoke_copy_to_stack ; rcx = d
|
call invoke_copy_to_stack ; rcx = d
|
||||||
; edx = paramCount
|
; edx = paramCount
|
||||||
; r8 = s
|
; r8 = s
|
||||||
|
|
||||||
add rsp, 32
|
add rsp, 32
|
||||||
|
|
||||||
mov rdx, [rsp] ; 1st parameter
|
mov rdx, [rsp] ; 1st parameter
|
||||||
movsd xmm1, qword ptr [rsp] ; for double
|
movsd xmm1, qword ptr [rsp] ; for double
|
||||||
|
|
||||||
mov r8, [rsp+8] ; 2nd parameter
|
mov r8, [rsp+8] ; 2nd parameter
|
||||||
movsd xmm2, qword ptr [rsp+8] ; for double
|
movsd xmm2, qword ptr [rsp+8] ; for double
|
||||||
|
|
||||||
mov r9, [rsp+16] ; 3rd parameter
|
mov r9, [rsp+16] ; 3rd parameter
|
||||||
movsd xmm3, qword ptr [rsp+16] ; for double
|
movsd xmm3, qword ptr [rsp+16] ; for double
|
||||||
|
|
||||||
noparams:
|
noparams:
|
||||||
|
|
||||||
;
|
;
|
||||||
; 1st paramter (this)
|
; 1st paramter (this)
|
||||||
;
|
;
|
||||||
|
|
||||||
mov rcx, [rbp+8] ; that
|
mov rcx, [rbp+8] ; that
|
||||||
|
|
||||||
;
|
;
|
||||||
; calcurate call address
|
; calcurate call address
|
||||||
;
|
;
|
||||||
|
|
||||||
mov rbx, [rcx]
|
mov rbx, [rcx]
|
||||||
mov eax, [rbp+16] ; methodIndex
|
mov eax, [rbp+16] ; methodIndex
|
||||||
|
|
||||||
;
|
;
|
||||||
; Now current stack has paramter list
|
; Now current stack has paramter list
|
||||||
; But, since callee function backups paramters, make space into stack.
|
; But, since callee function backups paramters, make space into stack.
|
||||||
|
|
||||||
sub rsp, 8
|
sub rsp, 8
|
||||||
|
|
||||||
call qword ptr [rbx+rax*8] ; stdcall, i.e. callee cleans up stack.
|
call qword ptr [rbx+rax*8] ; stdcall, i.e. callee cleans up stack.
|
||||||
|
|
||||||
;
|
;
|
||||||
; restore registers
|
; restore registers
|
||||||
;
|
;
|
||||||
|
|
||||||
mov rsp, rbp
|
mov rsp, rbp
|
||||||
mov rbx, [rsp-8]
|
mov rbx, [rsp-8]
|
||||||
mov rbp, [rsp-16]
|
mov rbp, [rsp-16]
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
XPTC__InvokebyIndex ENDP
|
XPTC__InvokebyIndex ENDP
|
||||||
|
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче