fschneider@chromium.org [Tue, 21 Feb 2012 16:47:02 +0000 (16:47 +0000)]
Use placement-new operator in the register allocator.
Pass the zone explicitly to avoid calling Isolate::Current()->zone().
Review URL: https://chromiumcodereview.appspot.com/
9430002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10785
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 21 Feb 2012 14:56:24 +0000 (14:56 +0000)]
Speedup the snapshot serialization.
Replaced multiple calls to AddNumber with a single AddString.
AddNumber may now print the value directly into the output buffer.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/
9395087
Patch from Alexei Filippov <alexeif@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10784
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Tue, 21 Feb 2012 14:09:45 +0000 (14:09 +0000)]
After assignment return right hand side value instead of undefined
when Object.isExtensible(o) === false
Added corresponding tests
ES5 description: http://es5.github.com/#x11.13.1
Related issue: http://code.google.com/p/v8/issues/detail?id=1901
Contributed by ioseb.dzmanashvili@gmail.com
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9429002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10783
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Tue, 21 Feb 2012 13:08:50 +0000 (13:08 +0000)]
Remove redundant statements in NewFunctionFromSharedFunctionInfo.
R=rossberg@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9428001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10780
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Tue, 21 Feb 2012 12:47:27 +0000 (12:47 +0000)]
Removed Runtime_DefineAccessor.
Runtime_DefineOrRedfineAccessorProperty basically does the same, so we have 1
code path less to worry about.
Review URL: https://chromiumcodereview.appspot.com/
9424033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10779
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 21 Feb 2012 12:10:04 +0000 (12:10 +0000)]
On ia32 LFunctionLiteral instruction should get context from esi register instead of stack slot.
This makes LFunctionLiteral safe even when it is used from inside inlined function.
All other architectures were implementing LFunctionLiteral correctly.
R=mstarzinger@chromium.org
TEST=test/mjsunit/regress/regress-inlining-function-literal-context.js
Review URL: https://chromiumcodereview.appspot.com/
9425061
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10778
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Tue, 21 Feb 2012 10:01:54 +0000 (10:01 +0000)]
Prepare push to trunk. Now working on version 3.9.9.
R=yangguo@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9425059
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10775
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 21 Feb 2012 09:11:35 +0000 (09:11 +0000)]
Make sure that top bits are zero when storing untagged 32 bit values
in 64 bit spill slots.
Review URL: https://chromiumcodereview.appspot.com/
9378006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10774
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Tue, 21 Feb 2012 08:36:16 +0000 (08:36 +0000)]
MIPS: Enable optimization of top-level code and generate deoptimization support lazily.
Port r10700 (
c976fbd5).
Original commit message:
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.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9418006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10773
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Tue, 21 Feb 2012 07:35:33 +0000 (07:35 +0000)]
Cleaned up runtime macros a bit.
The bulk of this CL is purely mechanical: Make the CONVERT_FOO macros more
uniform by always using an index instead of an object. Apart from this, it
includes a few minor changes like using CONVERT_SMI_ARG_CHECKED a bit more or
introducing a new macro for PropertyDetails. Nothing spectacular, just something
sitting on my disk for quite some time now...
Review URL: https://chromiumcodereview.appspot.com/
9395075
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10772
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 20 Feb 2012 18:01:21 +0000 (18:01 +0000)]
Fix regression test after r10770.
R=yangguo@chromium.org
TEST=cctest/test-regexp/CharacterClassEscapes
Review URL: https://chromiumcodereview.appspot.com/
9425050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10771
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 20 Feb 2012 17:50:53 +0000 (17:50 +0000)]
Fix RegExp white-space character class to match BOMs.
R=rossberg@chromium.org
TEST=test262/S15.10.2.12_A?_T1,mjsunit/regexp
Review URL: https://chromiumcodereview.appspot.com/
9426032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10770
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 20 Feb 2012 16:03:00 +0000 (16:03 +0000)]
Fix svn-ignore property for scons build directory.
R=jkummerow@chromium.org (reviewed offline)
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10765
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 20 Feb 2012 15:34:08 +0000 (15:34 +0000)]
Enable test-api/TurnOnAccessCheckAndRecompile and change it so it can't cause a GC.
A GC in the access check callbacks NamedSecurityCallback and IndexedSecurityCallback
violates the contract about these callbacks.
Added a EXTERNAL VMState scope around the call to FailedAccessCheckCallback to be
consistent with the other callback invocations.
BUG=v8:1952
TEST=cctest/test-api/TurnOnAccessCheckAndRecompile
Review URL: https://chromiumcodereview.appspot.com/
9425048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10764
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Mon, 20 Feb 2012 15:02:23 +0000 (15:02 +0000)]
Remove strict mode from message.js, seems to break Error conformance.
R=mstarzinger@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9426034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10763
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 20 Feb 2012 14:03:18 +0000 (14:03 +0000)]
Fix svn-ignore property for test directories.
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9421036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10760
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Mon, 20 Feb 2012 14:02:59 +0000 (14:02 +0000)]
Parsing of basic module declarations (no imports/exports yet).
Module definitions are not compiled or otherwise executed yet.
Toplevel module identifiers are bound but never initialized.
R=kmillikin@chromium.org,mstarzinger@google.com
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9401008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10759
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Mon, 20 Feb 2012 13:48:24 +0000 (13:48 +0000)]
Make built-ins strict mode conforming, and support a --use-strict flag.
* Turned all uses of 'const' into 'var'.
* Turned all uses of local 'function' into 'var'.
* Added a couple of missing toplevel 'var' declarations.
One consequence is that the properties on the builtin object are no longer
non-writable, and I had to adapt one test. Is that a problem?
Unfortunately, we cannot actually switch the library scripts to strict mode
by default, because that makes observable things like poisoned .caller properties
for library functions.
Also removed dead flag code in Compiler::Compile.
R=yangguo@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9415010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10758
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 20 Feb 2012 13:42:24 +0000 (13:42 +0000)]
Port r10490 and r10615 to cygwin.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9423041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10757
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Mon, 20 Feb 2012 13:22:02 +0000 (13:22 +0000)]
Fix presubmit.
R=yangguo@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9427011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10756
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 20 Feb 2012 13:21:15 +0000 (13:21 +0000)]
Enable inlining for Math.min/max in more cases.
Review URL: https://chromiumcodereview.appspot.com/
9372021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10755
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 20 Feb 2012 13:17:20 +0000 (13:17 +0000)]
Fix .gitignore for test data directories.
R=ulan@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9427010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10754
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Mon, 20 Feb 2012 12:57:23 +0000 (12:57 +0000)]
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
ulan@chromium.org [Mon, 20 Feb 2012 12:36:35 +0000 (12:36 +0000)]
Fix compile error on windows.
R=yangguo@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9424032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10752
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Mon, 20 Feb 2012 11:01:17 +0000 (11:01 +0000)]
Fix memory leak and missing #include in StartupDataDecompressor
BUG=v8:1960
TEST=compile with GYPFLAGS=-Dv8_compress_snapshot_data=bz2, then run d8 with valgrind
Review URL: https://chromiumcodereview.appspot.com/
9395073
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10751
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 20 Feb 2012 10:17:25 +0000 (10:17 +0000)]
Add a missing check for a failure result.
Function calls that may return a failure must use the result. Enforce
this by adding missing MUST_USE_RESULT to their declarations.
Review URL: https://chromiumcodereview.appspot.com/
9421032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10748
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 20 Feb 2012 09:47:31 +0000 (09:47 +0000)]
Fix test expectations after r10743.
R=rossberg@chromium.org
TEST=mozilla,sputnik
Review URL: https://chromiumcodereview.appspot.com/
9421031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10747
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Mon, 20 Feb 2012 08:42:18 +0000 (08:42 +0000)]
Avoid sharing AccessorPairs during Genesis.
To test the upcoming changes for map sharing in the presence of accessors, it is
essential that we keep a few global invariants: The map tree should always stay
a tree and AccessorPairs should not be shared between different DescriptorArrays
and/or StringDictionaries. This CL adds a test method for the latter invariant
and makes some changes to the bootstrapping process to avoid such sharing.
Note that we can't enable the new test method permanently yet, because we
currently go back and forth between fast mode and slow mode when adding an
accessor and break this invariant temporarily. This will be handled in a
separate CL.
Review URL: https://chromiumcodereview.appspot.com/
9417043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10744
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 20 Feb 2012 08:41:13 +0000 (08:41 +0000)]
Fix String.prototype.split for undefined separator.
R=rossberg@chromium.org
TEST=test262/S15.5.4.14_A?_T?
Review URL: https://chromiumcodereview.appspot.com/
9355005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10743
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Fri, 17 Feb 2012 16:02:20 +0000 (16:02 +0000)]
Add missing checks for failure after AddElementsTransition.
Review URL: https://chromiumcodereview.appspot.com/
9416058
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10742
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Fri, 17 Feb 2012 13:48:43 +0000 (13:48 +0000)]
Moved access checks out of Dictionary class.
The checks were at the wrong abstraction level, JSObject is the right place for
this check. Note that other uses of ValueAtPut either don't need a check at all
(like the one used for copying boilerplate) or do the check for themselves.
Review URL: https://chromiumcodereview.appspot.com/
9417044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10741
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 17 Feb 2012 13:35:00 +0000 (13:35 +0000)]
Update status file to recent test262 version.
R=rossberg@chromium.org
TEST=test262
Review URL: https://chromiumcodereview.appspot.com/
9415046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10740
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Fri, 17 Feb 2012 12:59:58 +0000 (12:59 +0000)]
Rename static methods to avoid shadowing virtual methods
and fix Clang C++11 compile error.
Review URL: https://chromiumcodereview.appspot.com/
9420049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10739
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Fri, 17 Feb 2012 11:34:50 +0000 (11:34 +0000)]
In gcmole assume that methods exiting VM can cause GC.
Detect those methods by reference to StateTag::EXTERNAL in their bodies.
R=fschneider@google.com
Review URL: https://chromiumcodereview.appspot.com/
9420046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10738
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 17 Feb 2012 10:06:26 +0000 (10:06 +0000)]
Fix sequence of element access in array builtins.
R=rossberg@chromium.org
BUG=v8:1790
TEST=mjsunit/regress/regress-1790,test262/15.4.4.22-9-9
Review URL: https://chromiumcodereview.appspot.com/
9419044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10737
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 16 Feb 2012 17:32:30 +0000 (17:32 +0000)]
Implement fast literal support in Crankshaft.
This extends the current support for nested object literals we already
have in Crankshaft, to also support nested array literals and mixed
nested literals containing arrays and objects. All three types are
generated by the unified HFastLiteral instruction.
All previous upper bounds on nested literal graphs remain unchanged,
keeping the size of generated code in check.
The main intention is to boost performance of two-dimensional array
literals containing constant elements (aka. matrices).
R=danno@chromium.org
TEST=mjsunit/compiler/literals-optimized
Review URL: https://chromiumcodereview.appspot.com/
9403018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10734
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 16 Feb 2012 17:13:37 +0000 (17:13 +0000)]
Revert r10721 because of test flakiness.
TBR=fschneider@chromium.org
BUG=v8:1322
Review URL: https://chromiumcodereview.appspot.com/
9417013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10733
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 16 Feb 2012 15:47:36 +0000 (15:47 +0000)]
Enable smi_only_arrays by default.
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9414007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10732
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 16 Feb 2012 15:37:52 +0000 (15:37 +0000)]
Relax TransitionElementsKind DependsOn/Changes dependencies.
Ensure that GVN eliminates all transitions that are dominated by an equivalent transition, even if there is a DependsOn-changing instruction in between.
R=fschneider@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9365057
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10731
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 16 Feb 2012 15:30:43 +0000 (15:30 +0000)]
Prepare push to trunk. Now working on version 3.9.8.
R=jkummerow@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9416016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10728
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 16 Feb 2012 15:20:13 +0000 (15:20 +0000)]
Temporarily disable known failing test to make builder cycle green.
BUG=v8:1952
Review URL: https://chromiumcodereview.appspot.com/
9414006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10727
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Thu, 16 Feb 2012 14:16:12 +0000 (14:16 +0000)]
Increase ARM/MIPS simulators stack safety margin to 1024 bytes
Based on r9686 (
10e1ea5).
BUG=
TEST=mozilla regress-355497.js
Review URL: https://chromiumcodereview.appspot.com/
9309030
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10722
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 16 Feb 2012 14:01:41 +0000 (14:01 +0000)]
Allow inlining of functions containing function literals.
R=fschneider@chromium.org
BUG=v8:1322
TEST=mjsunit/compiler/inline-literals
Review URL: https://chromiumcodereview.appspot.com/
9419005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10721
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 16 Feb 2012 13:33:37 +0000 (13:33 +0000)]
MIPS: Initial support for count-based profiling
Port r10699 (
18a0fc0).
Original commit message:
(behind FLAG_count_based_interrupts; only on ia32)
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9420005
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10720
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 16 Feb 2012 12:48:02 +0000 (12:48 +0000)]
Ensure using byte registers for byte instructions on ia32 and x64.
BUG=v8:1945
TEST=regress-1945.js
Review URL: https://chromiumcodereview.appspot.com/
9418005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10719
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 16 Feb 2012 09:36:11 +0000 (09:36 +0000)]
Cast NaN to float in ExternalFloatArray::SetValue.
TBR=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9419003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10718
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 16 Feb 2012 08:38:25 +0000 (08:38 +0000)]
MIPS: Re-worked the deopt entry table.
This method works around the Branch offset and relocinfo issues by emulating a pc-relative jump.
This allows us to generate larger entry tables. The theoretical limit is 2^16 (number of entries)
but even that can be extended by allowing a larger instruction count.
Also reverted the mips-specific constant (kNumberOfEntries) in deoptimizer.h
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9347016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10717
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 16 Feb 2012 08:38:11 +0000 (08:38 +0000)]
Fix GCC-4.7 warnings
which were introduced in r10700.
Review URL: https://chromiumcodereview.appspot.com/
9401005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10716
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 16 Feb 2012 08:10:47 +0000 (08:10 +0000)]
Prefix usage of kExternalFloatArray and kExternalDoubleArray with v8.
TBR=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9417002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10715
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 16 Feb 2012 07:58:07 +0000 (07:58 +0000)]
Uniformly handle 'undefined' store to Float64Array and Float32Array.
Previous behavior diverged in ICs and Crankshaft. When storing to a Float32Array or Float64Array, the ICs treated undefined as zero while Crankshaft treated it as NaN. Now both ICs and Crankshaft treat it as NaN, which is consistent with the WebGL & ECMAScript spec.
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9402008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10714
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 15 Feb 2012 15:42:50 +0000 (15:42 +0000)]
Cleanup idle notification tests.
R=ulan@chromium.org
TEST=cctest/test-api/IdleNotification
Review URL: https://chromiumcodereview.appspot.com/
9403014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10713
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 15 Feb 2012 13:45:42 +0000 (13:45 +0000)]
Initialize internal arrays with the correct map.
BUG=v8:1878
TEST=regress-1878.js
Review URL: https://chromiumcodereview.appspot.com/
9402009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10712
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 15 Feb 2012 12:13:55 +0000 (12:13 +0000)]
Remove unnecessary elements type check when allocating array in runtime.
BUG=
TEST=--smi-only-arrays should be perf-neutral to allocating big arrays in a tight loop.
Review URL: https://chromiumcodereview.appspot.com/
9356002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10711
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 15 Feb 2012 08:18:06 +0000 (08:18 +0000)]
MIPS: Enabled mips in tools/disasm.py.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9307118
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10710
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Tue, 14 Feb 2012 16:07:47 +0000 (16:07 +0000)]
MIPS: Split AST Declaration class, in preparation for new module declaration forms.
Port r10662 (
c8054f6).
Original commit message:
Turns Declaration into an abstract class, and introduces VariableDeclaration as a concrete subclass.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9395015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10709
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Tue, 14 Feb 2012 16:05:40 +0000 (16:05 +0000)]
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
danno@chromium.org [Tue, 14 Feb 2012 15:49:10 +0000 (15:49 +0000)]
MIPS: Implement KeyedStoreICs to grow arrays on out-of-bound stores.
Port r10673 (
18d3af5).
Original commit message:
Supports growing non-COW JSArray by a single element if the backing store has room, and initial allocation of a backing store for the store to index zero of an empty array to kPreallocatedArrayElements elements (e.g. the [] array literal).
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9378005
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10707
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Tue, 14 Feb 2012 15:09:49 +0000 (15:09 +0000)]
Fix crashing bugs in store-and-grow IC for double values.
R=jkummerow@chromium.org
BUG=chromium:113924
TEST=test/mjsunit/regress/regress-113924.js
Review URL: https://chromiumcodereview.appspot.com/
9365055
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10706
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Tue, 14 Feb 2012 15:07:15 +0000 (15:07 +0000)]
Add Navier-Stokes benchmark.
R=danno@chromium.org,kasperl@chromium.com,stefanoc@chromium.org,sandholm@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9359033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10705
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Tue, 14 Feb 2012 14:40:58 +0000 (14:40 +0000)]
Reapply r10690 ("Temporarily disable inlining of Math.floor called as a function")
This reverts r10692.
Review URL: https://chromiumcodereview.appspot.com/
9359035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10702
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Tue, 14 Feb 2012 14:28:37 +0000 (14:28 +0000)]
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
fschneider@chromium.org [Tue, 14 Feb 2012 14:14:51 +0000 (14:14 +0000)]
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
jkummerow@chromium.org [Tue, 14 Feb 2012 14:00:31 +0000 (14:00 +0000)]
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
rossberg@chromium.org [Tue, 14 Feb 2012 13:47:54 +0000 (13:47 +0000)]
Don't treat function parameters as let-bound variables in Harmony mode.
R=ulan@chromium.org
BUG=v8:1942
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9365054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10698
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Tue, 14 Feb 2012 11:44:01 +0000 (11:44 +0000)]
Prepare push to trunk. Now working on version 3.9.7.
R=jkummerow@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9395007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10695
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Tue, 14 Feb 2012 10:43:40 +0000 (10:43 +0000)]
Revert r10690. Enable inlining of Math.floor again.
The test failures reported in issue v8:1947 are unrelated to this change since it is not reproducible anymore.
BUG=v8:1947
Review URL: https://chromiumcodereview.appspot.com/
9365048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10692
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Tue, 14 Feb 2012 09:42:38 +0000 (09:42 +0000)]
objects: fix template-related linker error
R=erik.corry@gmail.com
BUG=1936
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9382033
Patch from Fedor Indutny <fedor@indutny.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10691
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Tue, 14 Feb 2012 09:42:31 +0000 (09:42 +0000)]
Temporarily disable inlining of Math.floor called as a function because of test failures.
BUG=v8:1947
Review URL: https://chromiumcodereview.appspot.com/
9359032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10690
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Tue, 14 Feb 2012 08:57:10 +0000 (08:57 +0000)]
Allow inlining of functions containing object literals.
R=fschneider@chromium.org
BUG=v8:1322
TEST=mjsunit/compiler/inline-literals
Review URL: https://chromiumcodereview.appspot.com/
9388007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10689
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 14 Feb 2012 08:45:32 +0000 (08:45 +0000)]
Port r10674 to MIPS.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9395003
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10688
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 14 Feb 2012 08:38:03 +0000 (08:38 +0000)]
Fix crash when using --smi-only-arrays and --trace-elements-transitions
BUG=
TEST=3d-cube on debug mode with --smi-only-arrays and --trace-elements-transitions
Review URL: https://chromiumcodereview.appspot.com/
9361054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10687
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Mon, 13 Feb 2012 14:41:46 +0000 (14:41 +0000)]
Clear map transitions in CALLBACKS when normalizing properties.
As a bonus, simplify the surrounding code a bit by using the templatized To method.
Review URL: https://chromiumcodereview.appspot.com/
9392002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10686
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Mon, 13 Feb 2012 14:15:43 +0000 (14:15 +0000)]
DescriptorArray::CopyFrom should always drop transitions for CALLBACKS.
Review URL: https://chromiumcodereview.appspot.com/
9389005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10685
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Mon, 13 Feb 2012 13:39:31 +0000 (13:39 +0000)]
Fix crash in CALLBACK KeyedIC stub.
TBR=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9390005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10684
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Mon, 13 Feb 2012 11:37:39 +0000 (11:37 +0000)]
Optimize call sites that only ever see a single elements transition
R=jkummerow@chromium.org
TEST=imaging-gaussian-blur performance improves
Review URL: https://chromiumcodereview.appspot.com/
9389001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10683
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 13 Feb 2012 10:24:55 +0000 (10:24 +0000)]
Fix test expectations for the tickprocessor.
Review URL: https://chromiumcodereview.appspot.com/
9388003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10682
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Mon, 13 Feb 2012 10:13:52 +0000 (10:13 +0000)]
Ensure that we do a non-incremental GC before relying on weak handle callbacks.
Previously, some tests failed when being run with a low GC interval. This was
caused by a switch of the GC to incremental marking mode, which in turn did not
fire any callbacks for weak global handles. Now we make sure that we run in
non-incremental mode, although via a slightly misleading GC flag.
We should probably review the uses of PerformScavenge() and gc() in our tests to
see if they actually mean "make sure our callbacks fired".
Review URL: https://chromiumcodereview.appspot.com/
9378007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10681
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 13 Feb 2012 10:07:57 +0000 (10:07 +0000)]
Add --call-graph-size option to tickprocessor.
BUG=v8:1937
Review URL: https://chromiumcodereview.appspot.com/
9386007
Patch from Ben Noordhuis <info@bnoordhuis.nl>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10680
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 13 Feb 2012 08:21:01 +0000 (08:21 +0000)]
Port r10674 to x64 and arm.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9384005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10679
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 13 Feb 2012 08:17:32 +0000 (08:17 +0000)]
MIPS: Fixed several bugs in SubStringStub::Generate.
A combination of bugs caused this function to almost always jump to runtime
which is why most tests passed.
BUG=
TEST=sputnik/S15.5.4.13_A2_T6
Review URL: https://chromiumcodereview.appspot.com/
9382005
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10678
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 10 Feb 2012 16:26:55 +0000 (16:26 +0000)]
MIPS: Count-based profiling for primitive functions (hidden behind a flag)
Port r10657 (
92073cf).
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9383003
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10677
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
loislo@chromium.org [Fri, 10 Feb 2012 14:00:16 +0000 (14:00 +0000)]
Heap Snapshot maximum size limit is too low for really big apps.
At the moment the limit is 256MB.
BUG=113015
TEST=none
Review URL: https://chromiumcodereview.appspot.com/
9375047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10676
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Fri, 10 Feb 2012 13:54:20 +0000 (13:54 +0000)]
Provide user-friendly access to natively bound function parameters
For a closure created using native Function.prototype.bind() the most important information for the heap profiler user is bound function, receiver and arguments. This change adds shortcuts for those fields.
Review URL: https://chromiumcodereview.appspot.com/
9382002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10675
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Fri, 10 Feb 2012 12:41:48 +0000 (12:41 +0000)]
Implement elements transitions in ia32 Array constructor with n args.
R=yangguo@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9369044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10674
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Fri, 10 Feb 2012 12:36:05 +0000 (12:36 +0000)]
Implement KeyedStoreICs to grow arrays on out-of-bound stores.
Supports growing non-COW JSArray by a single element if the backing store has room, and initial allocation of a backing store for the store to index zero of an empty array to kPreallocatedArrayElements elements (e.g. the [] array literal).
Review URL: https://chromiumcodereview.appspot.com/
9310117
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10673
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Fri, 10 Feb 2012 12:28:25 +0000 (12:28 +0000)]
Fix crashes on x64 with smi-only arrays active.
Review URL: https://chromiumcodereview.appspot.com/
9384002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10672
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 10 Feb 2012 08:47:35 +0000 (08:47 +0000)]
Streamline throwing in the C entry stub.
Remove a gratuitous level of indirection in favor of direct calls to the
macro assembler, and eliminate some duplicated code for the uncatchable
case.
R=fschneider@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9373022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10671
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 10 Feb 2012 08:35:57 +0000 (08:35 +0000)]
Small cleanup of ast.h.
Somehow the definition of DECLARE_NODE_TYPE was duplicated and never undef'd.
R=jkummerow@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9372056
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10670
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 9 Feb 2012 17:29:26 +0000 (17:29 +0000)]
Add asserts to try to flush out test flakiness.
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9358033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10669
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 9 Feb 2012 14:55:32 +0000 (14:55 +0000)]
Ensure expected behavior for transition hosting tests by flushing ICs
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9373027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10668
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Thu, 9 Feb 2012 13:54:45 +0000 (13:54 +0000)]
Make constructors explicit.
R=jkummerow@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9368026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10666
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 9 Feb 2012 13:49:30 +0000 (13:49 +0000)]
Prepare push to trunk. Now working on version 3.9.6.
R=jkummerow@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9374017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10664
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Thu, 9 Feb 2012 13:40:41 +0000 (13:40 +0000)]
Extend AST with basic module constructs (yet unused).
R=jkummerow@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9373023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10663
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Thu, 9 Feb 2012 13:39:26 +0000 (13:39 +0000)]
Split AST Declaration class, in preparation for new module declaration forms.
Turns Declaration into an abstract class, and introduces VariableDeclaration as a concrete subclass.
R=kmillikin@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9348057
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10662
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 9 Feb 2012 13:32:11 +0000 (13:32 +0000)]
MIPS: Convert fast smi-only to fast object in generated code for array push.
Port r10648 (
818a1aa).
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/
9372022
Patch from Daniel Kalmar <kalmard@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10661
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 9 Feb 2012 13:30:01 +0000 (13:30 +0000)]
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
danno@chromium.org [Thu, 9 Feb 2012 13:07:46 +0000 (13:07 +0000)]
Revert
9111036: Promote double arrays to FAST_ELEMENT that use generic KeyedLoadIC
It tanked Kraken.
TBR=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
9368024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10659
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Thu, 9 Feb 2012 10:46:50 +0000 (10:46 +0000)]
Handlify GetSourceCode-related functions.
Review URL: https://chromiumcodereview.appspot.com/
9374013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10658
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 9 Feb 2012 10:19:46 +0000 (10:19 +0000)]
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
svenpanne@chromium.org [Thu, 9 Feb 2012 09:55:14 +0000 (09:55 +0000)]
Cleaned up DescriptorArray::CopyInsert a bit.
The point of this refactoring is to remove some copy 'n' paste from the code,
preparing some upcoming changes related to CopyFrom and CALLBACKS with
transitions. The index fiddling is tricky enough to warrant a separate
refacoring-only CL...
Review URL: https://chromiumcodereview.appspot.com/
9371013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10656
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00