David Chisnall
6de70135e8
Don't abort if NSAutoreleasePool is not found.
...
Fixes #17
10 years ago
davidchisnall
2693c02626
Merge pull request #15 from ngrewe/ivars
...
Fix a segfault on (s|g)etting ivars.
10 years ago
Niels Grewe
f264fd159d
Fix a segfault on (s|g)etting ivars.
...
When we were trying to get or set an ivar on a class that had
no ivars defined, we'd dereference a NULL ivar list while
determining the ownership qualifier.
10 years ago
David Chisnall
f442f17034
Set the count to 0 if no property attributes are copied.
10 years ago
David Chisnall
6bf87d9e8a
Allow the buffered objects to be something other than a pointer.
10 years ago
David Chisnall
d0a290cc1b
If we try to do ivar assignment on something that is not an object, just do straight object-sized assignment.
10 years ago
David Chisnall
c58ba23470
Improve some null handling in ivar resolution code.
10 years ago
David Chisnall
4a840374fe
Fix typo in hooks.h.
10 years ago
David Chisnall
f9421d02a8
Add a size field to the ivar list struct, for forward compatibility.
10 years ago
David Chisnall
d52db3491a
Make the forwarding test use the forward2 hook.
10 years ago
David Chisnall
b11779dc19
Fix objc_msgSend test with new names for slot structures.
10 years ago
David Chisnall
c3c81796ca
Rework slot handling so that the fields that are used for dispatch are
...
at the start of the structure, making it easier to change the layout in
the future.
Also clean up the growth of various fields and consolidate some of the
metadata into a pointer to the `struct objc_method`.
10 years ago
David Chisnall
3dc096eb17
Add new ABI ivar metadata structures.
...
The new structure has extra fields for alignment and flags (e.g.
ownership).
Old structures are auto-upgraded at load time, so the rest of the code
can assume the presence of the new structure type.
10 years ago
David Chisnall
f55c158be8
First pass at new Objective-C ABI.
10 years ago
David Chisnall
4ab78aa49a
Check for Thumb-2 more explicitly.
10 years ago
David Chisnall
c8848614b5
Now that we’re not marking the block trampoline functions as functions, the start and end symbols will appear as normal data pointers with no Thumb mangling, so remove the code that unmangles them.
10 years ago
David Chisnall
cbdc6c8786
Reorganise block_trampolines.S to have a lot less copy-and-pasting.
10 years ago
David Chisnall
3dcb70bf59
Don’t use a NEON instruction on ARM variants that don’t have NEON.
10 years ago
David Chisnall
77484cb3cb
Add missing declaration to ARM unwind header.
10 years ago
David Chisnall
03141616ab
Added notes to ANNOUNCE about the Thumb-2 work.
10 years ago
David Chisnall
9e51aabc98
Fix block trampolines to work when mixed with Thumb-2 code.
10 years ago
David Chisnall
f5f60ecadd
Use Thumb-2 for the objc_msgSend code where available.
10 years ago
David Chisnall
5d0b579931
Fix a missing pop that had become lost in the move to use predicated
...
instructions.
10 years ago
David Chisnall
8e2d730f95
Return 0 as a floating point value for ARM hardware FP.
...
Note that this code path is currently unused by Clang, which does the
nil check in the caller for fpret functions.
10 years ago
David Chisnall
66c4154b06
Use bx for calling methods so that thumb / ARM interop should work.
10 years ago
David Chisnall
dfe485de34
Slightly simplify the fall-through to the slow path to avoid a branch.
10 years ago
David Chisnall
2ea11117a3
Remove the LLVM optimisation passes. They don’t work with a recent LLVM, can be recovered from git if required, and are better off being upstreamed into LLVM if they make sense.
10 years ago
David Chisnall
c7c193e4c7
Use the correct compare instruction.
10 years ago
David Chisnall
b952a21abe
Add objc_msgSend for AArch64.
...
An interesting feature of the AArch64 ABI simplifies this code relative to other platforms. AArch64 reserves an extra register (x8) for the address of struct returns, giving the
10 years ago
David Chisnall
fecddec3f3
Implement AArch64 block trampolines.
10 years ago
davidchisnall
c6dd7d13b7
Merge pull request #13 from ngrewe/ci
...
Fix the objc_msgSend testcase (typo) and add a .travis.yml for CI builds
10 years ago
Niels Grewe
16d563fc14
Run ctest directly for travis CI builds
10 years ago
Niels Grewe
2fbf85c06a
Merge branch 'master' into ci
10 years ago
Niels Grewe
a6e65cea04
Fix typo in test function
10 years ago
Niels Grewe
28a218451d
Merge branch 'master' into ci
10 years ago
Niels Grewe
20c2d78661
Merge branch 'master' of github.com:ngrewe/libobjc2
10 years ago
David Chisnall
4a59b2a986
Set up the new forwarding hook in the objc_msgSend test.
...
This is probably wrong, as we should be calling forward2 if forward3 is not set, but it makes the test pass for now.
10 years ago
David Chisnall
5c6cd3cb70
Set up the new forwarding hook in the objc_msgSend test.
...
This is probably wrong, as we should be calling forward2 if forward3 is not set, but it makes the test pass for now.
10 years ago
David Chisnall
9c7cc6ac25
Save the floating point registers in the correct place on ARM.
...
Note to self: It is very important, when you have tested a set of changes, to commit those changes and not a misapplied diff of approximately those changes.
10 years ago
David Chisnall
5cf6d6ac13
Make the message send test actually test thing things that it's supposed
...
to.
10 years ago
David Chisnall
8583fc7f61
Explicitly make char signed in the property introspection test. The C spec allows char to be either signed or unsigned. If it’s unsigned (as it is on ARM), then the test will fail with the wrong encoding.
10 years ago
David Chisnall
cfb87b0cf9
Preserve floating point argument registers across calls out to the slow path.
10 years ago
David Chisnall
bd790df7e3
Disable building LLVM passes for now. It’s unlikely that anyone actually wants them at the moment, and we should probably remove them at some future date.
10 years ago
David Chisnall
ef458104dd
Remove some debugging code.
10 years ago
David Chisnall
034cb08c10
Provide code paths for pre-ARMv6t2 ARM ISAs.
10 years ago
David Chisnall
197018f090
Fix objc_msgSend on ARM.
...
When loading the slot, it’s quite important to load it into the register where you’re going to use it!
10 years ago
David Chisnall
a36013f090
Fix the offsets in the ARM block trampoline.
10 years ago
David Chisnall
1933167046
Copy (retain) blocks when they are used as IMPs.
10 years ago
David Chisnall
e8604511a6
Fix block metadata address calculation.
10 years ago
David Chisnall
e8e5f1e254
Try calling the IMP directly before calling it indirectly in the block-as-method test.
...
This makes debugging *much* easier!
10 years ago