danno@chromium.org
cf1b80703f
Improve trace_opt output to help find compilation problems
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/14978003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-13 11:10:31 +00:00
yangguo@chromium.org
ecbbf528c0
Do not choose parallel recompilation when bootstrapping.
...
R=jkummerow@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/13878019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14333 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-18 14:34:34 +00:00
yurys@chromium.org
46508ec2c2
Remove profiler thread related methods from RuntimeProfiler
...
Now that V8 doesn't use sampling thread for optimizations
the methods can be removed.
BUG=None
Review URL: https://codereview.chromium.org/14057003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14214 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-10 14:41:43 +00:00
yangguo@chromium.org
996a80df45
Fix OSR for nested loops.
...
R=jkummerow@chromium.org
BUG=v8:2618
Review URL: https://chromiumcodereview.appspot.com/13811014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14202 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-10 09:24:31 +00:00
yurys@chromium.org
b293d4d4a2
No need to start Ticker for Crankshaft
...
Crankshaft doesn't depend on the sampler thread any more. No
need to start the that thread for Crankshaft.
BUG=v8:2609
Review URL: https://codereview.chromium.org/13526003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-08 15:09:03 +00:00
yangguo@chromium.org
479e39a058
Parallel recompilation: remove interrupt for code generation.
...
R=jkummerow@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/12488006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13917 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-12 18:03:18 +00:00
svenpanne@chromium.org
23d681c50b
Removed RuntimeProfilerRateLimiter class and RuntimeProfiler::IsSomeIsolateInJS.
...
Removing the former was basically a consequence of removing the latter. The net
effect is, apart from less code, that the signal sender thread is much more
explicit about its logic now.
Review URL: https://codereview.chromium.org/11543020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13212 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-12 15:26:04 +00:00
svenpanne@chromium.org
17def81fc9
Use count-based profiling exclusively.
...
Review URL: https://codereview.chromium.org/11437016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13158 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 08:55:06 +00:00
svenpanne@chromium.org
f275b36299
Reduced TLS accesses even further.
...
Thread the Isolate through FindCodeInCache, FindCodeInSpecialCache and
SetProperty. Reduced the number of TLS accesses while running the Octane
benchmark down to 19% compared to the beginning of the cleanups.
Review URL: https://codereview.chromium.org/11411033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 07:58:59 +00:00
yangguo@chromium.org
63f109aaa5
Introduce helper functions to test parallel recompilation.
...
BUG=
Review URL: https://chromiumcodereview.appspot.com/11419012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12986 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 10:57:50 +00:00
svenpanne@chromium.org
018670f2e4
Change the maximum optimization count into a commandline flag.
...
This is needed for some unit tests, which otherwise do not test what people
think they do. ;-)
Review URL: https://chromiumcodereview.appspot.com/10823362
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12318 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-16 11:40:03 +00:00
yangguo@chromium.org
2c9c94bd32
Classify small functions platform-dependently.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10829009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12186 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-25 13:51:29 +00:00
sanjoy@chromium.org
693c7643d2
Optimize functions on a second thread.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10807024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-19 18:58:23 +00:00
fschneider@chromium.org
bb0a2ea766
Share optimized code for closures.
...
Each SharedFunctionInfo gets an optimized code map to store
one optimized code object per context. When allocating a new
closure we consult this map and check if there is optimized code
that can be shared.
This patch is based on an original patch
by Anton Muhin (http://codereview.chromium.org/6793013/ ).
BUG=v8:2087, v8:2094
TEST=test/mjsunit/compiler/optimized-closures.js
Review URL: https://chromiumcodereview.appspot.com/10103035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 14:06:22 +00:00
ulan@chromium.org
75a1fa91ef
Reland r11425 "Re-enable optimization for hot functions that have optimization disabled due to many deopts."
...
Fix performance regressions introduced in r11425 by
- counting number of function deoptimizations instead of function optimizations,
- packing several counters into one field of shared function info.
BUG=v8:2040,121196
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10534063
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11766 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 16:57:27 +00:00
ulan@chromium.org
8768af54b6
Revert r11425 because of V8 benchmark performance regression.
...
Original CL: https://chromiumcodereview.appspot.com/10202007 "Re-enable optimization for hot functions that have optimization disabled due to many deopts."
Review URL: https://chromiumcodereview.appspot.com/10265008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-30 11:54:34 +00:00
ulan@chromium.org
a139e38c0b
Re-enable optimization for hot functions that have optimization disabled due to many deopts.
...
Use exponential backoff in order to avoid getting into optimization-deoptimization cycle.
BUG=v8:2040,121196
Review URL: https://chromiumcodereview.appspot.com/10202007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-24 14:05:07 +00:00
danno@chromium.org
db86043160
Minimize uses of lazy initialization by adding explicit initialization functions.
...
BUG=118686
Review URL: https://chromiumcodereview.appspot.com/9976003
Patch from Philippe Liard <pliard@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11239 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-05 14:10:39 +00:00
jkummerow@chromium.org
4b227a2a79
Profiler experiments: remove "stable on startup" rule
...
Review URL: https://chromiumcodereview.appspot.com/9864030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11164 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-27 12:26:58 +00:00
jkummerow@chromium.org
b413f376c4
Move profiler_ticks to Code object, don't walk the stack when patching ICs
...
Review URL: https://chromiumcodereview.appspot.com/9866030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-27 12:19:50 +00:00
jkummerow@chromium.org
d71c60e086
Port count-based profiler to x64
...
Review URL: https://chromiumcodereview.appspot.com/9845019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11159 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-27 11:21:27 +00:00
jkummerow@chromium.org
d9936b4546
MIPS: Port count-based profiler
...
Port r11120 (548ba49bd).
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/9835083
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-26 11:29:44 +00:00
fschneider@chromium.org
a43c00cbae
Fix use of uninitialized values in the runtime profiler.
...
Review URL: https://chromiumcodereview.appspot.com/9835054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-23 15:26:04 +00:00
jkummerow@chromium.org
390f0e6d05
Port count-based profiler to ARM
...
Review URL: https://chromiumcodereview.appspot.com/9837004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-23 12:16:40 +00:00
jkummerow@chromium.org
f7073d467c
Soften --type-info-threshold by eventually optimizing all functions
...
(but waiting very long if they don't have enough type feedback).
Review URL: https://chromiumcodereview.appspot.com/9834005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11108 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-22 11:05:33 +00:00
jkummerow@chromium.org
a615abd8d3
Fix overly aggressive ASSERT(!optimization_disabled())
...
Review URL: https://chromiumcodereview.appspot.com/9748018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-20 15:27:33 +00:00
fschneider@chromium.org
1f7d42efc9
Landing for pliard@chromium.org: Remove static initializers in v8.
...
This change includes two CLs by pliard@chromium.org:
1. http://codereview.chromium.org/9447052/ (Add CallOnce() and simple LazyInstance implementation):
Note that this implementation of LazyInstance does not handle global destructors (i.e. the lazy instances are never deleted).
This CL was initially reviewed on codereview.appspot.com:
http://codereview.appspot.com/5687064/
2. http://codereview.chromium.org/9455088/ (Remove static initializers in v8):
This CL depends on CL 9447052 (adding CallOnce and LazyInstance).
It is based on a patch sent by Digit.
With this patch applied, we have only one static initializer left (in atomicops_internals_x86_gcc.cc). This static initializer populates a structure used by x86 atomic operations. It seems that we can hardly remove it. If possible, it will be removed in a next CL.
This CL also modifies the presubmit script to check the number of static initializers.
BUG=v8:1859
Review URL: https://chromiumcodereview.appspot.com/9666052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-12 13:56:56 +00:00
yangguo@chromium.org
59a7bdd6e2
Add code kind check before preparing for OSR.
...
BUG=v8:1900, 115073
Review URL: https://chromiumcodereview.appspot.com/9495005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10858 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 12:59:00 +00:00
jkummerow@chromium.org
0177aa62da
Count ICs that have type information.
...
Hidden behind --type-info-threshold=X flag, usage dependent on experimental profiler.
Review URL: https://chromiumcodereview.appspot.com/9403009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 12:57:23 +00:00
jkummerow@chromium.org
8ac0c1cdf2
Properly disable count-based profiler on non-ia32
...
TEST=buildbot redness gone
Review URL: https://chromiumcodereview.appspot.com/9360043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10708 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 16:05:40 +00:00
jkummerow@chromium.org
866e0eeeb7
Small update to experimental profiler flags
...
Review URL: https://chromiumcodereview.appspot.com/9360041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10701 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 14:28:37 +00:00
fschneider@chromium.org
0be449d684
Enable optimization of top-level code and generate deoptimization support lazily.
...
This change enables optimization of top-level and eval-code. For this to work, it adds
support for declaring global variables in optimized code.
At the same time it disables the eager generation of deoptimization support data
in the full code generator (originally introduced in
r10040). This speeds up initial compilation and saves
memory for functions that won't be optimized. It requires
recompiling the function with deoptimization
support when we decide to optimize it.
Review URL: https://chromiumcodereview.appspot.com/9187005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 14:14:51 +00:00
jkummerow@chromium.org
4233bf8348
Initial support for count-based profiling
...
(behind FLAG_count_based_interrupts; only on ia32)
Review URL: https://chromiumcodereview.appspot.com/9373028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10699 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 14:00:31 +00:00
jkummerow@chromium.org
de510c3a58
Split experimental profiler flags
...
Review URL: https://chromiumcodereview.appspot.com/9374015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:30:01 +00:00
jkummerow@chromium.org
aa2e842134
Count-based profiling for primitive functions (hidden behind a flag)
...
Review URL: https://chromiumcodereview.appspot.com/9361026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10657 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 10:19:46 +00:00
erik.corry@gmail.com
b3e0761e38
Cosmetic changes ("set up" is a verb, "setup" is a noun).
...
Review URL: http://codereview.chromium.org/9139051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-13 13:09:52 +00:00
kmillikin@chromium.org
cefa4cc148
Get rid of CodeStub::TryGetCode.
...
This function is no longer needed. It was only used (overly defensively)
when fetching the stack check stub for on-stack replacement patching.
R=vegorov@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/8510013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-09 15:44:13 +00:00
kmillikin@chromium.org
ceee9d535a
Remove #include "isolate-inl.h" from v8.h.
...
Include it only in the .cc files where it's needed.
R=fschneider@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/8117001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-03 11:13:20 +00:00
vegorov@chromium.org
ac36cb4504
Merge experimental/gc branch to the bleeding_edge.
...
Review URL: http://codereview.chromium.org/7945009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-19 18:36:47 +00:00
fschneider@chromium.org
5289e3e08b
Allow OSR for closures that reference context slots.
...
Review URL: http://codereview.chromium.org/7812023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9115 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-02 09:29:21 +00:00
sgjesse@chromium.org
8a6108de95
Remove the ability to compile without logging and profiling
...
The preprocessor defines ENABLE_LOGGING_AND_PROFILING and ENABLE_VMSTATE_TRACKING has been removed as these where required to be turned on for Crankshaft to work. To re-enable reducing the binary size by leaving out heap and CPU profiler a new set of defines needs to be created.
R=ager@chromium.org
BUG=v8:1271
TEST=all
Review URL: http://codereview.chromium.org//7350014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-13 09:09:04 +00:00
vitalyr@chromium.org
bbaed5b82e
Fix a few issues breaking cctest/test-lockers/Regress1433:
...
o The thread local state in an isolate has to be initialized before
it's used.
o v8::Locker was incorrectly tracking whether it's the topmost one.
o Waking the profiler thread on shutdown should not leave the
semaphore counter in an inconsitent state.
R=fschneider@chromium.org
BUG=v8:1522
TEST=cctest/test-lockers/Regress1433
Review URL: http://codereview.chromium.org/7309013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-05 15:49:39 +00:00
vitalyr@chromium.org
90c9f1b989
Suspend runtime profiler as soon as we exit JS.
...
Lots of web pages have really frequently firing timers that keep the
profiler thread spinning if we require a period of JS inactivity
before suspending the profiler. While it's possible to throttle it by
increasing the sleep delay and adjusting the duration of the required
inactive period, it seemed much simpler to just stop it immediately on
exiting JS.
Stopping the profiler this way effectively turned off two optimization
heuristics: 1) eager optimization (it's reset on waking up the
profiler and now the profiler wakes up much more frequently) and 2)
optimization throttling based on JS to non-JS state ratio (the ratio
is now 100%). I removed these two heuristics and found no performance
regressions so far.
R=ager@chromium.org
BUG=crbug.com/77625
TEST=none
Review URL: http://codereview.chromium.org/7274024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8472 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 14:56:08 +00:00
karlklose@chromium.org
f4e4bc43a8
Merge arguments branch to bleeding edge (second try).
...
Review URL: http://codereview.chromium.org/7187007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8315 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-16 14:12:58 +00:00
karlklose@chromium.org
cc19d1e278
Revert "Merge arguments branch to bleeding merge."
...
This reverts commit ceb31498b9d69edca3260820fb4047045891ce6d.
TBR=kmillikin@chromium.org
Review URL: http://codereview.chromium.org/7172030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-16 06:37:49 +00:00
karlklose@chromium.org
6cfeb2d400
Merge arguments branch to bleeding merge.
...
Review URL: http://codereview.chromium.org/7167006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-15 15:09:28 +00:00
vegorov@chromium.org
08e7b94924
Fix compilation with debuggersupport=off.
...
Review URL: http://codereview.chromium.org/6901026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7681 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-26 13:53:19 +00:00
fschneider@chromium.org
ef24af119e
Land Kevin's patch for supporting %_CallFunction in Crankshaft.
...
Original code review: http://codereview.chromium.org/6838018/
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/6869005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-15 07:58:22 +00:00
vitalyr@chromium.org
09dfc4b5d3
Add global setup for runtime profiler.
...
Whether it's enabled or not must not change while we're running. Let's
not waste time recomputing it. This also makes the VM state tracking
code slightly more lightweight.
Review URL: http://codereview.chromium.org/6825054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-12 19:15:53 +00:00
jkummerow@chromium.org
ed968b1042
Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization.
...
TEST=existing unit tests still pass
Review URL: http://codereview.chromium.org/6821009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7572 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-11 13:24:50 +00:00