Commit Graph

390 Commits

Author SHA1 Message Date
rmcilroy@chromium.org
57dc3139cb Remove deprecated v8-defaults.h and defaults.cc.
BUG=312241
LOG=Y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/59823008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-20 11:20:01 +00:00
jochen@chromium.org
e744b82fae Revert 17877 - Introduce a v8::Platform class that bundles embedder callbacks
This also reverts 17879 and 17880.

BUG=v8:3015
TBR=svenpanne@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/76323002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17881 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-19 14:28:07 +00:00
jochen@chromium.org
c24ce076e9 Introduce a v8::Platform class that bundles embedder callbacks
Also provide a default implementation to use in cctests.

For now, there are just two thread releated callbacks. In future CLs, I will
move callbacks registered e.g. via V8::SetFooCallback over.

BUG=v8:3015
R=svenpanne@chromium.org, danno@chromium.org
LOG=no

Review URL: https://codereview.chromium.org/75283002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-19 13:44:36 +00:00
yurys@chromium.org
c7b1b79e4d This is the exact copy of r17365 which was reverted in r17488 due to memory corruption. The root cause for the memory corruption - missing check for bump pointer limit before storing filler map must be addressed in r17626 where allocation hooks were removed from the generated code and left only in the runtime.
This is initial implementation of allocation profiler.

Whenever new object allocation is reported to the HeapProfiler and allocation tracking is on we will capture current stack trace, add it to the collection of the allocation traces (a tree) and attribute the allocated size to the top JS function on the stack.

Format of serialized heap snapshot is extended to include information about recorded allocation stack traces.

This patch is r17301 plus a fix for the test crash in debug mode. The test crashed because we were traversing stack trace when just allocated object wasn't completely configured, in particular the map pointer was incorrect. Invalid Map pointer broke heap iteration required to find Code object for a given pc during stack traversal. The solution is to insert free space filler in the newly allocated block just before collecting stack trace.

BUG=chromium:277984,v8:2949
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/61893031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-14 12:13:26 +00:00
svenpanne@chromium.org
ad3478bb2f Use a fixed random seed per default.
To get back the old behavior, use "make randomseed=0 ...".

BUG=v8:1880,v8:2885
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/64093003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17555 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-07 12:01:26 +00:00
bmeurer@chromium.org
b8660f2091 Revert "Record allocation stack traces".
This reverts commit r17365 for memory corruption. The issues
are most probably related to storing a filler map without
checking the bump pointer first, and traversing the stack
when called from within a stub (or builtin), while the code
assumes that it's called from a JS function.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/59583003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-05 13:46:11 +00:00
yurys@chromium.org
a083601e73 Record allocation stack traces
This is initial implementation of allocation profiler.

Whenever new object allocation is reported to the HeapProfiler and allocation tracking is on we will capture current stack trace, add it to the collection of the allocation traces (a tree) and attribute the allocated size to the top JS function on the stack.

Format of serialized heap snapshot is extended to include information about recorded allocation stack traces.

This patch is r17301 plus a fix for the test crash in debug mode. The test crashed because we were traversing stack trace when just allocated object wasn't completely configured, in particular the map pointer was incorrect. Invalid Map pointer broke heap iteration required to find Code object for a given pc during stack traversal. The solution is to insert free space filler in the newly allocated block just before collecting stack trace.

BUG=chromium:277984,v8:2949
R=hpayer@chromium.org, loislo@chromium.org

Review URL: https://codereview.chromium.org/34733004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-24 09:26:55 +00:00
bmeurer@chromium.org
9c26c6a3f2 [Sheriff] Revert "Record allocation stack traces" and "Temporarily disable test-heap-profiler/TrackHeapAllocations".
This reverts commit r17301 and r17303 for breaking the nosnap builds.

TBR=yurys@chromium.org

Review URL: https://codereview.chromium.org/34523002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-22 06:56:19 +00:00
yurys@chromium.org
66bb9d1563 Record allocation stack traces
This is initial implementation of allocation profiler.

Whenever new object allocation is reported to the HeapProfiler and allocation tracking is on we will capture current stack trace, add it to the collection of the allocation traces (a tree) and attribute the allocated size to the top JS function on the stack.

Format of serialized heap snapshot is extended to include information about recorded allocation stack traces.

BUG=chromium:277984
R=hpayer@chromium.org, loislo@chromium.org

Review URL: https://codereview.chromium.org/27227005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 15:22:11 +00:00
yangguo@chromium.org
575438518c Harmony: implement Math.sign.
R=dslomov@chromium.org
BUG=v8:2938

Review URL: https://codereview.chromium.org/28723002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 09:16:31 +00:00
mvstanton@chromium.org
8f9f192f6e AllocationSites for all literals
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/24250005


Review URL: https://codereview.chromium.org/27366003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17228 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 08:10:36 +00:00
mvstanton@chromium.org
f4edc076d8 Revert "AllocationSites for all literals"
This reverts commit r17219 due to WebKit failures.

R=mstarzinger@chromium.org
TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/26539010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17222 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-15 15:35:23 +00:00
mvstanton@chromium.org
362c0cfbca AllocationSites for all literals
BUG=
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/24250005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17219 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-15 14:52:58 +00:00
titzer@chromium.org
d67585f060 Implement first version of HFlowEngine, a framework for performing global flow-sensitive analyses.
BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/25254002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17159 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-11 13:00:42 +00:00
jkummerow@chromium.org
1cc549747e Fix shared_library build after r17107
R=rmcilroy@chromium.org

Review URL: https://codereview.chromium.org/26004003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-04 14:53:16 +00:00
jkummerow@chromium.org
07b15bdfc1 Explicitly include defaults.cc in the shared_library gyp target.
Explicitly include defaults.cc in the shared_library gyp target, otherwise
the whole compilation unit is stripped by the Windows linker, since none of it's
symbols are referenced by any other compilation unit in V8.

BUG=None
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/25994002

Patch from Ross McIlroy <rmcilroy@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-04 11:57:42 +00:00
danno@chromium.org
908a7dc2a8 Improve and simplify removal of unreachable code
- Detect unreachable basic blocks of code either following an unconditional deopt or after a provably untaken branch of HBranch or HCompareObjectEqAndBranch instructions.
- Emit dummy uses in unreachable blocks during Hydrogen -> Lithium translation.

BUG=chromium:258519
R=jkummerow@chromium.org, mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/22876009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 11:43:41 +00:00
jochen@chromium.org
02b160f35c Remove parallel marking support.
The framework isn't used, and won't be used in the near future

R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/25260003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17014 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-30 14:06:43 +00:00
hpayer@chromium.org
4c01c4040a Re-land "Add methods to enable configuration of ResourceConstraints based on limits derived at runtime."
Adds ConfigureResourceConstraintsForCurrentPlatform and SetDefaultResourceConstraintsForCurrentPlatform which configure the heap based on the available physical memory, rather than hard-coding by platform as previous. This change also adds OS::TotalPhysicalMemory to platform.h.

The re-land fix the performance regression caused by accidental change in default max young space size.

BUG=292928
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/24989003

Patch from Ross McIlroy <rmcilroy@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16983 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-27 10:53:07 +00:00
machenbach@chromium.org
936802ae21 Revert "Add methods to enable configuration of ResourceConstraints based on limits derived at runtime." and "Fix Windows build of defaults.cc."
This reverts commit r16964 and r16968 due to performance regressions in octane.

TBR=hpayer@chromium.org

Review URL: https://codereview.chromium.org/24996003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16979 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-27 09:45:14 +00:00
titzer@chromium.org
d441160cab Implement local check elimination on basic blocks.
BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/23866016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16970 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-26 16:25:57 +00:00
hpayer@chromium.org
a57300fb9e Add methods to enable configuration of ResourceConstraints based on limits derived at runtime.
Adds ConfigureResourceConstraintsForCurrentPlatform and SetDefaultResourceConstraintsForCurrentPlatform which configure the heap based on the available physical memory, rather than hard-coding by platform as previous.  This change also adds OS::TotalPhysicalMemory to platform.h.

BUG=292928
R=danno@chromium.org, hpayer@chromium.org

Review URL: https://codereview.chromium.org/24269003

Patch from Ross McIlroy <rmcilroy@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16964 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-26 13:31:19 +00:00
bmeurer@chromium.org
227bd35489 Avoid fallback to weak entropy for the PRNGs on Windows.
Add fallback to rand_s() to gather entropy on Windows for
seeding the random number generator. This is compatible
with what Blink does.

BUG=v8:2905
R=machenbach@chromium.org

Review URL: https://codereview.chromium.org/24315007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16920 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-24 13:27:58 +00:00
bmeurer@chromium.org
2897c86607 Fix build after r16890.
TBR=machenbach@chromium.org

Review URL: https://codereview.chromium.org/23969011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16895 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-23 14:24:33 +00:00
titzer@chromium.org
05797e77fd Implement local load/store elimination on basic blocks.
BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/24117004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16776 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-17 15:32:21 +00:00
jochen@chromium.org
b3310c3a98 Use icu_gyp_path variable to reference ICU gyp file
That way, embedders can put the icu sources whereever they want and
aren't forced to put them under third_party/gyp

BUG=none
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/23598011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16749 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-17 08:31:56 +00:00
jochen@chromium.org
c5b3ce0671 Snapshot i18n Javascript code
The previous attempt used Boolean instead of $Boolean.

BUG=v8:2745
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/23622028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-12 13:50:38 +00:00
titzer@chromium.org
dc901fae7f First implementation of HUnique<T> and HUniqueSet<T>, which is supposed to replace UniqueValueId.
BUG=
R=rossberg@chromium.org, verwaest@chromium.org

Review URL: https://codereview.chromium.org/23609020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16683 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-12 12:08:54 +00:00
mstarzinger@chromium.org
718a6a9a9e Revert r16648, r16641, r16638 and r16637.
Original descriptions were:
- "Refactor and cleanup VirtualMemory."
- "Fix typo."
- "Deuglify V8_INLINE and V8_NOINLINE."
- "Don't align size on allocation granularity for unaligned ReserveRegion calls."

Reasons for the revert are:
- Our mjsunit test suite slower by a factor of 5(!) in release mode.
- Flaky cctest/test-alloc/CodeRange on all architectures and platforms.
- Tankage of Sunspider by about 6% overall (unverified).

TBR=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/23970004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16662 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-11 18:30:01 +00:00
titzer@chromium.org
8656dfdff9 Implement simplistic local alias analysis, which will be used in both check elimination and load elimination.
BUG=
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/23516010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-11 10:53:56 +00:00
bmeurer@chromium.org
a797a35975 Refactor and cleanup VirtualMemory.
Remove a lot of platform duplication, and simplify the virtual
memory implementation. Also improve readability by avoiding bool
parameters for executability (use a dedicated Executability type
instead).

Get rid of the Isolate::UncheckedCurrent() call in the platform
code, as part of the Isolate TLS cleanup.

Use a dedicated random number generator for the address
randomization, instead of messing with the per-isolate random
number generators.

TEST=cctest/test-virtual-memory
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/23641009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16637 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-11 08:47:02 +00:00
bmeurer@chromium.org
eb381b9444 Introduce a RandonNumberGenerator class. Refactor the random/private_random uses in Isolate/Context.
The RandomNumberGenerator is a pseudorandom number generator
with 48-bit state. It is properly seeded using either

(1) the --random-seed if specified, or
(2) the entropy_source function if configured, or
(3) /dev/urandom if available, or
(4) falls back to Time and TimeTicks based seeding.

Each Isolate now contains a RandomNumberGenerator, which replaces
the previous private_random_seed.

Every native context still has its own random_seed. But this random
seed is now properly initialized during bootstrapping,
instead of on-demand initialization. This will allow us to cleanup
and speedup the HRandom implementation quite a lot (this is delayed
for a followup CL)!

Also stop messing with the system rand()/random(), which should
not be done from a library anyway! We probably re-seeded the
libc rand()/random() after the application (i.e. Chrome) already
seeded it (with better entropy than what we used).

Another followup CL will replace the use of the per-isolate
random number generator for the address randomization and
thereby get rid of the Isolate::UncheckedCurrent() usage in
the platform code.

TEST=cctest/test-random-number-generator,cctest/test-random
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/23548024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16612 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-10 11:13:55 +00:00
bmeurer@chromium.org
8f8222e9ad Cleanup Socket class and remove it from the platform files.
Move the Socket class to dedicated platform/socket.{cc,h} files.
Cleaned up the implementation to allow for more code sharing.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/23484014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16521 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-04 10:41:51 +00:00
bmeurer@chromium.org
281de965a4 Import ConditionVariable class.
Condition variables are synchronization primitives that can be used
to block one or more threads while waiting for condition to become
true.

Right now we have only semaphores, mutexes and atomic operations for
synchronization, which results in quite complex solutions where an
implementation using condition variables and mutexes would be straight
forward.

There's also a performance benefit to condition variables and mutexes
vs semaphores, especially on Windows, where semaphores are kernel
objects, while mutexes are implemented as fast critical sections,
it CAN be beneficial performance-wise to use condition variables
instead of semaphores.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/23548007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-03 07:30:01 +00:00
bmeurer@chromium.org
fead0d0600 Cleanup Semaphore class.
Drop the previous Semaphore class from platform files.

Add new Semaphore class using the new TimeDelta class for
the WaitFor() operation. Consistently assert correct behaviour
for the different implementations.

Improve test coverage of the Semaphore class.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/23748003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-02 12:26:06 +00:00
bmeurer@chromium.org
9615b8c4c9 Fix definition of V8_LIBRT_NOT_AVAILABLE in v8.gyp since we test for it using #elif in time.cc.
TBR=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/23718004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-01 15:03:36 +00:00
bmeurer@chromium.org
68488915c7 Work-around missing librt for cross-compiling Chrome for Android in AOSP.
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/23819005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-30 14:10:13 +00:00
bmeurer@chromium.org
e76482f2da Cleanup Mutex and related classes.
Drop the previous Mutex and ScopedLock classes from platform files.

Add new Mutex, RecursiveMutex and LockGuard classes, which are
designed after their C++11 counterparts, so that at some point
we can simply drop our custom code and switch to the C++11
classes. We distinguish regular and recursive mutexes, as the
latter don't work well with condition variables, which will be
introduced by a followup CL.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/23625003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16416 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-29 09:58:30 +00:00
bmeurer@chromium.org
b320dfcf58 Reland^2 "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class."
These classes are meant to replace OS::Ticks() and OS::TimeCurrentMillis(),
which are broken in several ways. The ElapsedTimer class implements a
stopwatch using TimeTicks::HighResNow() for high resolution, monotonic
timing.

Also fix the CpuProfile::GetStartTime() and CpuProfile::GetEndTime()
methods to actually return the time relative to the unix epoch as stated
in the documentation (previously that was relative to some arbitrary
point in time, i.e. boot time).

The previous Windows issues have been resolved, and we now use GetTickCount64()
on Windows Vista and later, falling back to timeGetTime() with rollover
protection for earlier Windows versions.

BUG=v8:2853
R=machenbach@chromium.org, yurys@chromium.org

Review URL: https://codereview.chromium.org/23490015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16413 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-29 09:15:13 +00:00
bmeurer@chromium.org
adab11d0f9 Revert "Cross-compiling from Linux to Android requires -lrt for the host toolset.", "Fix Visual Studio debug build after r16398." and "Reland "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class.""
This reverts commit r16398, r16399 and r16402 for breaking the Windows
WebKit tests. Will reland fix which doesn't use High Resolution Timer
for ElapsedTimer (we suspect QueryPerformanceCounter overhead is
responsible for test breakage).

TBR=machenbach@chromium.org

Review URL: https://codereview.chromium.org/23710002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16405 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 14:32:08 +00:00
bmeurer@chromium.org
dc09ddcb9d Cross-compiling from Linux to Android requires -lrt for the host toolset.
R=yurys@chromium.org

Review URL: https://codereview.chromium.org/23656004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 14:11:07 +00:00
bmeurer@chromium.org
e2b4525397 Reland "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class."
These classes are meant to replace OS::Ticks() and OS::TimeCurrentMillis(),
which are broken in several ways. The ElapsedTimer class implements a
stopwatch using TimeTicks::HighResNow() for high resolution, monotonic
timing.

Also fix the CpuProfile::GetStartTime() and CpuProfile::GetEndTime()
methods to actually return the time relative to the unix epoch as stated
in the documentation (previously that was relative to some arbitrary
point in time, i.e. boot time).

BUG=v8:2853
R=machenbach@chromium.org

Review URL: https://codereview.chromium.org/23469013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 13:03:06 +00:00
bmeurer@chromium.org
1d3f6815e3 Revert "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class."
This reverts commit r16390 for breaking the Windows build. Will
reland fixed version, which also uses the platform/ folder instead
of time/ folder as per offline discussion.

TBR=machenbach@chromium.org

Review URL: https://codereview.chromium.org/23690003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 11:38:20 +00:00
bmeurer@chromium.org
fa5216a145 Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class.
These classes are meant to replace OS::Ticks() and OS::TimeCurrentMillis(),
which are broken in several ways. The ElapsedTimer class implements a
stopwatch using TimeTicks::HighResNow() for high resolution, monotonic
timing.

Also fix the CpuProfile::GetStartTime() and CpuProfile::GetEndTime()
methods to actually return the time relative to the unix epoch as stated
in the documentation (previously that was relative to some arbitrary
point in time, i.e. boot time).

BUG=v8:2853
R=machenbach@chromium.org, yurys@chromium.org

Committed: https://code.google.com/p/v8/source/detail?r=16388

Review URL: https://codereview.chromium.org/23295034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16390 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 11:06:11 +00:00
bmeurer@chromium.org
cfb126c52a Revert "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class."
This reverts commit r16388 for breaking build due to merge typo,
will reland with typo fixed.

TBR=machenbach@chromium.org

Review URL: https://codereview.chromium.org/23698002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 11:04:40 +00:00
bmeurer@chromium.org
8faf4d4291 Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class.
These classes are meant to replace OS::Ticks() and OS::TimeCurrentMillis(),
which are broken in several ways. The ElapsedTimer class implements a
stopwatch using TimeTicks::HighResNow() for high resolution, monotonic
timing.

Also fix the CpuProfile::GetStartTime() and CpuProfile::GetEndTime()
methods to actually return the time relative to the unix epoch as stated
in the documentation (previously that was relative to some arbitrary
point in time, i.e. boot time).

BUG=v8:2853
R=machenbach@chromium.org, yurys@chromium.org

Review URL: https://codereview.chromium.org/23295034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16388 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 10:59:07 +00:00
jkummerow@chromium.org
caba24c813 Revert "Snapshot i18n Javascript code" and "Fix mjsunit/debug-script after r16298".
This reverts r16298 and r16303 due to ChromeOS browser_tests failures ("Uncaught ReferenceError: Boolean is not defined" in --gtest_filter="FileDisplay/FileManagerBrowserTest.Test/0" and others)

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/23414008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16336 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-26 17:00:58 +00:00
bmeurer@chromium.org
5768fcf12c Fix the CPU feature detection.
Move all of the CPU detection logic to the CPU class, and make
all other code use the CPU class for feature detection.

This also fixes the ARM CPU feature detection logic, which was
based on fragile string search in /proc/cpuinfo. Now we use
ELF hwcaps if available, falling back to sane(!!) parsing of
/proc/cpuinfo for CPU features.

The ia32 and x64 code was also cleaned up to make it usable
outside the assembler.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/23401002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16315 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-26 09:37:39 +00:00
jochen@chromium.org
064c91be57 Snapshot i18n Javascript code
BUG=v8:2745
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/23304005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16298 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-23 13:24:48 +00:00
yurys@chromium.org
969aba8fc0 Rewrite SamplingCircularQueue
The new implementation:
* uses MemoryBarriers to make sure up-to-date data is accessed on both producer and consumer threads
* will not allow to overwrite records
* doesn't have notion of chunks, instead each entry is aligned on the cache line boundaries

BUG=v8:2814
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/22849002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16284 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-23 08:22:07 +00:00
bmeurer@chromium.org
a36bda5cf7 Revert "Add (mostly Chromium-compatible) V8_OS_* defines to v8.gyp."
This reverts commit r16238 for not being able to use the defines
outside of libv8 (i.e. in tests). Will reland the #define's in a
build config header style.

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/22861022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16267 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-22 09:09:39 +00:00
dslomov@chromium.org
02fdc4114f Promote ArrayBuffer, DataView and typed arrays to non-experimental.
The primary reason for this change is to bake these guys into the
snapshot.

Flag definitions (--harmony-typed-arrays, --harmony-array-buffer) are
still there so that Blink does not complain, but they are noop and
default to true.

R=mstarzinger@chromium.org
BUG=270527

Committed: https://code.google.com/p/v8/source/detail?r=16137

Committed: https://code.google.com/p/v8/source/detail?r=16228

Review URL: https://codereview.chromium.org/22390008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16248 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-20 13:55:52 +00:00
jochen@chromium.org
943d5cc27a Move i18n break iterator C++ code to runtime
BUG=v8:2745
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/22764007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16239 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-20 08:46:36 +00:00
bmeurer@chromium.org
f86f275f65 Add (mostly Chromium-compatible) V8_OS_* defines to v8.gyp.
R=jkummerow@chromium.org, svenpanne@chromium.org

Review URL: https://codereview.chromium.org/23283010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16238 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-20 08:29:21 +00:00
dslomov@chromium.org
80ec7fab15 Revert "Promote ArrayBuffer, DataView and typed arrays to non-experimental."
This reverts commit r16137 for breaking Windows build.
TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/22985011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-20 01:37:09 +00:00
dslomov@chromium.org
62505a3901 Promote ArrayBuffer, DataView and typed arrays to non-experimental.
The primary reason for this change is to bake these guys into the
snapshot.

Flag definitions (--harmony-typed-arrays, --harmony-array-buffer) are
still there so that Blink does not complain, but they are noop and
default to true.

R=mstarzinger@chromium.org
BUG=270527

Committed: https://code.google.com/p/v8/source/detail?r=16137

Review URL: https://codereview.chromium.org/22390008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16228 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-20 00:48:25 +00:00
dslomov@chromium.org
d63e29ba78 Revert "Promote ArrayBuffer, DataView and typed arrays to non-experimental."
This reverts commit r16137 for breaking tests on Windows.

TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/22710007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 16:23:00 +00:00
dslomov@chromium.org
30375b0937 Promote ArrayBuffer, DataView and typed arrays to non-experimental.
The primary reason for this change is to bake these guys into the
snapshot.

Flag definitions (--harmony-typed-arrays, --harmony-array-buffer) are
still there so that Blink does not complain, but they are noop and
default to true.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/22390008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 15:57:31 +00:00
jochen@chromium.org
ebadc421e4 Move i18n collator code to runtime.
BUG=v8:2745
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/22671002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 09:51:09 +00:00
jochen@chromium.org
5a92a95676 Move i18n's number-format C++ code to runtime
BUG=v8:2745
R=dcarney@chromium.org, mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/22266009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-07 12:14:50 +00:00
jochen@chromium.org
02914097b2 Move i18n extension's date-format C++ code to runtime
BUG=v8:2745
R=dcarney@chromium.org, mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/22411003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16086 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-07 03:40:44 +00:00
jkummerow@chromium.org
665c45c92d Un-revert "Implement simple effect typing for variables" and "Handle switch effects"
This re-lands r15776 and r15777, reverting the revert in r15786.

R=rossberg@chromium.org

Review URL: https://codereview.chromium.org/22144006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-06 12:57:23 +00:00
mstarzinger@chromium.org
c87abd1117 Add new Harmony methods to Array.prototype object.
Array.prototype.find
Array.prototype.findIndex

http://people.mozilla.org/~jorendorff/es6-draft.html

BUG=v8:2776,v8:2777
TEST=mjsunit/harmony/array-find,mjsunit/harmony/array-findindex
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/21079003

Patch from Ioseb Dzmanashvili <ioseb.dzmanashvili@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16025 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-02 10:57:48 +00:00
jochen@chromium.org
738237e877 Move helper methods from i18n extension into runtime.
BUG=v8:2475
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/21499003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16015 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-01 19:25:27 +00:00
bmeurer@chromium.org
e9fcf8fc98 Revert the latest set of platform changes.
Revert "Fix NaCl build."
Revert "Revert target arch detection."
Revert "Fix typo."
Revert "Simplify implementation of Mutex."
Revert "Fix for older clang releases that lack __has_extension."
Revert "Reland initial bits of "Implement correct OS and CC detection.""

TBR=danno@chromium.org,svenpanne@chromium.org

Review URL: https://codereview.chromium.org/21095008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15976 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 07:51:46 +00:00
bmeurer@chromium.org
64bfd42a4c Simplify implementation of Mutex.
Also moves Mutex to its own file mutex.{cc,h}.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/21087012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15964 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-30 17:12:49 +00:00
mstarzinger@chromium.org
0627d433b0 Add new Harmony methods to String.prototype object.
String.prototype.repeat
String.prototype.startsWith
String.prototype.endsWith
String.prototype.contains

http://people.mozilla.org/~jorendorff/es6-draft.html

BUG=v8:2796,v8:2797,v8:2798,v8:2799
TEST=mjsunit/string-repeat,mjsunit/string-startswith,mjsunit/string-endswith,mjsunit/string-contains
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/21014007

Patch from Ioseb Dzmanashvili <ioseb.dzmanashvili@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15960 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-30 16:33:08 +00:00
bmeurer@chromium.org
82e4ba6f70 Turn mark deoptimize on undefined into a proper HPhase.
This patch also removes the implicit recursion on phi operands,
using a loop and a worklist instead, to avoid potential stack
overflows.

R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/21065003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15952 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-30 10:25:20 +00:00
bmeurer@chromium.org
90249cf92b Inline platform-tls*.h files into platform.h.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/20684002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15892 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-26 09:00:07 +00:00
mmassi@chromium.org
b5a43f48a6 New array bounds check elimination pass (focused on induction variables and bitwise operations).
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/17568015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-25 06:37:25 +00:00
jkummerow@chromium.org
0963c220b1 Revert "Implement simple effect typing for variables" and "Handle switch effects".
This reverts r15776 and r15777 due to compile failures on Chromium Mac bots.

TBR=rossberg@chromium.org

Review URL: https://codereview.chromium.org/19482016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15786 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-19 19:55:09 +00:00
rossberg@chromium.org
02649f08bc Implement simple effect typing for variables
For that, we maintain an abstract store typing of all variables with LOCAL location (i.e., those that do not escape the function's own scope). We treat assignments as sequential effects that modify this store.

When control flow branches, we have to compute the disjunction of possible effects. To that end, we represent the store as a stack of effect sets, such that we can cheaply push and pop "local" effects when control flow has to branch.

In cases of non-local control transfer from an unknown source, we currently erase all knowledge about the store.

The 'switch' statement is still to come.

For a formulation of the typing rules, see:

https://docs.google.com/a/google.com/file/d/0B3wuXSv9YKuKeUNkVXZDemZ0Z1E

;)

R=jkummerow@chromium.org
BUG=

Review URL: https://codereview.chromium.org/19054006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15776 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-19 12:54:27 +00:00
bmeurer@chromium.org
fb77805ab7 Turn propagate deoptimizing mark into a proper HPhase.
Also turn the recursion on the domination chain into a loop with
an explicit stack, to avoid possible stack overflow here.

R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/19150002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-15 09:53:00 +00:00
bmeurer@chromium.org
b2f909cf3e Turn array index dehoisting into a proper HPhase.
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/18562009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15627 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 12:03:43 +00:00
rossberg@chromium.org
3d9586c431 This adds the following array iterator methods:
Array.prototype.values
Array.prototype.keys
Array.prototype.entries

These all return an Array Iterator object which has a next
method.

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-15.4.5

BUG=v8:2722
R=rossberg@chromium.org

Review URL: https://codereview.chromium.org/16848004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15620 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 11:20:54 +00:00
jochen@chromium.org
2809793a4f Only depend on icudata on windows.
On windows, this triggers the dll to be copied to the correct
locations. On other platforms, icudata is compiled in, and depending on
it results in an invalid linker archive ordering.

BUG=v8:2745
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/18734003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 11:01:00 +00:00
jochen@chromium.org
97409c2363 Move InitializeICU() to the V8 API and use it.
I can't get rid of the enable_i18n flag yet, as we need to be able to
turn off all extensions for creating the snapshot.

BUG=v8:2745
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/18860007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15618 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 09:58:54 +00:00
bmeurer@chromium.org
c294a40e0a Turn canonicalization into a proper HPhase.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/18758003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15613 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 08:21:50 +00:00
bmeurer@chromium.org
695b18c050 Turn merge removable simulates into a proper HPhase.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/18258004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15609 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 16:34:28 +00:00
bmeurer@chromium.org
5664bcaed3 Refactor compute minus zero checks into a proper HPhase.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/18666006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 14:08:19 +00:00
jochen@chromium.org
865ce5806f Factor out toolset definitions in a separate gypi file
That way, third-party libraries use the correct toolset settings.

BUG=v8:2745
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/18846002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 11:15:16 +00:00
bmeurer@chromium.org
47df386841 Turn the representation changes into a proper HPhase.
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/18832002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15541 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 09:02:09 +00:00
bmeurer@chromium.org
99f171a128 Turn redundant bounds checks elimination into a proper HPhase.
R=dslomov@chromium.org, mvstanton@chromium.org

Review URL: https://codereview.chromium.org/18826002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 08:36:28 +00:00
bmeurer@chromium.org
b899185790 Turn infer types into proper HPhase.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/18568007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15535 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 08:33:03 +00:00
bmeurer@chromium.org
e5b69658e4 Turn redundant phi elimination into proper HPhase.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/18549004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 08:18:29 +00:00
bmeurer@chromium.org
5fd94c9ba1 Turn stack check elimination into proper HPhase.
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/18816002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15531 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 07:03:57 +00:00
bmeurer@chromium.org
17e58e8198 Turn dead code elimination into a proper HPhase.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/18791002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-07 06:00:15 +00:00
bmeurer@chromium.org
8767fdbb28 Turn range analysis into proper HPhase.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/18491002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15496 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-04 19:25:16 +00:00
titzer@chromium.org
bddf08b0b1 Factor out OSR-related graph-building functionality from hydrogen.cc.
BUG=

Review URL: https://codereview.chromium.org/18496002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-04 09:20:07 +00:00
jkummerow@chromium.org
6659869b7c Sort the i18n extension sources correctly.
It's important that e.g. the header comes first, and the footer last

BUG=v8:2745
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/18187005

Patch from Jochen Eisinger <jochen@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15476 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-03 15:28:59 +00:00
jkummerow@chromium.org
56ab3e3404 Import the v8-i18n extension into v8
This adds the gyp flag v8_enable_i18n_support (off by default), and the
v8 flag FLAG_enable_i18n (on by default, but without effect if
v8_enable_i18n_support is off).

BUG=v8:2745
R=cira@chromium.org, danno@chromium.org, jkummerow@chromium.org

Review URL: https://codereview.chromium.org/18487004

Patch from Jochen Eisinger <jochen@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-03 11:22:29 +00:00
bmeurer@chromium.org
f60609bd1b Turn UInt32 analysis into a proper HPhase.
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/18487003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 10:53:08 +00:00
mstarzinger@chromium.org
8b976da60e First simplistic implementation of escape analysis.
R=jkummerow@chromium.org, titzer@chromium.org

Review URL: https://codereview.chromium.org/17914002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15393 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 16:09:54 +00:00
jkummerow@chromium.org
2fb7ab5530 Introduce a notion of "v8_code" in gyp config files.
This allows for compiling third-party code (such as ICU) with less
strict flags.

BUG=v8:2745
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/18181006

Patch from Jochen Eisinger <jochen@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 15:22:46 +00:00
bmeurer@chromium.org
f11af230e8 Refactor HInferRepresentation into an HPhase and use the phase zone.
Rename HInferRepresentation to HInferRepresentationPhase,
following naming scheme suggested by danno@chromium.org in
https://codereview.chromium.org/17458002

The HInferRepresentationPhase now uses the phase zone for all its
allocations.

Depends on https://codereview.chromium.org/17587008

R=danno@chromium.org
BUG=

Review URL: https://codereview.chromium.org/18054002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 07:40:35 +00:00
rossberg@chromium.org
9e8279e952 New unified type representation
Not used yet, only unit tests.

R=jkummerow@chromium.org, svenpanne@chromium.org
BUG=

Review URL: https://codereview.chromium.org/16154027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14957 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-05 15:43:53 +00:00
jkummerow@chromium.org
20cedf9a4b Liveness analysis for environment slots in Hydrogen
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/15533004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14938 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-04 16:41:24 +00:00
yangguo@chromium.org
7f8a3d803c Make assertion scopes thread safe.
R=svenpanne@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/15691017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14919 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-03 15:32:22 +00:00
rossberg@chromium.org
6fda4e4c28 Collect type feedback in separate pass and store it in AST
Notes:

- For now, just adds the missing type info fields to the AST nodes directly.
  I'd like to factor that out more nicely in a follow-up CL.

- All type feedback now is uniformly collected through AST nodes'
  RecordTypeFeedback functions. At some point, this logic should be moved
  out of ast.cc.

- The typing pass currently simulates the exact same conditions under
  which feedback was collected in Hydrogen before. That also should be
  made more generic in the future.

- Type information itself is unchanged. Making it more regular is
  yet more future work.

Some additional cleanups:

- Lifted out nested class ObjectLiteral::Property, to enable forward declaration.
- Moved around some auxiliary enums.

R=svenpanne@chromium.org
BUG=

Review URL: https://codereview.chromium.org/14990014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 13:59:20 +00:00
titzer@chromium.org
0a4289618d Extract GlobalValueNumberer and helper classes from hydrogen.cc and move to hydrogen-gvn.cc.
BUG=

Review URL: https://codereview.chromium.org/16095004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 12:45:46 +00:00