1007 Commits (4891eb9d5f1201ed833ec4d3dbf7fcac0f6e3cc6)
 

Author SHA1 Message Date
David Chisnall 587cf3f27b Another try at making CMake work. 8 years ago
David Chisnall bb78abb662 Fix copy and paste type. 8 years ago
David Chisnall 7832765112 Improve detection of libsupc++ 8 years ago
David Chisnall dc9b8313a4 Rework C++ library detection.
macOS ships with libc++abi, which doesn't provide the hooks required
for interop, so this was causing all of the tests to fail to link in
the Travis macOS test.  We're now correctly detecting that it won't
work on macOS and disabling those tests.
8 years ago
David Chisnall fefb333b01 Remove the separate libobjcxx.
If we don't find a separate dynamically linkable C++ runtime, then
depend on the C++ standard library implementation.
8 years ago
David Chisnall 82b3abf93e Fix test warning on GNU platforms. 8 years ago
David Chisnall 7bd78e5b46 Fix a bug in ObjC++ EH.
Throwing an Objective-C exception through a C++ catch block was broken.
This was because the C++ code inserts a cleanup handler to make sure
that it invokes `__cxa_end_catch`.  Unwinding through this catchup
transformed the Objective-C exception into a C++ one.  This case should
have been handled, except for two bugs:

1. A typo (`#ifdef` instead of `#ifndef`) meant that we were not
   extracting the Objective-C exception from the C++ object.
2. We were skipping everything except catchalls after the search phase,
   because we lose some information in the transformation.

Fixes #49
8 years ago
David Chisnall f6709519fa Simplify test case some more.
It appears that the problem occurs when throwing an Objective-C
exception through and Objective-C++ frame.
8 years ago
David Chisnall 760bb785aa Rename files.
minRep is not actually an informative name for a test case.
8 years ago
David Chisnall 9115a909b1 Delete more code.
The reduced test case is now fairly close to minimal.
8 years ago
David Chisnall 8f03e62a84 Delete a lot of redundant code. 8 years ago
David Chisnall 1f2d35006b Make the ObjC++ interop test compile 8 years ago
David Chisnall 9760ae8d48 Merge pull request 50 with test case for exception issue. 8 years ago
David Chisnall 24f3713a4b Fix a bug in weak ref handling.
Weak refs were being left as dangling pointers after being deleted.  The
load that caused the deallocation would return nil, but then the next
one would dereference a dangling pointer.
8 years ago
David Lobron c036265ece Remove changes introduced accidentally because I was using an older
version of this file (sync with 0b5f66393a).
8 years ago
David Lobron 44d05e58a6 Minimal reproducing test case. This creates a test number 47 in the unit
test suite, which fails with an exception.  The exception reproduces the
bug.
8 years ago
David Chisnall 2542638b23 Add a warning to the announcement. 8 years ago
David Chisnall 6d9f2a6586 Add some release announcement text. 8 years ago
David Chisnall 12b820cb99 Add refcount accessor function. 8 years ago
David Chisnall e5b4468867 Improve copying and moving weak refs.
Fixes a bug introduced (replacing a similar bug) in the last rewrite of
objc_moveWeak.  This version should now be correct.

objc_copyWeak was implemented in a naive way, which had a lot more
overhead than required.
8 years ago
David Chisnall 458bd3c7a2 Add interfaces for better integration with Foundation. 8 years ago
David Chisnall bdc20a8bab Add some debugging help for ARC-compilance. 8 years ago
David Chisnall fe579e3f1a Simplify the weak code.
Rather than tracking all of the locations of weak pointers, keep a weak
refcount.  This should also make it easier to add finer-grained locking to weak
references.
8 years ago
David Chisnall af4e0719ff Checkpoint work on improving weak reference efficiency. 8 years ago
David Chisnall a2a80ac5dc Remove debugging printf. 8 years ago
David Chisnall 6451d35e92 Fix block refcounts to use saturating arithmetic. 8 years ago
Zenny Chen 5f01917a49 Update blocks_runtime.h (#45)
Update blocks_runtime.h to be compatible with Apple / LLVM version.
8 years ago
David Chisnall 79395aebec Refactor test cmake to reduce copying and pasting.
Also ensures that multi-file tests are run in all combinations.
8 years ago
David Chisnall 51cc9c0347 Fix updating ivars to the new structure.
Some types (e.g. vectors) end up with empty type encodings, for these
cases we assume void* alignment.
8 years ago
David Chisnall a54272c1ab Merge origin/master into newabi (using imerge) 8 years ago
David Chisnall db6f0f19fb Add missing field to category.h.
This fixes the assertion failure that checks that the categories are the
correct size.
8 years ago
davidchisnall ee12b2362a Merge pull request #38 from theiostream/class-header
Add objc-class.h to objc headers
9 years ago
Daniel Ferreira 1593ac04af Add objc-class.h to objc headers
Some applications still include the old objc-class.h header expecting
to obtain the declarations contained in objc/message.h and
objc/runtime.h nowadays. This commit adds this header to achieve
out-of-the-box compatibility with these applications.
9 years ago
davidchisnall e285ba83a9 Merge pull request #36 from theiostream/block-headers
build: add compatibility symlink for block headers

Fixes #34
9 years ago
davidchisnall 29f831b4aa Merge pull request #33 from theiostream/objc-runtime-header
Add objc-runtime.h to objc headers
9 years ago
Daniel Ferreira a9aba57e7c build: add compatibility symlink for block headers
On FreeBSD and OSX, the block runtime functions are defined on a Block.h
and a Block_private.h headers on the include path as opposed to
libobjc2's objc/blocks_runtime.h and objc/blocks_private.h respectively.

This commit amends libobjc2's install routine to create the
FreeBSD-style headers as symlinks to the ones provided by libobjc2 for
improved compatibility.
9 years ago
Daniel Ferreira a3e1a0d3ed Add objc-runtime.h to objc headers
Some applications still include the old objc-runtime.h header expecting
to obtain the declarations contained in objc/message.h and
objc/runtime.h nowadays. This commit adds this header to achieve
out-of-the-box compatibility with these applications.
9 years ago
David Chisnall 21efe9e259 Update dtables for metaclasses when exchanging methods.
Fixes #32
9 years ago
David Chisnall 0b5f66393a Add test for #32. 9 years ago
David Chisnall 2417ec5806 Remove another unused build-breaking header. 9 years ago
David Chisnall ece31319b5 Remove an unused header include that was breaking the test build if
libobjc is not already installed.
9 years ago
David Chisnall e87b5c1503 Remove an assertion that was useful in debugging, but not actually
correct.

Instance variables are not normally zero-sized, but some are.  Examples
include zero-length arrays at the end of a class, and bitfields.

Fixes #30
Fixes #31
9 years ago
David Chisnall 12d1ea62a4 Merge branch 'master' into newabi 9 years ago
David Chisnall d1eb9ad91e Ensure that asserts in the tests are still run, even in a release build.
Fixes #29
9 years ago
David Chisnall 4fd27a066f When moving ivars to increase their alignment, make sure later ivars are
also moved.

Fixes #27
9 years ago
David Chisnall 695282e5d7 Don't conditionally run some cheap code that becomes a no-ops in the
case when we weren't running it.
9 years ago
David Chisnall 5725aa74ec Fix the computation of the size when realigning ivars.
Fixes #25, #26
9 years ago
davidchisnall 25c7038ed4 Merge pull request #24 from ngrewe/ivar_layout
Test case for misaligned ivars.

This introduces a new failing test for the bug introduced when trying to correctly align vectors.
9 years ago
Niels Grewe 165f1e83bf Additional asserts
Assert that the offset of `isa` is 0 and the offset of `c_string` is
`sizeof(Class)`
9 years ago
Niels Grewe 8c79eb836c Test case for misaligned ivars. 9 years ago