ObjFW  Check-in [d80d091b0e]

Overview
Comment:Add lookup-asm-ppc-macho.S.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: d80d091b0eaf4850732ec3991feaee2d33d412e8236c0f633c265c2bf2ceff6a
User & Date: js on 2014-01-19 12:00:18
Other Links: manifest | tags
Context
2014-01-19
14:10
Clean up Unicode -> * conversions. check-in: 7c26551b67 user: js tags: trunk
12:00
Add lookup-asm-ppc-macho.S. check-in: d80d091b0e user: js tags: trunk
2014-01-18
22:27
Disable fast enumeration for Apple GCC + ObjFW RT. check-in: 76e53b2e72 user: js tags: trunk
Changes

Modified src/runtime/lookup-asm/lookup-asm-amd64-macho.S from [b08544909a] to [515ca230a1].

44
45
46
47
48
49
50
51

52
53
54
55
56
57
58
44
45
46
47
48
49
50

51
52
53
54
55
56
57
58







-
+








	testq	%rax, %rax
	jz	$1

	ret
.endmacro

.macro generate_lookup_super:
.macro generate_lookup_super
$0:
	movq	(%rdi), %rax
	testq	%rax, %rax
	jz	ret_nil

	movq	8(%rdi), %r8
	movq	64(%r8), %r8

Added src/runtime/lookup-asm/lookup-asm-ppc-macho.S version [095b4402f1].






























































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014
 *   Jonathan Schleifer <js@webkeks.org>
 *
 * All rights reserved.
 *
 * This file is part of ObjFW. It may be distributed under the terms of the
 * Q Public License 1.0, which can be found in the file LICENSE.QPL included in
 * the packaging of this file.
 *
 * Alternatively, it may be distributed under the terms of the GNU General
 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

.globl _objc_msg_lookup
.globl _objc_msg_lookup_stret
.globl _objc_msg_lookup_super
.globl _objc_msg_lookup_super_stret

.section __TEXT, __text, regular, pure_instructions
.macro generate_lookup
$0:
	cmpwi	r3, 0
	beq-	ret_nil

	lwz	r5, 0(r3)
	lwz	r5, 32(r5)

Lmain_$0:
#ifdef OF_SELUID24
	lbz	r6, 1(r4)
#endif
	lbz	r7, 2(r4)
	lbz	r8, 3(r4)

#ifdef OF_SELUID24
	slwi	r6, r6, 2
#endif
	slwi	r7, r7, 2
	slwi	r8, r8, 2

#ifdef OF_SELUID24
	lwzx	r5, r5, r6
#endif
	lwzx	r5, r5, r7
	lwzx	r5, r5, r8

	cmpwi	r5, 0
	beq-	0f

	mr	r3, r5
	blr

0:
	b	$1
.endmacro

.macro generate_lookup_super
$0:
	lwz	r5, 0(r3)
	cmpwi	r5, 0
	beq-	ret_nil

	lwz	r5, 4(r3)
	lwz	r5, 32(r5)

	b	Lmain_$1
.endmacro

generate_lookup _objc_msg_lookup, _objc_method_not_found
generate_lookup _objc_msg_lookup_stret, _objc_method_not_found_stret
generate_lookup_super _objc_msg_lookup_super, _objc_msg_lookup
generate_lookup_super _objc_msg_lookup_super_stret, _objc_msg_lookup_stret

ret_nil:
	mflr	r0
	bl	get_pc
	mtlr	r0
0:
	addi	r3, r3, lo16(nil_method-0b)
	blr

nil_method:
	li	r3, 0
	blr

get_pc:
	mflr	r3
	blr

Modified src/runtime/lookup-asm/lookup-asm.S from [edb9d86c46] to [01d860fc4e].

26
27
28
29
30
31
32
33

34


35
36
37




38
26
27
28
29
30
31
32

33
34
35
36
37


38
39
40
41
42







-
+

+
+

-
-
+
+
+
+

# elif defined(__ppc__) || defined(__PPC__)
#  include "lookup-asm-ppc-elf.S"
# elif (defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32) || \
	(defined(__mips_eabi) && _MIPS_SZPTR == 32)
#  include "lookup-asm-mips-elf.S"
# endif
#elif defined(__MACH__)
# if defined(__amd64__) || defined(__x86_64__)
# if defined(__x86_64__)
#  include "lookup-asm-amd64-macho.S"
# elif defined(__ppc__)
#  include "lookup-asm-ppc-macho.S"
# endif
#elif defined(_WIN32) && defined(__i386__)
# include "lookup-asm-x86-win32.S"
#elif defined(_WIN32)
# if defined(__i386__)
#  include "lookup-asm-x86-win32.S"
# endif
#endif

Modified src/runtime/runtime-private.h from [a16b73d2bd] to [adca3c814b].

182
183
184
185
186
187
188
189

190
191
192
193




194
195
196
197
198
199
200
201
202
182
183
184
185
186
187
188

189
190
191


192
193
194
195
196
197
198
199
200
201
202
203
204







-
+


-
-
+
+
+
+









#  define OF_ASM_LOOKUP
# endif
# if (defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32) || \
	(defined(__mips_eabi) && _MIPS_SZPTR == 32)
#  define OF_ASM_LOOKUP
# endif
#elif defined(__MACH__)
# if defined(__amd64__) || defined(__x86_64__)
# if defined(__x86_64__) || defined(__ppc__)
#  define OF_ASM_LOOKUP
# endif
#elif defined(_WIN32) && defined(__i386__)
# define OF_ASM_LOOKUP
#elif defined(_WIN32)
# if defined(__i386__)
#  define OF_ASM_LOOKUP
# endif
#endif

#define OBJC_ERROR(...)							\
	{								\
		fprintf(stderr, "[objc @ " __FILE__ ":%d] ", __LINE__);	\
		fprintf(stderr, __VA_ARGS__);				\
		fputs("\n", stderr);					\
		abort();						\
	}