Alexander Markov
6d0601a72b
[vm/bytecode] Add bytecodes for int operations and '== null'
...
DeltaBlue performance in pure interpreted mode
(--enable-interpreter --compilation-counter-threshold=-1):
Before: DeltaBlue(RunTime): 269198.732 us.
After: DeltaBlue(RunTime): 158216.34376923076 us. (-41.23%)
Change-Id: I9dea8d7949421986ee6fbdeae046fe4ef6d3227f
Reviewed-on: https://dart-review.googlesource.com/c/77231
Reviewed-by: Zach Anderson <zra@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2018-10-03 15:45:36 +00:00
Alexander Markov
2aac05fe10
[vm/bytecode] Add specialized JumpIf* instructions
...
This change adds JumpIfEqStrict, JumpIfNeStrict, JumpIfTrue, JumpIfFalse,
JumpIfNull, JumpIfNotNull bytecode instructions. These instructions
supercede If*/Jump instruction patterns.
Change-Id: Icf9dc624001ce64d4b21409864591d693ead51d3
Reviewed-on: https://dart-review.googlesource.com/77011
Reviewed-by: Zach Anderson <zra@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2018-09-28 16:29:23 +00:00
Régis Crelier
79d639a3a8
[VM interpreter/bytecode] Modify argument order for AssertAssignable bytecode.
...
The new argument order matches the runtime call and requires less copying.
Simplify Function::HasCode()
Remove obsolete workaround when updating type test cache.
Change-Id: I57c988f97ee2259a22730f445f336cd2a085959e
Reviewed-on: https://dart-review.googlesource.com/76584
Commit-Queue: Régis Crelier <regis@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2018-09-26 21:15:16 +00:00
Alexander Markov
46ec629096
[vm/bytecode] Trigger JIT-compilation from interpreter
...
Performance on Richards benchmark (no bytecode in platform, release build):
Interpreter (--enable-interpreter --compilation-counter-threshold=-1)
Richards(RunTime): 177228.34433333334 us.
Interpreter + bytecode compilation with default threshold 10 (--enable-interpreter)
Richards(RunTime): 930.8050725919032 us.
Varies from run to run, spikes up to 4178.005912317328 (no OSR yet, only background compilation).
Bytecode compilation (--use-bytecode-compiler)
Richards(RunTime): 830.1371626556016 us
Default pipeline:
Richards(RunTime): 880.1557113946327 us.
Numbers on Richards benchmark (platform with bytecode, release build):
Interpreter (--enable-interpreter --compilation-counter-threshold=-1)
Richards(RunTime): 354553.6346666667 us.
Interpreter + compilation with default threshold 10 (--enable-interpreter)
Richards(RunTime): 934.7108855140189 us.
Bytecode compilation (--use-bytecode-compiler)
Richards(RunTime): 822.74178403949 us.
Change-Id: Ic13e9f7c7d98f2930e6de4c4f74bac4d28478249
Reviewed-on: https://dart-review.googlesource.com/75781
Reviewed-by: Zach Anderson <zra@google.com >
Reviewed-by: Régis Crelier <regis@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2018-09-20 20:57:08 +00:00
Alexander Markov
76091c13db
[vm/bytecode] Add PushNull, PushTrue, PushFalse and PushInt bytecodes
...
These bytecode instructions are added in order to shrink constant pools
and reduce time spent for reading constant pool entries.
Change-Id: I8522f73dc7a6236969ac0422c6cb89b945559b2d
Reviewed-on: https://dart-review.googlesource.com/75125
Reviewed-by: Zach Anderson <zra@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2018-09-15 17:55:46 +00:00
Alexander Markov
c6c4748185
[vm/bytecode] Bytecode compilation
...
Change-Id: I09192e4e929a397920c217b605580f8c4880e7c2
Reviewed-on: https://dart-review.googlesource.com/74002
Commit-Queue: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
Reviewed-by: Régis Crelier <regis@google.com >
2018-09-14 22:02:29 +00:00