aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
| * Add debugging function to dump Value contents.Erik Verbruggen2013-03-132-0/+84
| | | | | | | | | | Change-Id: I45e1d1d13fe7dee22809734595a3fbbfd03b123d Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Moved temp compression to codegen to use for all backends.Erik Verbruggen2013-03-132-161/+160
| | | | | | | | | | Change-Id: I3afba14741f18782e71210b14d9d091fe0bebc51 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Added the constant propagation optimization.Erik Verbruggen2013-03-122-2/+241
| | | | | | | | | | Change-Id: I4fe680ff334a13085df425ad2badad08e548f21f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix & re-enable Temp compression for the interpreter.Erik Verbruggen2013-03-122-12/+18
| | | | | | | | | | Change-Id: Ie9e767d36d3d810bf0d2a173d04954277041f68f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix crash when calling Object.create(null)Simon Hausmann2013-03-121-1/+1
| | | | | | | | | | | | | | | | O is allowed to be null here, so don't use objectValue() unconditionally and instead use asObject(). Change-Id: I3e868d3486d2de109c94aef8a7de16110a3a8326 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Add support for ARM exception unwindingSimon Hausmann2013-03-126-13/+210
| | | | | | | | | | | | | | This is used only on Linux/ARM. iOS uses setjmp/longjmp. Change-Id: I06f907ce702c1b8e06a50ac31b5486d11ef392ec Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Make it possible to debug exception handling with libunwindSimon Hausmann2013-03-122-0/+37
| | | | | | | | | | | | | | Run qmake with CONFIG+=debug-with-libunwind. Change-Id: I02f5820a1c8ee9132dac521d182007800c250103 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Inline the two most common parameter fetch cases.Erik Verbruggen2013-03-111-2/+48
| | | | | | | | | | | | | | | | | | | | | | By inlining temp and local fetching, the interpreter is 30% faster on x86 on crypto.js. x86_64 gains about 35%. As the comment in the source already indicates: this might need some tweaking for QML. Change-Id: I9aa51036d42d2749f9aeec39a479d9e5f6233a23 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Mark asm math functions as const.Erik Verbruggen2013-03-111-3/+9
| | | | | | | | | | | | | | | | This allows gcc to inline slightly better, gaining 1% in the interpreter. Change-Id: Ia0ebc9eb698f12de4ff7860e9f62a62dbd782ccd Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Catch more exceptions in the v8 API layerLars Knoll2013-03-112-21/+68
| | | | | | | | | | Change-Id: I7af3abbbf8cae86abe31a0d55d3d4c7e8c91a803 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Write properties back to the qml ObjectLars Knoll2013-03-113-1/+7
| | | | | | | | | | | | | | | | | | The object acts as a replacement for the QML scope chain. We need to write values to it even if __hasProperty__ returns false. Change-Id: I97856ab8cc3a7a728bb244f40b9f230a415b5a33 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Add a proper constructor to v8::FunctionTemplateLars Knoll2013-03-112-4/+10
| | | | | | | | | | Change-Id: I59b414484c05d8292ee7300860ef9e0611da49e6 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Properly mark objects at the beginning of a chunkLars Knoll2013-03-111-3/+2
| | | | | | | | | | | | | | | | | | | | Objects at the beginning of a chunk didn't get marked properly as qLowerBound in the mark() method returned an even number for them. Fix this by subtracting one to the beginning of the chunk. Change-Id: I1abd7e24f5b7f374fc0776b7d891a3124fee7270 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Fix v8::PersistentLars Knoll2013-03-102-18/+61
| | | | | | | | | | | | | | Implement it in a similar way as PersistentValue Change-Id: If4adba61a8bfedce657f07ee24662c3b13384fd9 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Add exception handling support to the v8 APILars Knoll2013-03-092-20/+70
| | | | | | | | | | | | | | | | Not all calls are yet propertly protected by try/catch statements, but it should work in principle. Change-Id: I5ddaf433b0a454106dc2743fe2ccfc5822fb3926 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Implement more missing bits & pieces including a fake "QML mode"Simon Hausmann2013-03-083-16/+52
| | | | | | | | | | Change-Id: Ifbbc5004ada03b6efa7a9884938ff5d59220c5fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix name lookup for named function expressionsSimon Hausmann2013-03-086-6/+31
| | | | | | | | | | Change-Id: Ia36b2b5c5b40475450fe369c7d6cb5e3965a4488 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Implemented a whole more API...Simon Hausmann2013-03-084-86/+171
| | | | | | | | | | Change-Id: Ica73c21e58b406abd6310c59ec0f541ae2cc9155 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Implemented invocation callback on FunctionTemplateSimon Hausmann2013-03-084-48/+98
| | | | | | | | | | Change-Id: I718f10f28a053eda78e086407183706e8fad317b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Implemented v8::ArgumentsSimon Hausmann2013-03-082-20/+23
| | | | | | | | | | Change-Id: I02f7072c13c319b1bdf77471360308bd0d0d3d2a Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Implemented Template::SetSimon Hausmann2013-03-082-2/+21
| | | | | | | | | | Change-Id: I237fdf6acdfad9805306e4fc5f437457efa8eb7f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Minor API change for easier implementationSimon Hausmann2013-03-082-5/+5
| | | | | | | | | | | | | | | | Change v8::Template::Set to take Handle<Value> instead of Handle<Data> and remove incorrect Data inheritance from Value Change-Id: Iaa71d4437c9913c7a79bc5322f05dafce6e3c89c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Various fixesSimon Hausmann2013-03-082-36/+49
| | | | | | | | | | | | | | | | | | * Make V4V8 object a template in preparation for future changes * Fix handle <> local conversions * Implemented v8::External Change-Id: I27b57c767a31393e1b8b05f3150c16158b178f0d Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Remaining implementation of ObjectTemplateSimon Hausmann2013-03-082-10/+178
| | | | | | | | | | Change-Id: I299b252346b2c5696fb11eb7b8dc527d94dbaf3b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * First implementation of ObjectTemplate::SetAccessorSimon Hausmann2013-03-082-8/+160
| | | | | | | | | | Change-Id: Iee403e3b542423726f95a0b516a4e2d5938ea2ed Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix use/def for exception var.Erik Verbruggen2013-03-081-1/+4
| | | | | | | | | | | | | | | | | | A try defines the exception var, because it is the first time it is mentioned. It might also use it, but that could be seen as an initialization. Change-Id: Ibacd12edc02f99c8049003655373122d7916978b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Fix liveness analysis.Erik Verbruggen2013-03-081-5/+8
| | | | | | | | | | | | | | | | | | When a move has a temp that is either a scoped local or a formal, then instead of "returning" from the visit, the source expr still has to be visited. It might contain a use. Change-Id: Ibd54fdc3488b1348e63ecd5a0c1b1036ae111c8a Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix MSVC build.Erik Verbruggen2013-03-081-0/+53
| | | | | | | | | | | | | | | | Suppress error for methods that have to return a value, but are marked as Q_UNIMPLEMENTED by adding a Q_UNREACHABLE. Change-Id: I2f7d3027fd5a8949b7c330d8cab3f3f095e11450 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Compile fixes for MSVC.Erik Verbruggen2013-03-081-122/+122
| | | | | | | | | | | | | | | | | | | | When a class is dllexported, the methods cannot also be marked as such. They are exported automatically. The error message is: d:\dev\v4vm\src\v4\qv4v8.h(1525) : error C2487: 'New' : member of dll interface class may not be declared with dll interface Change-Id: Ib44ee401e35c723b20c8c9f2dceab02736c77a3f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * "Fix" llvm build.Erik Verbruggen2013-03-072-0/+8
| | | | | | | | | | | | | | In a way that it the compiler doesn't complain anymore. Change-Id: I877b1a051b2ffcbd63a04cf219733b2b21cb9128 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix exception handling on Mac OS XSimon Hausmann2013-03-071-29/+55
| | | | | | | | | | | | | | | | Re-introduce the old register_frame and deregister_frame approach on Mac OS X until we have something faster. Change-Id: Idf524857c91175535184b29c11265c7d26f064a7 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
| * Simple but effective dead-assignment removal.Erik Verbruggen2013-03-071-0/+39
| | | | | | | | | | | | | | | | | | At the moment we only generate a dead assignment when initializing the return value to undefined (and subsequently assign to it). With upcoming patches, esp. constant propagation, there will be more dead assignments. Change-Id: I423ed77fb0693ca6c2855d1e0200e6a205d01f4f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix String::get and start using itLars Knoll2013-03-074-55/+49
| | | | | | | | | | Change-Id: I80cc7533effad2a1fa3fe60c2596ed9d27e843c9 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * And use the vtbl methods for delete as well.Lars Knoll2013-03-078-36/+33
| | | | | | | | | | Change-Id: I7632382ccb8aa2f8ae733f638bb42eddbc739c6a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Implement Object::query/queryIndexedLars Knoll2013-03-071-2/+10
| | | | | | | | | | Change-Id: I7feea63d0e9eb7c1e633536aea4c4a4dbd03b462 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Cleanup put and properly implement it for stringsLars Knoll2013-03-0712-67/+145
| | | | | | | | | | Change-Id: I10dda09c8a087bc7ef34c0315c698e08c35ec28d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Fix build with clangSimon Hausmann2013-03-071-1/+1
| | | | | | | | | | | | | | It suggests a template keyword here to make it clear that As() is template dependent Change-Id: I0a228ad51b7a7a09e3774465f7118e3e6e247e93 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * First part of moving get/put etc. into the Managed vtbl.Lars Knoll2013-03-0722-125/+285
| | | | | | | | | | Change-Id: I6fe14b02205901dbffa25c6c1b4883fb99586417 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Make Object::hasProperty() inlineLars Knoll2013-03-074-36/+21
| | | | | | | | | | | | | | Simply call getPropertyDescriptor instead Change-Id: I9e156a45dd10bf250fa156820ec2f3d5bbe80bbc Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Implement v8::AccessorInfoLars Knoll2013-03-072-8/+12
| | | | | | | | | | Change-Id: I72598ad9941b35e7268f6a90c26c91f37593bed4 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Remove v8 internal namespaceLars Knoll2013-03-072-11/+2
| | | | | | | | | | Change-Id: I78d0ddb1b5b790cb74cfa2d115e7dd47ebb30ab1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * A few more API methods implementedLars Knoll2013-03-062-5/+19
| | | | | | | | | | Change-Id: I4168ad5bb934a74e6957969417fdcf491a7374a1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * More v8 APILars Knoll2013-03-061-7/+36
| | | | | | | | | | Change-Id: If62d4a0dbe8f59d62bef2cce0bb9002be47957bc Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Implement more of the v8 APILars Knoll2013-03-064-39/+70
| | | | | | | | | | Change-Id: Ibc8feb95b9473712105cf79e98fc0cef8c3b0fe7 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Fix slowness in unwind table registrationSimon Hausmann2013-03-066-20/+76
| | | | | | | | | | | | | | | | | | | | | | | | __register_frame and __deregister_frame are very slow when called with many functions many times, like in some of the tests that use a lot of eval(). Change the approach to interposing a function symbol that is called in libgcc whenever a PC -> FDE lookup is required. This also changes the code to create the unwind info on-demand. Change-Id: I99dfcc921b087831ad00f79bad9e7bcfb0cc8c33 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Make sure that the value stored in the Exception object is not garbage collectedSimon Hausmann2013-03-064-2/+64
| | | | | | | | | | Change-Id: I7e3c4e0d1d9a23a54922a3254962ac2dc42bf67b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Get rid of 'Value ExecutionEngine::exception' memberSimon Hausmann2013-03-069-55/+25
| | | | | | | | | | | | | | | | | | Instead the JS exception value is now part of the C++ Exception object. This also allows getting rid of some run-time functions. Change-Id: I43ff773cacd5e925ba96601f3633ccf3b62273be Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Get rid of the builtin_get_exception call in the IRSimon Hausmann2013-03-0613-57/+23
| | | | | | | | | | | | | | | | Instead allocate a temp to hold the exception to rethrow and pass the address of that to the TRY statement. Then it can be set in the run-time. Change-Id: Ic15869e8e5ab5119b26f98fc45dbdb1a2ad9d21e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Cleanup: Get rid of calls to builtin_{push,pop}_catch_scope in the IRSimon Hausmann2013-03-0613-57/+38
| | | | | | | | | | | | | | | | These calls aren't needed anymore and can easily be done on the run-time level instead right before and after calling the catch block. Change-Id: I445361688782d12269764578e83ebb21ae184190 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Implement a few mere methods in the v8 APILars Knoll2013-03-062-24/+47
| | | | | | | | | | Change-Id: Ia95866060e27c4311ce819c7aec04f328fa8eca1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>