| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| |
| |
| | |
Simplify the naming conventions, so that both the instruction
struct and enum start with upper case letters.
Change-Id: I60c5a95d729e0b68b5a40f7db0e8f90be5938032
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is big enough for generated bytecode, and gives more uniform
sizing in our instructions (everything's an int), that will simplify
moving over to a compressed instruction stream.
Change-Id: Ieb13c5db84348f11c3297c08dca640bb9ec5f224
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Don't emit any Line instructions anymore, and instead store
the info in a side table in the compiled data, where it can
be looked up on demand.
Change-Id: Idcaf3bf4ee4129fd62f9e717bf1277dc6a34fe19
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
To avoid additional overhead on most function calls
Change-Id: I2477b91fda6216b508c8331884a02b601f65590c
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Remove the unused Create/Construct instructions, and
rename the single remaining one to 'Construct'.
Change-Id: I10163a15681156f37e34d21a05d195d3c22adcff
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ib5d5dc3b0e4a67b950ca9804edd3b6434fcdf9d1
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
for comparisons with null or undefined.
Change-Id: I4a70d12ace501e4c4735b2ccfd6de19aeb9fef22
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
as 0 is used quite often.
Change-Id: I2c952ef077590f6e6cfe9aad50807f5e0f8686e4
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
They are not used anymore.
Change-Id: I0cb3754899a30d5f88279ff31296fd73edf90a9a
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I2770ec4ef173cfa51c5ebd6600788de79684b953
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ib726d55a32d868a4a547b0530b8b6dc6cd99a3cf
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Iab0b77328f5756972ef6eff82c0041b184290a32
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
don't use the return value register for normal functions
anymore. It's still needed for eval code and qml bindings
that have an implicit return value, as the accumulator gets
clobbered too easily in those cases.
Also get rid of the exit block we used to generate.
Adjust the control flow handlers to correctly unwind. This
required adding some jump instructions that left the
accumulator untouched (as it now holds the return value)
and using those in handlers.
Change-Id: I2ca1afaf7234cb632e5d26ba5b10ec3f11f50c93
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ib8af10a48749b16c48d75c91ad215396b201a9d5
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
And adjust the name of the corresponding runtime functions.
Change-Id: I4adf7b0e069d9b0dff9162cd1271dafc60be854b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix the push/pop context instructions to not modify the JS
stack anymore, as that can cause conflicts with the VME
(and was an ugly hack in any case). Instead, these instructions
not return the old context, that is then stored in a temporary.
Get rid of Engine::current and Engine::currentContext. The
StackFrame structures do now contain the only and authoritive
data. This finally gives us a nice setup where we create and
destroy frames on the stack when entering/leaving functions.
Change-Id: If161e3e941f59865c47ecfe1e094faf62b52bfa0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
The indexed getters and setters haven't been used for a while and
don't offer any performance benefits currently.
Change-Id: Ifd5e1fab934e6e9940c4f1ad67f8850f04597504
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We know at compile time whether an arguments object should be strict
or non strict (unmapped/mapped in ecmascript 6), use separate instructions
for both cases.
Change-Id: Ia23e68003beeda41a1f3597c0ba0980954c80ec7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Iac0fb5c955354c8137b551196278b822acc1b324
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ib7923863a88aacab93b06fa3c75d788fcfc0bf4e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ibdd784507083da4c2cdc49208e842cc2e9c40da5
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ie84f3f029111b17d62912c653edc35b4cc2de026
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ic29284da0ed555186db0e969b3c2c1ba8a1e5eba
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Don't reverse the arguments order when copying them. In addition,
copy the this object as well, so we don't need to access the
context anymore to access it.
Change-Id: I38055c55387c4253cb53dd12fa69126840fa1270
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
All escaping arguments will still be loaded/stored from/to the CallData,
but this is not the common case. In a subsequent patch we can make the
caller prepare the stack frame, and for the common case we don't even
need to copy arguments around.
Change-Id: I3fbb6fe575a564d05a9fd5dcc0c8f4129eac3bc2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
As a preparation to also store arguments on the stack, just like the
temporaries.
Change-Id: If3a6ed56930e29ad77c992811065bb32ee2d030c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Speeds up parts of v8-bench by 20%.
Change-Id: Ic7e3d9103308b19bbe6bf1e40756b0f7f132d162
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I00d4ed5d8b6ab30ee3459d1cc7a2737144474f8a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ibf62e8233c58d31d0a309c5850857c4a0a14b0c4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
For subscript indices and the base of a property name lookup
Change-Id: I20394aa5daf6e49137b66575e56d1f8937160a8d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Performance wise, his brings the interpreter on par with the "old"
interpreter.
Change-Id: If1c565e636d08b422cf405d26b085b36b409f409
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reduces the number of stores to the stack (for which we need a
write-barrier in the future) by keeping the last calculated value in the
accumulator register (which is a local variable).
In the future we might want to collapse certain common instruction
patterns into a super-sized instruction.
Change-Id: I02ebed2db957765e994c8f939bf7585894881deb
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The Param struct is now internal to the interpreter loop. It can be
removed in a second step so we can directly access
constants/temporaries/locals/arguments.
Change-Id: I47ecbfe7508f352a8f212af48461dc92b35f4695
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I948f76140abf36b4d7c42d5308cb7b670b1abd07
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is needed to properly register permanent/temporary dependencies
This patch also removes related interpreter instructions that should
have changed, but were not used.
Change-Id: Ie53c4611766680734c02e328b7f2c752cae150e0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
This includes the backing runtime methods.
Change-Id: Ib8fb6091974794b11f732fadeb047a7347a50d66
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Differences:
- push parameters on the stack, including space for CallData members
- call instructions calculate the argument start
- use temp space above the calldata to evaluate arguments
- fewer temporaries are needed when a call is done while generating the
arguments of another call
- when calling the function, the js stack space above the callData is
not used, allowing for optimizations in the future
- Array and ObjectLiteral use the same mechanism
Change-Id: Id100fa06f12cc9d941b0f90b0b81b8270a8e4f5d
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I67f8397686a439cede37b52863d32dc194bee23f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I1e3728481dab97b264f19f84edd602f9eae66983
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I969f3349d021d2dbc13d72318357d630dec1811a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I7a289dff5cacc23c238e79e44eb96c690691da3b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ie3f03a548105fe49d29e3d60bf823435f21b0340
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Fix all exception handling related test failures
in test262.
Change-Id: Iba50238627c31705a4878b43abbb8f20f0ecee88
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I50250587ad6e88f6323721b69443a03674b923b9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Implement exception handling, and make it conformant
with the spec.
Change-Id: I6d8222617180f96f628f18e11444488e50e5c043
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
These will simplify foreach and switch handling.
Change-Id: I7fb67481d7d1b82b03c03fd0987b182ea9542c7a
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ifd63cf604e66f46329472f82a46d37194a1b39eb
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Fill in code to emit proper Moth instructions for loading
and storing References.
Change-Id: I420ca0e805c98f9d8a304d178601ade41ae93b28
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|
|/
|
|
|
| |
Change-Id: Iea33ff0200f0bbf43953fedba030edf91d0f1417
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
| |
Task-number: QTBUG-61089
Change-Id: I8b1fb03d040b04b3b14f371bf1a5ba8c2318054f
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|