Drop obsolete HCheckMaps::HandleSideEffectsDominator().

In HCheckMaps::HandleSideEffectsDominator() we try to remove
redundant HCheckMaps instructions that are dominated by an
HStoreNamedField instruction with a transition. This is just
a special case of the check elimination and therefore obsolete
(it also gives some nice speedup since GVN just got cheaper).

R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21108 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Object.defineProperty shouldn't be a hint that we're constructing a dictionary.

BUG=362870
LOG=y
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Don't add code dependencies on transitioning stores eagerly.

R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21110 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Fix |RunMicrotasks()| leaking reference to the last context being run on.

RunMicrotasks() executes pending tasks and swaps the old array with a new array. However, the new array contains the reference to the current context as its creation context. This prevents the context from gc-ed until RunMicrotasks() is executed in the different context.

BUG=crbug.com/367016
LOG=y
R=rafaelw@chromium.org, rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21111 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Fix crash in debug builds introduced with r21110.

Basically we should not check for map deprecation during
code selection, because that may run on the concurrent
compiler thread. So the fix is to move this logic to the
code generation phase instead, which is always run on the
main thread.

R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Make zone_allocator actually usable.

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Generation of our home-grown memmove doesn't depend on serializer state anymore.

The serializer state has to be per-Isolate, but at the point where we
generate our memmoves we don't really have an Isolate. Furthermore,
there was no fundamental reason why we shouldn't use our home-grown
memmove during mksnapshot time.

Perhaps we can totally remove our own memmove nowadays, but this would
be a separate CL.

BUG=359977
LOG=y
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21116 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Map::Normalize() introduced as single entry point for map normalization and Map::NotifyLeafMapLayoutChange() made private.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Checks for empty array case added before casting elements to FixedDoubleArray.

BUG=chromium:369450
LOG=N
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Move cache line size calculation directly into CPU::FlushICache.

This disentagles the initialization/dependency mess quite a bit and
makes things vastly simpler. If the 'mrs' on every flush is too
expensive (which it is hopefully not), the cache line sizes will have
to be instance variables of the CPU class and FlushICache will have to
be a member function. This would involve some more or less tricky
refactorings, which we shouldn't do until we are *really* forced to
do.

BUG=359977
LOG=y
R=rodolph.perfetta@gmail.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21119 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
v8:3303 MultithreadedParallelIsolates has a race condition

Disabling test until bug is fixed.
R=svenpanne@chromium.org
BUG=v8:3303
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Fix for a GCMole issue introduced in r21117.

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21121 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Re-enable Object.observe and add enforcement for security invariants.

This patch reverts r21062 which disabled Object.observe and the relevant tests.

It also adds enforcement for the following three invariants:

1) No observer may receive a change record describing changes to an object which is in different security origin (context have differing security tokens)

2) No observer may receive a change record whose context's security token is different from that of the object described by the change.

3) Object.getNotifier will return null if the caller and the provided object are in differing security origins

Further, it ensures that the global object can never be observed nor a notifier retrieved for it.

Tests are included.
R=verwaest@chromium.org, rossberg
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Update test expectations after re-enabling Object.observe

TBR=verwaest

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21125 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Don't leak contexts in Object.observe

The Object.observe API may construct internal structures as a result of API calls. These structures can persist as long as an object that was once observed persists. This patch ensures that these structures are created in the correct context so as to avoid leaking contexts

R=verwaest@chromium.org, dcarney
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Build cleanup following r21126. Marking Native* methods in object-observe.js as knownProblems in fuzz-natives

TBR=verwaest

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Introduce a microtask suppression scope and move microtask methods to isolate

BUG=369503
R=adamk@chromium.org
LOG=y
TEST=cctest/test-api/SetAutorunMicrotasks

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21128 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Fix ObjectNotifierPerformChange leak after r21126

Due to overlapping names of natives and runtime functions, the wrong
context was used for Notifier.prototype.performChange. The leak test
has been augmented to properly cover the leaky case, and the test
now passes.

Also tightened up type checks in runtime.cc and removed Object.observe
functions from knownIssues in fuzz-natives-part2.js.

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Version 3.26.30 (based on bleeding_edge revision r21129)

Introduce a microtask suppression scope and move microtask methods to isolate (Chromium issue 369503).

Re-enable Object.observe and add enforcement for security invariants.

Move cache line size calculation directly into CPU::FlushICache (Chromium issue 359977).

Generation of our home-grown memmove doesn't depend on serializer state anymore (Chromium issue 359977).

Fix |RunMicrotasks()| leaking reference to the last context being run on.

Object.defineProperty shouldn't be a hint that we're constructing a dictionary (Chromium issue 362870).

Performance and stability improvements on all platforms.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21130 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Various cleanups in check elimination.

- Move IsMapAccess() to HObjectAccess.
- Collect the actual objects instead of HStoreNamedFields in
  effects, and also consider HTransitionElementsKind.
- Fix ownership of HCheckMaps::maps() and HLoadNamedField::maps().
- Avoid heavy copying of the same map sets all the time during
  check elimination, and do something useful with the memory
  instead by slightly bumping the maximum number of tracked
  objects.
- Slightly optimize UniqueSet::Contains().

R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00