hpayer@chromium.org [Thu, 22 May 2014 13:51:44 +0000 (13:51 +0000)]
If map became unstable, abort compilation and allow re-compilation.
BUG=
R=danno@google.com
Review URL: https://codereview.chromium.org/
291653006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21438
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ishell@chromium.org [Thu, 22 May 2014 13:38:32 +0000 (13:38 +0000)]
Revert "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis."
This reverts r21436.
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
295933012
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21437
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ishell@chromium.org [Thu, 22 May 2014 12:35:45 +0000 (12:35 +0000)]
Inobject slack tracking is done on a per-closure basis instead of per-shared info basis.
This fixes inobject slack tracking for prototype inheritance pattern that uses closures.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
283383006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21436
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Thu, 22 May 2014 11:52:01 +0000 (11:52 +0000)]
GCMole evaluation order issue in CallIC::DoCustomHandler().
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/
296693011
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21435
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Thu, 22 May 2014 11:32:30 +0000 (11:32 +0000)]
ClearTypeFeedbackInfo(): context may not be initialized.
SharedFunctionInfo::ClearTypeFeedbackInfo() wants to compare feedback
to the array JSFunction, but it's called at times when the context
isn't fully initialized. Be cautious about this check.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
298983002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21434
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Thu, 22 May 2014 11:26:48 +0000 (11:26 +0000)]
Add support for ES6 Symbol in heap profiler
Heap profiler will create a node with name Symbol and type kSymbol.
BUG=chromium:376194
LOG=Y
R=loislo@chromium.org, yangguo@chromium.org
Review URL: https://codereview.chromium.org/
290013004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21433
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 22 May 2014 11:16:05 +0000 (11:16 +0000)]
Revert "Make v8::TryCatch able to consume natively thrown exceptions"
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
293123003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21432
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jarin@chromium.org [Thu, 22 May 2014 11:13:37 +0000 (11:13 +0000)]
Attempt no. 3 to fix Heap::IsHeapIterable and HeapIterator.
Now we remember new space's top pointer after the last GC to find out if there was a new space allocation since the last GC.
Unfortunately, this not completely safe - the debugger has a callback hook (that can call to JS) at the end of the GC epilogue that can in theory allocate and possibly make the heap non-iterable. We can only hope this does not happen.
BUG=373283
R=hpayer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/
291193005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21431
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 22 May 2014 09:36:20 +0000 (09:36 +0000)]
Make serializer non-static.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
296853007
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21430
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Thu, 22 May 2014 09:30:02 +0000 (09:30 +0000)]
Customized support for feedback on calls to Array.
Gather transition feedback on array calls, and inline the Array
function call when it makes sense.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/
279423005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21429
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 22 May 2014 09:04:24 +0000 (09:04 +0000)]
Revert "Rename target-specific binaries built for host."
The Android build system support for gyp has been fixed to handle
target-dependent host binaries correctly without requiring them to
include the target architecture in the name. Remove the suffixes to make
referring to these targets simpler again.
This reverts r14209.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
236833004
Patch from Richard Coles <torne@chromium.org>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21428
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 22 May 2014 08:46:01 +0000 (08:46 +0000)]
Make v8::TryCatch able to consume natively thrown exceptions.
R=yangguo@chromium.org, haraken@chromium.org
BUG=chromium:362388
TEST=cctest/test-api/TryCatchNative
LOG=N
Review URL: https://codereview.chromium.org/
287133005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21427
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 22 May 2014 08:37:50 +0000 (08:37 +0000)]
Allow specifying base offset when constructing Keyed hydrogen instructions
This is preparation for pending hydrogen stub work that needs to access memory using KeyedLoad/KeyedStore operations where the base offset used for the accesses are is the the default (e.g. the size of an FixedArray header for FixedArrays or zero for external arrays).
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
295913009
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21426
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Thu, 22 May 2014 08:37:20 +0000 (08:37 +0000)]
Increase external allocation limit.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
291653005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21425
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 22 May 2014 08:11:10 +0000 (08:11 +0000)]
Remove usage of Locker/Unlocker where possible.
This is possible because we removed DebuggerAgent.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
286903004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21424
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Thu, 22 May 2014 08:09:57 +0000 (08:09 +0000)]
Fix Array.prototype.push and Array.prototype.unshift for read-only length.
BUG=
R=mstarzinger@chromium.org, mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
279773002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21423
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 22 May 2014 08:04:17 +0000 (08:04 +0000)]
Remove check for SAHF support in ia32.
On ia32, SAHF is guaranteed. It's only necessary to probe for it on x64.
R=svenpanne@chromium.org
BUG=376087
LOG=N
Review URL: https://codereview.chromium.org/
296133006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21422
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 22 May 2014 07:57:33 +0000 (07:57 +0000)]
Remove special debug ExternalReferences.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
296043002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21421
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Thu, 22 May 2014 07:40:07 +0000 (07:40 +0000)]
Don't replace initializing smi stores during store elimination.
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/
286903019
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21420
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 22 May 2014 07:32:59 +0000 (07:32 +0000)]
Reland "Prevent liveedit on or under generators with open activations"
The change relative to the previous CL is a logic change in
DropActivationsInActiveThreadImpl. The previous CL skipped the matcher
unless the frame was a JS frame; this was correct for
MultipleFunctionTarget but not for SingleFrameTarget.
I have not been able to reproduce the original failures on either
architecture (ia32 or x64; stack frame dropping is unsupported on other
architectures).
R=yangguo@chromium.org
LOG=N
TEST=mjsunit/harmony/generators-debug-liveedit.js
BUG=
Review URL: https://codereview.chromium.org/
270283002
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21419
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
alph@chromium.org [Thu, 22 May 2014 05:36:27 +0000 (05:36 +0000)]
Introduce a separate event for CodeDeopt
The reuse of CodeCreateEvent for deopt events caused a CodeCreateEvent
fired twice for a code object. When the event was processed for the first
time it seized the no-fp-ranges from code object, so the second event
had no ranges info leaving code entry without them.
As a result when a cpu profile sample falls into the region it missed the
2nd stack frame.
LOG=N
BUG=
R=bmeurer@chromium.org, loislo@chromium.org
Review URL: https://codereview.chromium.org/
290093005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21418
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Thu, 22 May 2014 05:33:37 +0000 (05:33 +0000)]
Transitioning stores change maps.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/
296953003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21417
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 21 May 2014 15:13:50 +0000 (15:13 +0000)]
Implement Mirror object for Symbols.
R=rossberg@chromium.org, yurys@chromium.org
BUG=v8:3290
LOG=Y
Review URL: https://codereview.chromium.org/
297513006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21414
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 21 May 2014 15:00:32 +0000 (15:00 +0000)]
Move promises recorded for debugging to thread local data.
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
296693005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21413
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Wed, 21 May 2014 12:58:06 +0000 (12:58 +0000)]
Revert "Increase external allocation limit."
BUG=
Review URL: https://codereview.chromium.org/
292983010
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21412
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Wed, 21 May 2014 12:43:05 +0000 (12:43 +0000)]
Increase external allocation limit.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
297663008
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21411
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Wed, 21 May 2014 12:36:37 +0000 (12:36 +0000)]
Reorder checks in Runtime_TypedArrayInitialize*
All checks must be performed before any side effects, so we get atomic transactions
BUG=chromium:374443
LOG=n
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/
298843003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21410
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Wed, 21 May 2014 12:31:31 +0000 (12:31 +0000)]
Fix OrderedHashSet::Remove caller in debug-only code after r21408
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
294473011
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21409
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Wed, 21 May 2014 12:16:47 +0000 (12:16 +0000)]
Teach OrderedHashSet::Remove to report whether it actually removed anything
This avoids an unnecessary runtime call from Set.prototype.delete().
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
290733008
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21408
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jochen@chromium.org [Wed, 21 May 2014 11:57:33 +0000 (11:57 +0000)]
Comment out not yet used flags from BUILD.gn
gn started to complain about unused variables
BUG=none
R=dcarney@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/
292263003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21405
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jarin@chromium.org [Wed, 21 May 2014 09:49:18 +0000 (09:49 +0000)]
Revert "Fix Heap::IsHeapIterable." (again)
This reverts commit r21397.
TBR=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
299813002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21404
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Wed, 21 May 2014 09:25:50 +0000 (09:25 +0000)]
Allow debugger to step into Map and Set forEach callbacks
BUG=v8:3341
LOG=Y
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
293083005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21403
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Wed, 21 May 2014 09:25:05 +0000 (09:25 +0000)]
Stop using urllib.urlretrieve() directly.
Using urllib for SSL connections when behind a proxy is known to be
broken, so apply the same fix from depot_tools r149742 and use a wrapper
around urllib2 instead.
R=jkummerow@chromium.org
TEST=run test262 behind corporate proxy
Review URL: https://codereview.chromium.org/
297663003
Patch from Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21402
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Wed, 21 May 2014 08:51:29 +0000 (08:51 +0000)]
Fix ArrayShift hydrogen support
BUG=chromium:374838
LOG=y
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
299713003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21401
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Wed, 21 May 2014 08:47:02 +0000 (08:47 +0000)]
Use SameValueZero for Map and Set
Instead of normalizing the keys we use SameValueZero for the actual
comparison.
BUG=v8:1622
LOG=Y
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
299703004
Patch from Erik Arvidsson <arv@chromium.org>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21400
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Wed, 21 May 2014 08:05:11 +0000 (08:05 +0000)]
Array Iterator next should check for own property
Since we are using private symbols for the internal slots we need to
check for a local property.
BUG=None
LOG=Y
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
268363011
Patch from Erik Arvidsson <arv@chromium.org>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21399
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
marja@chromium.org [Wed, 21 May 2014 07:32:32 +0000 (07:32 +0000)]
Fix UnboundScript::GetScriptName and GetLineNumber.
Probably broken since r19925 (mine).
R=dcarney@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
296043004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21398
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jarin@chromium.org [Wed, 21 May 2014 06:44:38 +0000 (06:44 +0000)]
Reland "Fix Heap::IsHeapIterable."
This relands r21388 (+ handlification of an offending function).
BUG=373283
LOG=N
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
294903003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21397
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Tue, 20 May 2014 17:12:18 +0000 (17:12 +0000)]
Disable ArrayShift hydrogen support
BUG=chromium:374838
LOG=y
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
295983003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21392
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 20 May 2014 15:20:02 +0000 (15:20 +0000)]
Remove unused thread locals from debugger.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
286903003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21391
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
plind44@gmail.com [Tue, 20 May 2014 14:49:05 +0000 (14:49 +0000)]
MIPS: Avoid flushing the icache unnecessarily when updating target addresses in code.
Port r21380 (ef20a0a)
Original commit message:
This CL updates RelocInfo update operations and set_target_address_at to enable
skipping of the icache flush if it going to be batched up later.
Code::CopyFrom and Code::Relocate are modified to avoid individual icache
flushes since the whole code area will be flushed after the reloc info is
updated.
These changes reduce a regression when enabling the OOL constant pool on Arm,
since this change can cause MovT/MovW instructions for relocatable targets
if the constant pool is full.
Scores for Mandreel latency on a Nexus 5:
- OOL CP disabled: 3533
- OOL CP enabled, without this CL: 1825
- OOL CP enabled, with change: 3015
BUG=
R=plind44@gmail.com
Review URL: https://codereview.chromium.org/
296723003
Patch from Balazs Kilvady <kilvadyb@homejinni.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21390
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Tue, 20 May 2014 14:22:05 +0000 (14:22 +0000)]
ES6 Map/Set iterators/forEach improvements
This changes how Map/Set interacts with its iterators. When the
underlying table is rehashed or cleared, we create a new table (like
before) but we add a reference from the old table to the new table. We
also add an array describing how to transition the iterator from the
old table to the new table.
When Next is called on the iterator it checks if there is a newer table
that it should transition to. If there is, it updates the index based
on the previously recorded changes and finally changes itself to point
at the new table.
With these changes Map/Set no longer keeps the iterators alive. Also,
as before, the iterators keep the underlying table(s) alive but not the
actual Map/Set.
BUG=v8:1793
LOG=Y
R=mstarzinger@chromium.org, rossberg@chromium.org
Review URL: https://codereview.chromium.org/
289503002
Patch from Erik Arvidsson <arv@chromium.org>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21389
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jarin@chromium.org [Tue, 20 May 2014 14:03:38 +0000 (14:03 +0000)]
Revert "Fix Heap::IsHeapIterable."
This reverts commit r21387.
TBR=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
291193002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21388
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jarin@chromium.org [Tue, 20 May 2014 13:19:21 +0000 (13:19 +0000)]
Fix Heap::IsHeapIterable.
We only consider heap iterable if the new space is empty (in addition to the exisiting old space check).
The change also moves the iterability forcing + allocation prevention gadgets to HeapIterator so that it is impossible to miss them when iterating the heap.
R=hpayer@chromium.org
BUG=373283
LOG=N
Review URL: https://codereview.chromium.org/
285693006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21387
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 20 May 2014 13:03:25 +0000 (13:03 +0000)]
Revert "Refactor transitioning stores."
This reverts commit r21383 for breaking the Mozilla tests.
TBR=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
292993003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21386
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
marja@chromium.org [Tue, 20 May 2014 12:22:04 +0000 (12:22 +0000)]
Parser: delay throwing errors.
This makes Parser a bit more independent of Isolate during the recursive descent
phase. That is necessary for making it possible to run Parser on a non-main
thread in the future.
Proof of concept CL for the the "Parser independent of Isolate" work is here:
https://codereview.chromium.org/
231073002/
BUG=
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
289373005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21385
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 20 May 2014 11:25:47 +0000 (11:25 +0000)]
Get rid of HStoreNamedField::SkipWriteBarrier().
The write barrier elimination does the right thing now, so
we can get rid of this hack.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
296023002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21384
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 20 May 2014 11:06:23 +0000 (11:06 +0000)]
Refactor transitioning stores.
There's actually no need to have the transition as part of the HStoreNamedField instruction. In fact, it is cleaner and faster to generate a separate HStoreNamedField for the transition map. This will also help to eliminate map stores with store elimination, as well as reduce register pressure for transitioning stores on ia32.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
295743002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21383
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ishell@chromium.org [Tue, 20 May 2014 10:13:46 +0000 (10:13 +0000)]
Reland "v8::TryCatch now works correctly with ASAN's UseAfterReturn mode enabled."
BUG=chromium:369962
LOG=N
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
282783004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21382
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Tue, 20 May 2014 09:53:18 +0000 (09:53 +0000)]
Print promotion rate and semi-space copy rate in --trace-gc-nvp.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
290133004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21381
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rmcilroy@chromium.org [Tue, 20 May 2014 09:21:45 +0000 (09:21 +0000)]
Avoid flushing the icache unnecessarily when updating target addresses in code.
This CL updates RelocInfo update operations and set_target_address_at to enable
skipping of the icache flush if it going to be batched up later.
Code::CopyFrom and Code::Relocate are modified to avoid individual icache
flushes since the whole code area will be flushed after the reloc info is
updated.
These changes reduce a regression when enabling the OOL constant pool on Arm,
since this change can cause MovT/MovW instructions for relocatable targets
if the constant pool is full.
Scores for Mandreel latency on a Nexus 5:
- OOL CP disabled: 3533
- OOL CP enabled, without this CL: 1825
- OOL CP enabled, with change: 3015
R=rodolph.perfetta@arm.com, ulan@chromium.org
Review URL: https://codereview.chromium.org/
284153004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21380
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Tue, 20 May 2014 09:13:26 +0000 (09:13 +0000)]
Tighten HAS_PRIVATE to own properties
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
290373002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21379
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 20 May 2014 08:52:42 +0000 (08:52 +0000)]
Reland "Simplify debugger state."
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
299653002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21378
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 20 May 2014 08:42:10 +0000 (08:42 +0000)]
Use HType::NonPrimitive() for array backing store allocations.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
291153003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21377
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 20 May 2014 08:24:51 +0000 (08:24 +0000)]
Ensure that interruptor callback registered through API is called outside of ExecutionAccess lock.
Such a coarse locking can cause a dead-lock when another thread is attempting to clear an interrupt while we are waiting in the interrupt callback.
Add test that verifies this API invariant.
BUG=chromium:374978
LOG=N
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
291123002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21376
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 20 May 2014 08:16:47 +0000 (08:16 +0000)]
Fix invalid condition in check elimination effects.
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/
292993002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21375
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Mon, 19 May 2014 16:07:20 +0000 (16:07 +0000)]
Add allocation sites to scratchpad only if a significant amount of mementos was found.
BUG=
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/
284223007
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21370
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
plind44@gmail.com [Mon, 19 May 2014 15:30:23 +0000 (15:30 +0000)]
MIPS: Allow comparison in UINT32 mode.
Port r21355 (932c5de)
Original commit message:
Shamelessly based on parts of https://codereview.chromium.org/
288853003/. :-)
BUG=
R=plind44@gmail.com
Review URL: https://codereview.chromium.org/
296453003
Patch from Balazs Kilvady <kilvadyb@homejinni.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21369
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
machenbach@chromium.org [Mon, 19 May 2014 15:29:29 +0000 (15:29 +0000)]
Sync change log file with trunk.
BUG=
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
291803005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21368
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 19 May 2014 13:45:45 +0000 (13:45 +0000)]
filter out .caller from other worlds
R=verwaest@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
261103002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21366
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
wingo@igalia.com [Mon, 19 May 2014 12:31:36 +0000 (12:31 +0000)]
Fix GCMole warning when creating generator arguments poison pill
R=jkummerow@chromium.org
TBR=rossberg@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
289323005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21365
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
wingo@igalia.com [Mon, 19 May 2014 10:47:00 +0000 (10:47 +0000)]
Poison .arguments and .caller for generator functions
R=rossberg@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
270133003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21362
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jochen@chromium.org [Mon, 19 May 2014 09:58:46 +0000 (09:58 +0000)]
Update BUILD.gn and properly disable it on android
BUG=none
R=dcarney@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/
294613002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21361
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Mon, 19 May 2014 09:48:35 +0000 (09:48 +0000)]
Further improve old space allocation write barrier elimination.
Stores to old space allocations require no write barriers if the
object is the new space dominator and the value is not in new space.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
290173003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21360
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Mon, 19 May 2014 08:36:56 +0000 (08:36 +0000)]
Comment out %RunMicrotasks assert that triggers in mjsunit tests
TBR=dcarney@chromium.org
Review URL: https://codereview.chromium.org/
290313004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21359
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
machenbach@chromium.org [Mon, 19 May 2014 08:36:53 +0000 (08:36 +0000)]
Let test driver export json results.
BUG=374134
LOG=n
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
285193009
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21358
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Mon, 19 May 2014 08:19:54 +0000 (08:19 +0000)]
Fix fuzzable JS function count after r21356
TBR=dcarney@chromium.org
Review URL: https://codereview.chromium.org/
294523006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21357
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Mon, 19 May 2014 07:57:04 +0000 (07:57 +0000)]
Move microtask queueing logic from JavaScript to C++
This avoids the appearence of a leak due to storing a JSObject
as the microtask_state in the strong root list, and allows callers
to call Isolate::RunMicrotasks() without having any v8::Context
available (as at least Blink has interest in doing).
The queue is now a strong root, represented as a FixedArray of JSFunctions
(or empty_fixed_array, if it's empty); it doubles in size when it needs to grow.
The number of elements in the queue is stored in Isolate::pending_microtask_count().
LOG=Y
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/
290633010
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21356
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Mon, 19 May 2014 07:47:09 +0000 (07:47 +0000)]
Allow comparison in UINT32 mode.
Shamelessly based on parts of https://codereview.chromium.org/
288853003/. :-)
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
288383002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21355
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Mon, 19 May 2014 07:26:33 +0000 (07:26 +0000)]
Drop redundant FullCodeGenerator::prepared_bailout_ids_.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
294543002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21354
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Mon, 19 May 2014 07:24:24 +0000 (07:24 +0000)]
Perform block ordering in-place.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
295543002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21353
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Mon, 19 May 2014 07:08:47 +0000 (07:08 +0000)]
Partial revert of "Next bunch of fixes for check elimination".
This reverts the part of r21154 that introduced the CHECK()s to verify
state of objects with stable maps during code generation. The CHECK()s
seem to trigger a non-critical hidden bug in the map stability
mechanism. We will re-add these CHECK()s once the bug is found and
fixed.
BUG=372173
LOG=y
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
287363002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21352
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Mon, 19 May 2014 07:06:44 +0000 (07:06 +0000)]
Revert "Simplify debugger state."
This reverts r21346, it broke the layout tests.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
292713002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21351
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Fri, 16 May 2014 15:42:00 +0000 (15:42 +0000)]
Fix performance regression in regular expressions after Array.push() optimizations
R=yangguo@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/
281953002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21348
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Fri, 16 May 2014 15:18:24 +0000 (15:18 +0000)]
Decouple CpuFeatures from serializer state.
Traditionally, we cross compile a snapshot iff the serializer is enabled.
This will change in the future.
Changes:
- CpuFeatures probing is done once per process, depending on whether we
cross compile.
- CpuFeatures are consolidated into the platform-independent assembler.h
as much as possible.
- FLAG_enable_<feature> will only be checked at probing time (already the
case for ARM).
- The serializer state is cached by the MacroAssembler.
- PlatformFeatureScope is no longer necessary.
- CPUFeature enum values no longer map to CPUID bit fields.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
285233010
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21347
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Fri, 16 May 2014 14:58:03 +0000 (14:58 +0000)]
Simplify debugger state.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
287873005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21346
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rmcilroy@chromium.org [Fri, 16 May 2014 14:49:11 +0000 (14:49 +0000)]
Fix MacroAssembler::Prologue for Arm when FLAG_out_off_line_constant_pool is enabled.
The prologue update in r21329 changed the scoping of the PredictableCodeSizeScope.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
284303003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21345
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Fri, 16 May 2014 14:42:02 +0000 (14:42 +0000)]
Stage ES6 symbols
R=yangguo@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
286133002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21344
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 16 May 2014 13:43:19 +0000 (13:43 +0000)]
Harden builtins BuildResultFromMatchInfo and URIDecodeOctets
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
286203010
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21343
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 16 May 2014 13:23:32 +0000 (13:23 +0000)]
Add builtin detector to generate-runtime-tests.py
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/
283403002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21342
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 16 May 2014 13:18:13 +0000 (13:18 +0000)]
Move check for existence of generated tests from run-tests.py to presubmit.py
Inspired by https://codereview.chromium.org/
275143002#msg3
R=machenbach@chromium.org
Review URL: https://codereview.chromium.org/
290023002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21341
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 16 May 2014 13:16:08 +0000 (13:16 +0000)]
Expand C++ macros in tools/generate-runtime-tests.py to increase coverage
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/
290513002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21340
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Fri, 16 May 2014 13:06:20 +0000 (13:06 +0000)]
Use %DebugGetProperty in debug mirror to check for Promise.
R=aandrey@chromium.org, amikhaylova@google.com
Review URL: https://codereview.chromium.org/
283373003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21339
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Fri, 16 May 2014 13:04:45 +0000 (13:04 +0000)]
Make plot shell script nicer.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
284283005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21338
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
m.m.capewell@googlemail.com [Fri, 16 May 2014 12:09:42 +0000 (12:09 +0000)]
ARM64: Fix native cctest
CPUFeatures::Probe has been modified such that it can be called only once, but
the cctests make two calls in native builds: once in VM init, and once in each
test setup. This patch removes the call in the test setup.
BUG=
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
285273003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21337
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
machenbach@chromium.org [Thu, 15 May 2014 15:01:27 +0000 (15:01 +0000)]
Fix keyboard interrupt in test driver.
Drain the queues to prevent failures when queues are garbage collected. Fails when interrupting test262 otherwise.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
286973004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21334
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 15 May 2014 14:13:59 +0000 (14:13 +0000)]
Ensure that collection iterators' maps have constructors
This fixes JSObject::GetCreationContext() for such iterators.
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
288233002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21333
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 15 May 2014 13:03:14 +0000 (13:03 +0000)]
Fix builtin/runtime name clashes generated by macros
Specifically: DataView{S,G}et* and a few more Math functions.
Also change indentation in typedarray.js for easier future builtins parsing.
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/
286073004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21332
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 15 May 2014 12:46:32 +0000 (12:46 +0000)]
Adapt test expectations in webkit.
R=machenbach@chromium.org
Review URL: https://codereview.chromium.org/
288163003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21331
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
machenbach@chromium.org [Thu, 15 May 2014 12:40:40 +0000 (12:40 +0000)]
Fix deopt fuzzer after test runner changes.
Use the same keyboard interrupt logic as run-tests.
Close the perf database explicitly after one run, as it has two runs on the same architecture. Currently the first run closes on garbage collection, which might corrupt the second run.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
284203002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21330
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 15 May 2014 12:10:00 +0000 (12:10 +0000)]
Refactor MacroAssembler::Prologue.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/
288213002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21329
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
machenbach@chromium.org [Thu, 15 May 2014 12:01:34 +0000 (12:01 +0000)]
Run tests sorted by expected runtime.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
273613005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21328
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Thu, 15 May 2014 11:10:07 +0000 (11:10 +0000)]
Decrease OldSurvivalRateLowThreshold to fit heap growing strategy.
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
282223005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21327
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Thu, 15 May 2014 11:09:22 +0000 (11:09 +0000)]
Only allow allocation site lifetime transitions from undicided to tenure or don't tenure.
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
289973002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21326
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 15 May 2014 10:40:48 +0000 (10:40 +0000)]
Use table to dispatch debug commands.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
289473005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21325
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
marja@chromium.org [Thu, 15 May 2014 09:44:57 +0000 (09:44 +0000)]
Parser / PreParser: Simplify error message arguments.
In some places, we pretended that there can be multiple arguments, though in
practice there was only one. In other places (most importantly, PreParser), we
only handled one argument. (This means that we were not able to produce a
multi-argument error inside a lazy function anyway.)
This CL makes it clear that there is ever only one argument.
R=ulan@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
273653002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21324
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 15 May 2014 09:34:47 +0000 (09:34 +0000)]
Ignore Eclipse project description files.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
290453004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21323
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Thu, 15 May 2014 09:25:03 +0000 (09:25 +0000)]
Omit stack check in non-looping loops.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
285333002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21322
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 15 May 2014 09:19:02 +0000 (09:19 +0000)]
Remove custom JSON implementation from d8.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
283943002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21321
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Thu, 15 May 2014 07:16:46 +0000 (07:16 +0000)]
Avoid memset(NULL, ...).
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
290453003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21320
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00