~gnustep/gnustep/+git/gnustep-objc2:powerpc-msgSend

Last commit made on 2024-02-02
Get this branch:
git clone -b powerpc-msgSend https://git.launchpad.net/~gnustep/gnustep/+git/gnustep-objc2

Branch merges

Branch information

Name:
powerpc-msgSend
Repository:
lp:~gnustep/gnustep/+git/gnustep-objc2

Recent commits

ffa2b4f... by hmelder <email address hidden>

r0 is treated as 0 in load instructions

72e3971... by hmelder <email address hidden>

Use andi. instead of andi

0205642... by hmelder <email address hidden>

Enable objc_msgSend for ppc64

9c5fc6f... by hmelder <email address hidden>

Initial PowerPC 64-bit msgSend implementation

7c2ecce... by Frederik Carlier <email address hidden>

Add MinGW CI

1f038ca... by Hugo Melder <email address hidden>

Fix offsets in selector_table (#273)

377a81d... by David Chisnall <email address hidden>

Add support for fast-path alloc / init methods and direct methods.

The fast paths follow the pattern that we established for fast ARC:
Framework base classes can opt in by implementing a `+_TrivialAllocInit`
method.

This opt-in behaviour is inherited and is removed implicitly in any
subclass that implements alloc or init methods (alloc and init are
treated independently).

Compilers can emit calls to `objc_alloc(cls)` instead of `[cls alloc]`,
`objc_allocWithZone(cls)` instead of `[cls allocWithZone: NULL]`, and
`objc_alloc_init` instead of `[[cls alloc] init]`.

Direct methods don't require very much support in the runtime. Apple
reuses their fast path for `-self` (which is supported only in the Apple
fork of clang, not the upstream version) for a fast init. Given that
the first few fields of the runtime's class structure have been stable
for around 30 years, I'm happy moving the flags word (and the
initialised bit, in particular) into the public ABI. This lets us do a
fast-path check for whether a class is initialised in class methods and
call `objc_send_initialize` if it isn't. This function is now exposed
as part of the public ABI, it was there already and does the relevant
checks without invoking any of the message-sending machinery.

Fixes #165 #169

6528090... by Frederik Carlier <email address hidden>

Use C++ exceptions unconditionally for Objective-C[++] on MinGW (#267)

3c42c64... by Hugo Melder <email address hidden>

Skip tests using objc_msgSend if not available (#263)

* Add __GNUSTEP_MSGSEND__ definition

* Mark test as skipped if return code is 77

* Skip tests using objc_msgSend if not available

* ManyManySelectors: Skip objc_msgSend if not available

* Skip UnexpectedException test on ARM and AArch64

* Add UnexpectedException.m to list of unit tests

* Call manyArgs with objc_msgSend directly

5cf2b73... by Hugo Melder <email address hidden>

AArch64 objc_msgSend: Fix argument corruption due to invalid stack pointer offset (#266)

* Fix argument corruption due to invalid sp offset

* Bump runtime version