Commit graph

380 commits

Author SHA1 Message Date
Richard Frith-MacDonald
af09204ffb typdef for refcount when no atimics available
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@40225 72102866-910b-0410-8b05-ffd578937521
2016-11-18 06:49:16 +00:00
Richard Frith-MacDonald
e0267770ef fix crash and other memory management tweaks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@40196 72102866-910b-0410-8b05-ffd578937521
2016-11-08 10:21:00 +00:00
Niels Grewe
fe155240e7 Re-enable fast-ARC mode when possible.
Define _ARCCompliantRetainRelease on 32bit platforms and when
we have copmiler intrinsics for atomic operations that allow us
to extend the refcount field to match libobjc2.

The effective maximum reference count is still 2^24 - 1 in either
case.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@40183 72102866-910b-0410-8b05-ffd578937521
2016-10-28 08:30:16 +00:00
Wolfgang Lux
4cdf4004e8 Don't tell a lie. The retain count representation of gnustep-base and
libobjc2 differs, so we cannot use the ARC retain/release implementation
for now.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@40181 72102866-910b-0410-8b05-ffd578937521
2016-10-27 15:00:17 +00:00
Richard Frith-MacDonald
e43c12542a Don't use windows atomics unless compiler ones aren't available
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39932 72102866-910b-0410-8b05-ffd578937521
2016-06-27 19:05:40 +00:00
Richard Frith-MacDonald
0c7237ec08 s390x portability fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39901 72102866-910b-0410-8b05-ffd578937521
2016-06-22 07:54:16 +00:00
Richard Frith-MacDonald
71941dd24d cleanup changes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39762 72102866-910b-0410-8b05-ffd578937521
2016-05-14 09:34:01 +00:00
Richard Frith-MacDonald
4a6d6225b9 tidied
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39738 72102866-910b-0410-8b05-ffd578937521
2016-05-10 17:03:02 +00:00
Richard Frith-MacDonald
d40d219015 removal of garbage collection
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39608 72102866-910b-0410-8b05-ffd578937521
2016-03-25 11:15:28 +00:00
Richard Frith-MacDonald
62d2bcbabc changes for use of _WIN32 define on windows
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39492 72102866-910b-0410-8b05-ffd578937521
2016-03-09 13:16:16 +00:00
Richard Frith-MacDonald
e27363d97d Don't initialise NSUserDefaults in NSObject+initialize ... recursion on bsd
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39393 72102866-910b-0410-8b05-ffd578937521
2016-02-18 06:56:44 +00:00
Richard Frith-MacDonald
91d3484e9b fix typo in comment
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39022 72102866-910b-0410-8b05-ffd578937521
2015-10-03 17:11:00 +00:00
Richard Frith-MacDonald
fa3b26e91c improve logging of sending bad selector to be performed
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39021 72102866-910b-0410-8b05-ffd578937521
2015-10-03 16:56:07 +00:00
Richard Frith-MacDonald
3b02814665 more updates
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@38803 72102866-910b-0410-8b05-ffd578937521
2015-07-16 08:44:15 +00:00
Richard Frith-MacDonald
841ddf78e0 memory usage interrogation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@38799 72102866-910b-0410-8b05-ffd578937521
2015-07-15 14:14:21 +00:00
Richard Frith-MacDonald
13e4d77cec fix hash generation for 64bit processors
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@38294 72102866-910b-0410-8b05-ffd578937521
2015-01-16 14:29:38 +00:00
Richard Frith-MacDonald
4101cadd82 mips fix bug #42693
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37990 72102866-910b-0410-8b05-ffd578937521
2014-07-13 07:31:33 +00:00
Quentin Mathe
354ab0f46f Fixed -respondsToSelector: and +instancesRespondToSelector: to check
+resolveInstanceMethod: and +resolveClassMethod: as documented in Cocoa 
NSObject API.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37614 72102866-910b-0410-8b05-ffd578937521
2014-01-18 16:04:34 +00:00
Richard Frith-MacDonald
3a895af609 Fix zombie creation for new runtime with hidden class for associated objects
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37553 72102866-910b-0410-8b05-ffd578937521
2014-01-07 11:09:05 +00:00
Richard Frith-MacDonald
e9ff4f3a3c Fix for bug #41111
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37551 72102866-910b-0410-8b05-ffd578937521
2014-01-07 10:41:49 +00:00
Richard Frith-MacDonald
9944f1823f attempt to fix #39125
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37479 72102866-910b-0410-8b05-ffd578937521
2013-12-20 10:45:52 +00:00
Richard Frith-MacDonald
ed09c55959 leak detection improvements
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37003 72102866-910b-0410-8b05-ffd578937521
2013-08-22 15:44:54 +00:00
Richard Frith-MacDonald
4551738b6f tweak guess of reasonable padding/alignment size when not provided by compiler
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36876 72102866-910b-0410-8b05-ffd578937521
2013-07-12 06:35:32 +00:00
Richard Frith-MacDonald
51ff14a945 Alignment fixup
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36845 72102866-910b-0410-8b05-ffd578937521
2013-07-06 07:48:26 +00:00
Richard Frith-MacDonald
d65b9254dd minor fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36839 72102866-910b-0410-8b05-ffd578937521
2013-07-05 20:31:54 +00:00
Richard Frith-MacDonald
05bf612939 Suppress unwanted compiler warning by using clang-specific pragmas only when compiling with clang.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36811 72102866-910b-0410-8b05-ffd578937521
2013-07-03 06:50:26 +00:00
Richard Frith-MacDonald
da4f7056ca printf style format tweaks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36799 72102866-910b-0410-8b05-ffd578937521
2013-07-02 15:46:26 +00:00
David Chisnall
8078bd8bee Fix -finalize to correctly call the C++ destructors even for hidden classes.
Since we're emulating the runtime here rather than calling it, we need to
ensure that we emulate it correctly.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36601 72102866-910b-0410-8b05-ffd578937521
2013-05-08 10:40:23 +00:00
Richard Frith-MacDonald
5fac2e2ca2 tidyups
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36517 72102866-910b-0410-8b05-ffd578937521
2013-04-13 10:40:15 +00:00
Niels Grewe
383d5ccec2 Changes to support clang's __attribute__((objc_root_class)).
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35412 72102866-910b-0410-8b05-ffd578937521
2012-08-16 12:31:16 +00:00
Richard Frith-MacDonald
2ae70d0d9b improvements from Niels Grewe
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35279 72102866-910b-0410-8b05-ffd578937521
2012-07-09 16:42:19 +00:00
Eric Wasylishen
4db79e6fef * Source/GSLocale.m:
- Deprecate GSSetLocale and GSSetLocaleC; they now do nothing
   but print a warning.
 - Introduce GSDefaultLanguageLocale(), which is a
   substitute for GSSetLocale(LC_MESSAGES, nil), which just returns the
   current setting of LC_MESSAGES.
* Source/NSObject.m (+initialize): Remove GSSetLocaleC call,
which was changing the libc locale.
* Source/NSUserDefaults.m: Use GSDefaultLanguageLocale() instead of
GSSetLocale(LC_MESSAGES, nil)


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34841 72102866-910b-0410-8b05-ffd578937521
2012-02-28 06:20:53 +00:00
Richard Frith-MacDonald
32fc733268 changes to support alternative header locations
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34290 72102866-910b-0410-8b05-ffd578937521
2011-12-15 09:42:39 +00:00
Fred Kiefer
8da720fc7a * Source/NSObject.m (__builtin_offsetof): Add workaround for build in missing
in old versions of gcc.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33774 72102866-910b-0410-8b05-ffd578937521
2011-08-22 11:02:10 +00:00
David Chisnall
4cdea64975 Make -base compile almost without warnings again. Fixes:
- Using the correct format specifier
- Remove substringFromRange: (GNUstep extension) from NSString.h and use the non-deprecated version in -base.
- Delete definitions of methods that are the same in both a class and a category on that class (NSArray and NSObject).

Two files still have warnings:

- The GNUTLS stuff is using a load of deprecated APIs.
- xmlparse.m replaces a method using a category.  This method seems to always return nil.  Not sure what it's meant to do, or why it isn't a delegate of some kind.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33756 72102866-910b-0410-8b05-ffd578937521
2011-08-16 16:04:43 +00:00
David Chisnall
8c89a86607 In -finalize, we're pretending to be the Objective-C runtime, so we need to
actually use isa directly, rather than the safe version.  A better solution
would be to call object_dispose(), but this only works for objects created with
class_createInstance().



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33704 72102866-910b-0410-8b05-ffd578937521
2011-08-07 18:00:55 +00:00
David Chisnall
bb2e9d0627 When calling -.cxx_dealloc, look up the superclass before calling. This method
may destroy the receiver's class, if it's a user-generated one, so we can't
guarantee that it is valid after the call.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33701 72102866-910b-0410-8b05-ffd578937521
2011-08-07 16:56:58 +00:00
David Chisnall
48e1b94ef8 Change the order of the retain count and the padding, so the retain count is
always the word before isa.

Switch to using the correct kind of alignof (the ABI alignment in structures,
not the preferred alignment of the type - this stops us from allocating 4 bytes
of padding on x86-32 where there is no need for any)



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33642 72102866-910b-0410-8b05-ffd578937521
2011-07-26 20:08:10 +00:00
David Chisnall
40456f7787 Remove the zone pointer from objects. Now we always query the zones to find the relevant pointer. Zones are still supported, but we now optimise for the case where they are not used.
To disable zone support completely, NSAllocateObject() should ignore the zone and NSDeallocateObject() should skip the zone lookup.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33610 72102866-910b-0410-8b05-ffd578937521
2011-07-23 12:19:19 +00:00
Wolfgang Lux
f9f1f879f4 Override NSObject +zone to ensure that -zone returns a valid zone
pointer when it is called on a class object.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33498 72102866-910b-0410-8b05-ffd578937521
2011-07-10 14:48:26 +00:00
David Chisnall
0618607b3a Use -retainCount instead of NSExtraRefCount() in gs_weak_load() so we can support objects that define a custom retain / release mechanism in weak variables.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33478 72102866-910b-0410-8b05-ffd578937521
2011-07-07 12:29:54 +00:00
David Chisnall
35f66911a8 Fix typo NS -> GS. We don't actually want NSAllocateObject to call NSAllocateObject...
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33458 72102866-910b-0410-8b05-ffd578937521
2011-07-04 21:23:26 +00:00
David Chisnall
2a2d7339d1 Switch the order of the reference count and the zone so that the reference count (in reference counted mode) is always immediately in front of the object. Please test this!!
Opt NSObject into the fast path for ARC.  ARC will now not call the retain / release / autorelease methods on NSObject or any classes that inherit their implementation of these methods from NSObject.  In quick and dirty testing, this gives about a 10-20% speedup.  



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33446 72102866-910b-0410-8b05-ffd578937521
2011-07-04 11:31:28 +00:00
David Chisnall
38566d1888 Don't call c++ constructors when allocating a class with class_createInstance() - this function calls them itself, and calling them twice is a bad idea.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33436 72102866-910b-0410-8b05-ffd578937521
2011-07-03 11:04:04 +00:00
David Chisnall
46b12a71e8 Add support to NSObject for automatically zeroing __weak references when using ARC.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33408 72102866-910b-0410-8b05-ffd578937521
2011-06-29 13:13:15 +00:00
Richard Frith-MacDonald
e84d049078 Add some flexibility
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33355 72102866-910b-0410-8b05-ffd578937521
2011-06-20 07:33:27 +00:00
Richard Frith-MacDonald
c5c5f18075 fix a couple of leak detection bugs
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33353 72102866-910b-0410-8b05-ffd578937521
2011-06-20 04:37:20 +00:00
Richard Frith-MacDonald
523366101e more leak cleanup stuff
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33349 72102866-910b-0410-8b05-ffd578937521
2011-06-19 13:34:17 +00:00
Richard Frith-MacDonald
9831216043 Start stuff for handling cleanup on process exit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33344 72102866-910b-0410-8b05-ffd578937521
2011-06-19 09:26:03 +00:00
Richard Frith-MacDonald
6707dd35ad Patches by Sebastian Reitenbach
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33338 72102866-910b-0410-8b05-ffd578937521
2011-06-18 12:57:30 +00:00