Commit Graph

23 Commits

Author SHA1 Message Date
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
bmeurer@chromium.org
81e4550796 Always use timeGetTime() for TimeTicks::Now() on Windows.
This way, we also ensure that timeGetTime() is used for Time::Now(),
and thereby Date.now() even if GetTickCount64() is available.

Also add test coverage for Time::Now(), TimeTicks::Now() and
TimeTicks::HighResNow().

BUG=chromium:288924
TEST=cctest/test-timer
R=hpayer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17080 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 13:30:31 +00:00
bmeurer@chromium.org
8dbd822855 Reland "Deuglify V8_INLINE and V8_NOINLINE."
R=dslomov@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16669 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-12 08:57:10 +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
bmeurer@chromium.org
0e7f6a296e Don't align size on allocation granularity for unaligned ReserveRegion calls.
Also add additional ASSERTs to help tracking the flaky
test-alloc/CodeRange in Windows.

R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16648 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-11 11:33:18 +00:00
bmeurer@chromium.org
b60d340e08 Deuglify V8_INLINE and V8_NOINLINE.
R=dslomov@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16641 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-11 10:28:09 +00:00
bmeurer@chromium.org
269ce960cf Fix typo.
TBR=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-11 08:56:33 +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
mstarzinger@chromium.org
1c91d00bf7 Remove V8_WARN_UNUSED_RESULT for simple getters.
R=bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-10 15:03:17 +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
d4d66a712e Replace uses of MUST_USE_RESULT by V8_WARN_UNUSED_RESULT in ElapsedTimer.
R=bmeurer@chromium.org
Signed-off-by: Thiago Farina <tfarina@chromium.org>

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

Patch from Thiago Farina <tfarina@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-09 05:44:54 +00:00
yangguo@chromium.org
070e3b0af4 Introduce concurrent on-stack replacement.
Currently disabled behind --concurrent-osr.

R=titzer@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-04 12:55:59 +00:00
bmeurer@chromium.org
9bc6052790 Build fix for Win64 after r16521.
TBR=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16524 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-04 11:33:51 +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
d9052d41f3 We can't use pthread_condattr_setclock() in NaCl.
TEST=cctest/test-condition-variable
R=machenbach@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16504 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-03 11:38:39 +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
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
a1bf044838 Fix Visual Studio debug build after r16398.
TBR=machenbach@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 13:36:28 +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