Commit Graph

4188 Commits

Author SHA1 Message Date
Mark Brand
38d4618eb5 remove vestiges of text codec plugins
follow-up to 3a3356a850

Change-Id: Iba84958cbcd105ec702568752090719cc108e101
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-25 02:22:20 +01:00
aavit
48f9ba388b Remove support for the MNG file format and the bundled libmng
The MNG file format is generally abandoned, and libmng has been
unmaintained for several years.

The MNG plugin and bundled libmng has been moved to the
qtimageformats project on Gerrit.

Task-number: QTBUG-21869
Change-Id: I946432347014ffde2b72307a5f8b166ca5553602
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-01-25 02:22:18 +01:00
Andrew den Exter
c0d30db45c Add a changed() signal to QValidator.
This provides a general notification of changes that may change the
validity of previously validated input.

Change-Id: I5ec6f127af60fdca68605fee903a08758bc01360
Reviewed-by: Jonas Gastal <jgastal@profusion.mobi>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-25 00:58:12 +01:00
Lars Knoll
4830b790fe Fix a compile error in qsql_sqlite2.cpp
The compile error got introduced due to the
change in QMetaType requiring fully defined
types for pointers.

Change-Id: I6383ff5923fc1d5bd3c1161e2823e83f2a06a99e
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-01-25 00:55:35 +01:00
Simon A. Eugster
7e828e365e Document where modelReset() is emitted
The resetModel() signal indicates that the model is reset. Previously
there was no note that the signal is emitted also when endResetModel()
is called.

Task-number: QTBUG-23755
Change-Id: I6c3c1ccef580e9c1112c3af79912cffca675e140
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-01-25 00:55:24 +01:00
David Faure
9096334d14 QKeySequence: fix copy/paste error in autotest
Change-Id: If03a99c9aa7210d3f166c2674831c645f67b1794
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-01-25 00:07:59 +01:00
Olivier Goffart
cf5b3c18dd Remove Q_COMPILER_FINAL
Merge it with Q_COMPILER_EXPLICIT_OVERRIDES

No compiler will implement one and not the other,
"overrideS" is a shortcut for the two features

It was even wrongly not defined with clang

Change-Id: I22dcffe6f0c96285c2b409a5ae9ce2f6f1652094
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 19:12:23 +01:00
Friedemann Kleint
992e50e421 Add autotest for failing signal connection.
Change-Id: Iaae93253fa6d1ca0798d05d69a7ab6d6ff8b60bc
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-01-24 19:12:23 +01:00
Bradley T. Hughes
ed1d0886ca Re-enable 'make check' for tests/auto/widgets
We want the autotests for the QtWidgets library to be run on Mac OS X as
well.

Change-Id: Ie731b802b64222c84116e2df82f536acf4971565
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
2012-01-24 19:12:23 +01:00
Stephen Kelly
9af77d214a Deprecate QAbstractItemModel::reset().
It is broken in most uses because it emits modelAboutToBeReset()
after actually resetting the internal data instead of before.

That is, usually it is used like this:

myData.clear();
reset();

Which should be

beginResetModel();
myData.clear();
endResetModel();

Change-Id: I7b00a1e40c4915930944340764074efc29faaf5a
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-01-24 19:12:23 +01:00
Mark Brand
764840ec0e add missing move* methods to QAbstractItemModel
The existence of QAbstractItemModel virtual methods
    moveRow, moveColumn, moveRows, and moveColumns
is implied by the existence of
   beginMoveRows, endMoveRows, beginMoveColumns and endMoveColumns.
However, these were not actually provided by QAbstractItemModel.

With this change, subclasses can implement support for moving rows
and columns following the same pattern as for insert* and remove*.

Change-Id: Iad8b2223d4b9303abb6459c174a82ffed71a0fdf
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-01-24 19:12:23 +01:00
Jiang Jiang
af48e0ba36 Move glyphMargin() to QFontEngine
glyphMargin() support for QTextureGlyphCache is implemented in
respective font engines, thus this function is platform dependent.
Before Qt 5 the code is guarded in macros like #ifdef Q_WS_MAC,
now we should move them into QFontEngine and its subclasses.

So far only Windows font engines support it. FreeType and Core Text
based font engines all ignore it.

Change-Id: Ia14016533d8fbfaacf848a7d3bc928f8197318f5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
2012-01-24 17:42:04 +01:00
Giuseppe D'Angelo
601d685849 Make mid() and midRef() properly return empty, non-null objects
If we request a substring starting at the very end of the string,
QString::mid should return an empty string, not a null string.
For instance, QString("abc").mid(3, 0) used to return a null
one, while this patch makes it return an empty one. The
same thing applies to QString::midRef() and QByteArray::mid().

Change-Id: Ie9efd7a0622d429efd0fb682c19856c19e9469af
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 17:36:11 +01:00
Samuel Rødal
b39df8bf92 Made window orientation API more flexible.
Previously we only had QWindow::setOrientation() which was a hint about
the orientation the window's contents were rendered in.

However, it's necessary to separate between the orientation
corresponding to the window buffer layout and orientation of the
contents. A game for example might typically want to use a landscape
buffer even on a portrait device. Thus, we replace
QWindow::orientation() with QWindow::reportContentOrientationChange() and
QWindow::requestWindowOrientation().

Change-Id: I1f07362192daf36c45519cb05b43ac352f1945b5
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 15:38:48 +01:00
Friedemann Kleint
b0a0403daf QMessageBox: Clean up some Q_WS_WIN code.
Enable 'Close' of system menu according to whether escape
button is present.

Change-Id: I305e4732f781dbe2d81c2503ee278ec33579acdb
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
2012-01-24 15:33:19 +01:00
Lars Knoll
37a7b035f8 Import json support from playground/qtbinaryjson
This imports the JSON support for Qt 5 from
playground/qtbinaryjson.

It adds a fast, fully compliant json parser, a
convenient C++ API, conversion to and from
QVariants and a binary format for JSON that is
extremely fast to use together with the C++ API.

Change-Id: If9e3a21a4241d388d0abaa446b6824f9cc6edb1c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 15:28:20 +01:00
Stephen Kelly
4b8ceb41ae Store the is-a QObject fact with the metatype declaration.
This is a source incompatible change for Q_DECLARE_METATYPE(T*),
which now requires T to be fully defined.

The consequences of this are:
 * Forward declared types can no longer be declared as a metatype.
     (though this is a very uncommon thing to do).

There is a trivial workaround where necessary.

Change-Id: Id74c40088b8c0b466fcd7c55abd616f69acc82c8
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 15:27:25 +01:00
David Faure
6efefb3fe5 QKeySequence: add tests, fix handling of '+' as key or separator.
Change-Id: I3c471dff9b46025aab762d36bb3a3adc64ced561
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 15:27:17 +01:00
David Faure
84bdb7b61f Make QUrl always lowercase the scheme().
URL schemes can only contain alphanumeric characters and all
protocols specify that they are case-insensitive. So instead
of doing case-insensitive comparison everywhere and then get
it wrong sometimes, better to lower-case it here.

Change-Id: I61f51a3f4c85b90af1586ebcf69608987fbe2ec3
Reviewed-by: Jonas Gastal <jgastal@profusion.mobi>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 15:27:08 +01:00
David Faure
0e06e47a0b Remove dependencies on removed "TEXTSTREAM" option (f65a10b733)
Change-Id: If7d6ca7af8eb305bd127776a35223d50c1fb4f04
Reviewed-by: Tasuku Suzuki <tasuku.suzuki@nokia.com>
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
2012-01-24 15:23:54 +01:00
Joerg Bornemann
3bc42e860d use QWinOverlappedIoNotifier in QWindowsPipeReader
Change-Id: I71d5feaa07e8febd6c562be1dc6d7790e3a1606c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-01-24 14:40:32 +01:00
Joerg Bornemann
096b49bc1e QWinOverlappedIoNotifier introduced
For asynchronous (overlapped) I/O notification on Windows one
can now use the convenience class QWinOverlappedIoNotifier.
It's using one global I/O completion port and a watching thread to
get notified when a read or write operation completes.

Change-Id: If6f904b364be0405580c7e50355529ab136ae3cb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-01-24 14:39:58 +01:00
Kurt Korbatits
746c148c95 Changed qnetworkdiskcache unittest to cleanup test directory.
- Remove foo directory tree after run.

Change-Id: I2d554b4c64fc7162c7717c840534cf77f5e744d0
Reviewed-by: Kurt Korbatits  <kurt.korbatits@nokia.com>
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
2012-01-24 06:59:21 +01:00
Kurt Korbatits
f5ef6bc58a Changed qtextdocument, qtextdocumentlayout unittests to cleanup tmp files.
- qtextdocument unittest to remove foo.png after test.
- qtextdocumentlayout unittest to remove expected.png and img.png after test.

Change-Id: I42971e9128d399cadc87b9fd345c868065f180a9
Reviewed-by: Kurt Korbatits  <kurt.korbatits@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
2012-01-24 06:59:15 +01:00
Kurt Korbatits
1509739d43 Changed painting unittests to remove created files after run.
- qpainter cleans up temp files dest.png, expected.png and foo.png
- qpainterpath clean up temp file data
- qprinter cleans up silly, out1.ps, out2.ps, test.pdf and file.pdf

Change-Id: Id434bea0bae5b970355206a250456e4beeca8060
Reviewed-by: Kurt Korbatits  <kurt.korbatits@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
2012-01-24 06:59:09 +01:00
Kurt Korbatits
5f22288346 Changed qpixmap unittest to remove created file after run.
- Removes temp_image.png after test run.

Change-Id: I0b233609c2bbf57151cf173181a40738d934f0ec
Reviewed-by: Kurt Korbatits  <kurt.korbatits@nokia.com>
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
2012-01-24 06:59:04 +01:00
Kurt Korbatits
8820f83646 Changed qxmlstream unittest to remove its created file after run.
- Removes test.xml after test completed.

Change-Id: I548e2d644cca8ae0d30c3002df45cf57433170af
Reviewed-by: Kurt Korbatits  <kurt.korbatits@nokia.com>
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
2012-01-24 06:58:58 +01:00
Kurt Korbatits
2d1150e6e3 Changed qdatastream unittest to remove the test file it creates.
- Remove datastream.tmp file after test completed.

Change-Id: I844600f0a477397d129fd01ac755183c2d874da4
Reviewed-by: Kurt Korbatits  <kurt.korbatits@nokia.com>
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
2012-01-24 06:58:53 +01:00
Kim Motoyoshi Kalland
97ba018492 Allocate mipmaps in FBOs with glTexImage2D, not glGenerateMipmap.
Change-Id: I7b7d26da97f82f354d81913eccab46d79ec9e8f0
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2012-01-24 02:45:13 +01:00
Holger Hans Peter Freyther
17c13e1e9d mkspecs: Remove qtopia*.prf from the mkspecs
Qtopia was killed some time ago and these files do not have a direct
use. Qt was embedded into the Qtopia sourcetree and it would be in the
hands of the Qt Extended fork to move to Qt5 and update the buildsystem.

It is unlikely that a Qt5 qmake will be used to build the Qt extended fork
as a copy of Qt is embedded in the source tree.

Change-Id: I2ef309c381aaf1d265ef385e85fd5c72d6205765
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-01-24 02:43:03 +01:00
Janne Anttila
be62e8315d Fixed automatic plugin path resolving for predefined Qt plugins.
When Qt is configured for static build, importing static plugins is
supposed to work as described in docs:
http://doc.qt.nokia.com/latest/qtplugin.html#Q_IMPORT_PLUGIN

This commit updates the qmake mapping for predefined Qt plugins, so
that Qt plugins are automatically found when QTPLUGIN keyword is used.

Task-number: QTBUG-18609
Merge-request: 1391
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
(cherry picked from commit 0d0c1082f74888044713d96deca2d510951d018a)
Change-Id: I0d0c1082f74888044713d96deca2d510951d018a
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
2012-01-24 02:42:55 +01:00
Olivier Goffart
c0323cfbaf Test connecting to virtual function pointer
The C++ standard says that the comparison between pointer to virtual
function is unspecified (C++11 $5.10.2)
But we still may rely on it for the Qt::UniqueConnection and the
disconnection

So test if it works while using the same function.
Using function from different classes works for me, but we should
probably not assume it works. I left it commented in the test for
reference.

Change-Id: I1d9b91d4cc1a424d4f43ef2ee4981b8573f1e86f
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:13:01 +01:00
Andreas Holzammer
d584292aa2 Make it possible to compile with -no-opengl.
This takes out the dependency to the header files
of OpenGl. The ifdef QT_NO_OPENGL in the opengl headers
are needed, as qmake adds depends in the makefiles
for all GUI headers.

Task-number: QTBUG-23207

Change-Id: If31448ee35fd8c39194c7cb7d62273fbc6def883
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2012-01-24 01:11:22 +01:00
Xizhi Zhu
dc39531acc Remove reference to Symbian in QtNetwork.
Change-Id: Iae377505e36ae1239be7ce52c773dc2a4f4a9767
Reviewed-by: Jonas Gastal <jgastal@profusion.mobi>
Reviewed-by: Peter Hartmann <peter.hartmann@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 01:09:25 +01:00
Xizhi Zhu
26e92680e9 Remove Symbian / S60 code from util.
Change-Id: I00a151a5f23bb7258f78712cce569b324c92c7d7
Reviewed-by: Jonas Gastal <jgastal@profusion.mobi>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 01:09:22 +01:00
Xizhi Zhu
65bad77d26 Remove Symbian code from QtCore.
Change-Id: I9abdc674bcfa7bb38ce27c5213c5a672f59e63d5
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 01:09:19 +01:00
Xizhi Zhu
8511ed8bc2 Remove Symbian specific code from QtGui.
Change-Id: I103abb545d1a5deed7d40c0b50fc3eff0c89d622
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 01:09:16 +01:00
Xizhi Zhu
8cb2fc67fa Remove Symbian and Maemo code from uikit plugin.
The code is only supposed to be used by iOS, so platform specific code
is removed.

Change-Id: Ibea585dfac9e6a7a87e66a1426793dfd8713fdef
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-01-24 01:09:12 +01:00
Robin Burchell
345cd69c5b Remove Qt 5 notes that would result in source incompatibility unnecessarily.
Change-Id: Ib221ab078f9ff5c385d35699ee1d093b0e95557c
Reviewed-by: Jonas Gastal <jgastal@profusion.mobi>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:09:08 +01:00
Robin Burchell
1806ea8dd9 Add the capability to use multiple data sources for qhash benchmark.
More data sources to be added in followup commits.

Change-Id: I0393119b36ac5d88fc2c5c8d46b000d13d5ca996
Reviewed-by: Richard J. Moore <rich@kde.org>
2012-01-24 01:09:05 +01:00
Robin Burchell
47d0813f5b Remove executive summary.
It isn't necessarily that hashing the whole string is the main problem, as the
recently added java string benchmark appears to show, which means the original
purpose of this benchmark is rather voided.

This removal allows gradually repurposing the test towards providing general
benchmarks of QHash performance.

Change-Id: Iaab0a3b493387dcce99240632342235ed9c44d88
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
2012-01-24 01:09:01 +01:00
Robin Burchell
f61112aa32 Move test files around.
main.cpp is easier for my muscle memory to remember than qhash_string as it is
used by a number of other tests.

Change-Id: I044f995d55a4ff1328dde0ae27b6e36a80114c38
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
2012-01-24 01:08:55 +01:00
David Faure
2c3221dd07 Add missing documentation to QTemporaryDir constructors
Change-Id: Ic7dea331695fa4653e4b963fef8383f44c3b1fb8
Reviewed-by: Jonas Gastal <jgastal@profusion.mobi>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2012-01-24 01:08:52 +01:00
Jonas M. Gastal
b5f2dd65ac Make QAbstractSocket's API virtual where needed.
The following methods have been made virtual:
setReadBufferSize()
socketDescriptor()
setSocketDescriptor()
socketOption()
setSocketOption()
waitForConnected()
waitForDisconnected()

Now that these methods are virtual we no longer need the nasty
polymorphism workarounds for QSslSocket.

Change-Id: I319989b6cdb025ba33d7d53ae90f3a6a3b6b1b7b
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Peter Hartmann <peter.hartmann@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:08:50 +01:00
Thiago Macieira
1955353149 Port the IA-64 atomics to the new QBasicAtomicXXX architecture
The IA-64 architecture supports the actual memory ordering semantics
in many instructions, but not all. We actually implement the functions
for all operations, so we get the best possible output.

It does support proper load-acquire and store-release semantics, but
we don't need instructions for it: the ABI requires that a volatile
load be acquire and a volatile store be release.

The Intel and HP compiler codepaths are rewritten, but untested.

Change-Id: I7aa62a4ec65f63a97d1bbd8418bb2492c2be465f
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:08:42 +01:00
Thiago Macieira
99fb1bea49 Port the MIPS atomics to the new QBasicAtomicXXX architecture
The LL/SC instructions are only present on MIPS II and up, so don't
pretend to support MIPS I. The previous implementation emitted the
instructions by telling the assembler to change instruction sets. Now,
the user must pass an -march= option to GCC telling it which
architecture or processor is being targetted.

On MIPS64, the 64-bit implementation allows supporting for long long
too.

Change-Id: I6dae6f8f61e563aba6a663227d91c5ddf554aa6a
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:08:38 +01:00
Thiago Macieira
dc5388e79b Port the ARM atomics to the new QBasicAtomicXXX architecture
The implementation is divided in two files, as it used to be in the
previous implementation: one for ARMv5, one for ARMv6 and up.

For the ARMv5 implementation:

    Drop the non-Linux EABI version of the atomics, as it's not
    ABI-compatible with the ARMv6 and ARMv7 implementations. This
    means this ARMv5 implementation only works on Linux. If other
    systems implement kernel helpers like Linux, they can be added
    too.

    We use the __kernel_cmpxchg located at 0xffff0fc0 to implement the
    operations, except for fetchAndStore, for which we use the SWP
    instruction.

    Also introduce the use of __kernel_dmb (at 0xffff0fa0) for the
    memory barrier. Now this code is SMP-safe even when built with
    ARMv5.

    The kernel cmpxchg helper was introduced in Linux 2.6.12, whereas
    the dmb helper was introduced in 2.6.15. That means 2.6.15 is the
    minimum version now.

For ARMv6 and up:

    Introduce byte, half-word and doubleword atomics that work on
    ARMv6K and up.

    For ARMv6 specifically, the memory barrier instruction (DMB) isn't
    present, so we need to accomplish the same with the MCR
    coprocessor instruction.

Change-Id: Ife7f9b920bcc7d1eef7611761f6c59ea940ec7df
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:08:36 +01:00
Bradley T. Hughes
835a2b9902 Make clang compile the new i386 and x86_64 atomic code
The input type needs to match the output type, otherwise we get this
error:

src/corelib/arch/qatomic_x86_64.h:288:25: error: unsupported inline asm:
      input with type '<dependent type>' matching output with type 'T':
                   "0" (valueToAdd * QAtomicAdditiveType<T>::AddScale)
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Change-Id: I26d4efdbcab089dea71ef08e3e65df5b7482865a
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:08:31 +01:00
Thiago Macieira
ba660ea754 Port the i386 and x86-64 atomics to the new QBasicAtomic architecture
Both implementations now are very similar to one another, to the point
we could share the code if we wanted to. They are based on assembly
code for the Relaxed functions only, as the i386 and x86-64
architectures only allow for full memory ordering or something that
closely resembles it (see 8.2 "Memory ordering" in the Intel 64 and
IA-32 Architectures Software Developer's Manual Volume 3A). We could
add "lfence/mfence/sfence" in future versions if we wanted to (SSE2+).

Change-Id: I76966d9f8694edfece2c5ebd3387348fac721447
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:08:28 +01:00
Thiago Macieira
161d5eb323 Port the bootstrap atomics to the new QBasicAtomic architecture
The code is now much simpler and much more complete. Now the bootstrap
atomics (which aren't atomic at all) contain the full set of
operations.

The only integer supported is int, but all others would work too.

Change-Id: Id99f07818f9da059c4ff02520f9cbf2d1a71a514
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-01-24 01:08:24 +01:00