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
David Chisnall
813a26025d
Remove an instruction that should have been deleted with the dtable rewrite.
10 years ago
David Chisnall
7d1ea63046
Silence some valgrind warnings.
...
The ignored field is never used, so it doesn't matter that the
comparison to the old value is reading uninitialised memory (unless the
compiler is clever enough to spot that this is undefined behaviour and
do something evil).
10 years ago
David Chisnall
42b78dba9b
(Hopefully) fix C++ exception interop on ARM.
10 years ago
David Chisnall
77df8d3d92
Remove debugging line.
10 years ago
David Chisnall
afc784175c
Update release notes for last commit.
10 years ago
David Chisnall
7eeffe9d09
Rewrite the block-to-imp code so that:
...
- We reuse the memory allocated for blocks
- We no longer have the same physical page mapped write and execute
10 years ago
David Chisnall
666c2493ec
Work in progress tweaks to the release announcement.
10 years ago
David Chisnall
0a847e10be
Tweak the message sending microbenchmark a bit so that it produces
...
output compatible with ministat.
10 years ago
David Chisnall
2777fea77a
Enable correct behaviour with respect to ARC for objc_{g,s}etIvar().
10 years ago
David Chisnall
57858add6e
Silence warning in test.
10 years ago
David Chisnall
bfe5de572e
Fix the ivar access functions for objects that are not pointer sized.
10 years ago
David Chisnall
dbdc26523c
Fix the property introspection test some more.
10 years ago
David Chisnall
7d29bdc84a
Use register names that don't make LLVM whine, rather than the correct
...
ones.
10 years ago
David Chisnall
83913c329f
Fix the CFI directives in the MIPS objc_msgSend implementation.
...
The frame adjustment was incorrect and there was nothing indicating
where %ra was saved, which prevented unwinding.
10 years ago
David Chisnall
d44bf5655b
Ensure that objects that support ARC will use ARC, even if they are
...
created without sending a message to the class.
Also ensure that protocols are always valid objects so that ARC doesn't
become confused.
10 years ago
David Chisnall
5c21e73f26
Fix the property introspection test.
10 years ago
David Chisnall
b5e12e914c
Make PropertyIntrospectionTest2 use arc.
...
Recent versions of clang object to weak properties in non-ARC mode.
10 years ago
David Chisnall
f1c323b0a2
Add (untested!) updates to the MIPS / ARM asm paths.
10 years ago
David Chisnall
f06508bfd9
Fix typo in comment.
10 years ago
David Chisnall
5dd82df81e
Fix x86-32 objc_msgSend for new sarray structure.
10 years ago
David Chisnall
5107130277
Move the data for sparse arrays into the tree structure.
...
This saves one load on the message send path for each tree depth (2
loads in the common case, 3 if you have a lot of selectors), which
should improve cache usage considerably.
Note: This is a checkpoint commit. Currently, every objc_msgSend()
implementation except for x86-64 is broken.
10 years ago
David Chisnall
de8e5f26ee
Use a simple C array for the selector types list.
...
The sparse array is not a particularly good fit. It allowed us to do a
few things without locking, but those things were not on the critical
path anyway and it added complexity and memory usage for little gain.
This removes the only non-dtable user of the sparse array, which should
mean that we're able to optimise the sparse array for that single use a
bit better.
10 years ago
David Chisnall
8b1d4fbcc2
TEST is a keyword in if() statements in recent CMake, rename a variable to avoid a conflict.
10 years ago
David Chisnall
b581098831
Extend the objc_msgSend test to check for register saving.
...
Ensure, when we bounce out from the assembly into C and back again, that
the argument values are preserved. Tests 10 integer and 10 floating
point arguments, which should cover all of the argument registers and at
least one stack slot on all supported platforms.
10 years ago
David Chisnall
2f57b0b688
Tweak the block trampolines to work with the win64 calling convention (untested!).
10 years ago
David Chisnall
76ed20acdb
Remove build systems that were deprecated a long time ago.
10 years ago
David Chisnall
3135e30d71
Fix ARC assignment of blocks.
...
We were not correctly checking that the object being assigned had a
reference count in the object header. We're also now avoiding assigning
small objects to the weak reference table, which is quite important as
they have no destructor.
Fixes #12
10 years ago
David Chisnall
84c0bfe7b0
Fix two small bugs in the hopscotch hash that meant that moving elements near the end of the array sometimes caused them to become lost.
10 years ago
Niels Grewe
2795950ef5
Re-add ghostly .travis.yml
10 years ago
David Chisnall
794ac2a3ee
Fix copy and paste duplication of a line.
10 years ago
David Chisnall
6a0f909e06
Don't use an obsolete header in a test.
10 years ago
David Chisnall
53bc9f3892
Fix the size of run-time generated root classes.
...
The size of the new class with should be sizeof(Class), not sizeof(struct objc_class).
10 years ago
davidchisnall
d3bcc30e92
Merge pull request #8 from ngrewe/gcc_atomics
...
Set -march flag for atomic operations builtins even when not compiling with clang
10 years ago
Niels Grewe
5a7fcc0165
Remove .travis.yml for clean patch
10 years ago
Niels Grewe
40b7f872e9
Also specify -march=i586 when compiling with gcc
10 years ago
Niels Grewe
f1c58120b9
Remove bogus workaround for build system issue
10 years ago
Niels Grewe
8b5e85a95c
Set the -pthread compiler flag when pthreads is used.
...
Apparently, setting -lpthread is not enough to convince gcc to actually
link a thread library, so if we are using pthreads, set the -pthread
flag as well. It fixes the gcc situation and doesn't have any adverse
effects for clang either.
10 years ago
Niels Grewe
57856fb507
Merge remote-tracking branch 'upstream/master'
10 years ago
Niels Grewe
9ed74c2859
Merge branch 'property_encoding'
10 years ago