dslomov@chromium.org
1a67b7f86a
External Array renaming and boilerplate scrapping
...
Replaced symbolic names with correct JS name (byte -> int8, unsigned int -> uint32 etc).
Using macros to scrap the boilerplate
BUG=
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/145133013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18835 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-24 16:01:15 +00:00
vegorov@chromium.org
c86da7e5dc
Fix HGraphBuilder::AddSimulate to pass removable down correctly
...
It was passed as a position argument previously making all simulates added with it conservatively FIXED_SIMULATE.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/146013002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18822 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-24 12:22:13 +00:00
verwaest@chromium.org
21532ddfdc
Reland ArrayPop / ArrayPush.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/138443012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18814 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-24 11:47:53 +00:00
jkummerow@chromium.org
ee4e034d70
Revert broken ArrayPop changes
...
This reverts:
r18749 "Reland (and fix) "Add hydrogen support for ArrayPop, and remove the handwritten call stubs."",
r18790 "Remove ArrayPush from the custom call generators, and instead call directly to the handler in crankshaft.", and
r18798 "MIPS: Remove ArrayPush from the custom call generators, and instead call directly to the handler in crankshaft."
For causing crashes on Canary.
BUG=chromium:337686
LOG=N
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/146003006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18805 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-24 08:32:50 +00:00
verwaest@chromium.org
6b60546b16
Remove ArrayPush from the custom call generators, and instead call directly to the handler in crankshaft.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/137693003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18790 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-23 16:20:25 +00:00
hpayer@chromium.org
83a1df2354
Remove Heap::MaxRegularSpaceAllocationSize and use Page::MaxRegularHeapObjectSize instead.
...
BUG=
R=mstarzinger@chromium.org , mvstanton@chromium.org
Review URL: https://codereview.chromium.org/141653016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18776 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-23 13:02:27 +00:00
verwaest@chromium.org
f30330325e
Reland (and fix) "Add hydrogen support for ArrayPop, and remove the handwritten call stubs."
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/144913003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18749 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-22 13:22:58 +00:00
bmeurer@chromium.org
c06d248248
Refactor fast path for empty constant strings in BinaryOp.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/143003005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-22 12:30:00 +00:00
mvstanton@chromium.org
1b3280c491
Revert "Add hydrogen support for ArrayPop, and remove the handwritten call stubs."
...
This reverts commit r18709, due to deopt fuzzer issue.
TBR=verwaest@chromium.org
Review URL: https://codereview.chromium.org/143983010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18731 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-22 10:41:23 +00:00
rossberg@chromium.org
0d906a8bdb
Zonify types in compiler frontend
...
Clean up some zone/isolate handling in AST and its visitors on the way.
(Based on https://codereview.chromium.org/103743004/ )
R=jkummerow@chromium.org , titzer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/102563004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18719 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-21 16:22:52 +00:00
verwaest@chromium.org
2d9a4eb355
Add hydrogen support for ArrayPop, and remove the handwritten call stubs.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/137783023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-21 12:42:24 +00:00
bmeurer@chromium.org
4bae658948
Fix invalid type assumption in GenerateNumberToString().
...
We don't have any type feedback in %_NumberToString(), so it's
a bug to assume Type::Number here.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/143893002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-21 10:35:20 +00:00
mvstanton@chromium.org
04b1baa4c4
We no longer need to recover type cells from the oracle.
...
We only need the values within them. Function calls to Array from optimized code needed the cell in the past, but no longer.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/141893002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18682 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-20 09:48:05 +00:00
mvstanton@chromium.org
b2bea46245
Minor bugfix in building inlined Array: bad argument to JSArrayBuilder.
...
An HConstant pointing to a Cell rather than an AllocationSite
was passed. The argument wasn't used because of fortuitous
flags. An assert was added to protect the argument.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/141533003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-17 12:18:57 +00:00
mvstanton@chromium.org
155ef100e9
Fix logic error in assert in IsUndeclaredGlobal()
...
Recent changes in IC logic meant that CallStubs no longer use the Contextual bit. IsUndeclaredGlobal() needed to adjust for that.
In fact, now the CL has morphed to remove the notion of storing contextual state in the IC at all, it just becomes some extra ic state of the load ic. This took some adjustment in harmony code to use the global receiver for certain stores.
Now it's clearer that only LoadICs actually record any information about contextual or not.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/140943002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-17 11:08:24 +00:00
dslomov@chromium.org
5da41be7b8
Implement in-heap backing store for typed arrays.
...
This adds a fixed array sub-type that will represent a backing store for
typed arrays allocated with TypedArray(length) construtor.
R=mvstanton@chromium.org , verwaest@chromium.org
Review URL: https://codereview.chromium.org/101413006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18651 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-16 17:08:45 +00:00
dslomov@chromium.org
34eeeb8953
Revert "Implement in-heap backing store for typed arrays."
...
This reverts commit r18649 for breaking Linux/nosnap and Win64 tests.
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/140793003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18650 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-16 16:00:36 +00:00
dslomov@chromium.org
97040ce67b
Implement in-heap backing store for typed arrays.
...
This adds a fixed array sub-type that will represent a backing store for
typed arrays allocated with TypedArray(length) construtor.
R=mvstanton@chromium.org , verwaest@chromium.org
Committed: https://code.google.com/p/v8/source/detail?r=18646
Review URL: https://codereview.chromium.org/101413006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18649 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-16 15:01:27 +00:00
dslomov@chromium.org
95f572389e
Revert "Implement in-heap backing store for typed arrays."
...
This reverts commit r18646 for breaking Win32 build.
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/132233012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18647 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-16 14:26:15 +00:00
dslomov@chromium.org
0c960c2e96
Implement in-heap backing store for typed arrays.
...
This adds a fixed array sub-type that will represent a backing store for
typed arrays allocated with TypedArray(length) construtor.
R=mvstanton@chromium.org , verwaest@chromium.org
Review URL: https://codereview.chromium.org/101413006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18646 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-16 14:18:37 +00:00
jarin@chromium.org
19d832719e
This is a preview of a first step towards unification of the hydrogen
...
call machinery. The change replaces CallNamed, CallKeyed,
CallConstantFunction and CallKnownGlobal hydrogen instructions with two
new instructions with a more lower level semantics:
1. CallJSFunction for direct calls of JSFunction objects (no
argument adaptation)
2. CallWithDescriptor for calls of a given Code object according to
the supplied calling convention.
Details:
CallJSFunction should be straightforward, the main difference from the
existing InvokeFunction instruction is the absence of argument adaptor
handling. (As a next step, we will replace InvokeFunction with an
equivalent hydrogen code.)
For CallWithDescriptor, the calling conventions are represented by a
tweaked version of CallStubInterfaceDescriptor. In addition to the
parameter-register mapping, we also define parameter-representation
mapping there. The CallWithDescriptor instruction has variable number of
parameters now - this required some simple tweaks in Lithium, which
assumed fixed number of arguments in some places.
The calling conventions used in the calls are initialized in the
CallDescriptors class (code-stubs.h, <arch>/code-stubs-<arch>.cc), and
they live in a new table in the Isolate class. I should say I am not
quite sure about Representation::Integer32() representation for some of
the params of ArgumentAdaptorCall - it is not clear to me wether the
params could not end up on the stack and thus confuse the GC.
The change also includes an earlier small change to argument adaptor
(https://codereview.chromium.org/98463007 ) that avoids passing a naked
pointer to the code entry as a parameter. I am sorry for packaging that
with an already biggish change.
Performance implications:
Locally, I see a small regression (.2% or so). It is hard to say where
exactly it comes from, but I do see inefficient call sequences to the
adaptor trampoline. For example:
;;; <@78,#24> constant-t
bf85aa515a mov edi,0x5a51aa85 ;; debug: position 29
;;; <@72,#53> load-named-field
8b7717 mov esi,[edi+0x17] ;; debug: position 195
;;; <@80,#51> constant-s
b902000000 mov ecx,0x2 ;; debug: position 195
;;; <@81,#51> gap
894df0 mov [ebp+0xf0],ecx
;;; <@82,#103> constant-i
bb01000000 mov ebx,0x1
;;; <@84,#102> constant-i
b902000000 mov ecx,0x2
;;; <@85,#102> gap
89d8 mov eax,ebx
89cb mov ebx,ecx
8b4df0 mov ecx,[ebp+0xf0]
;;; <@86,#58> call-with-descriptor
e8ef57fcff call ArgumentsAdaptorTrampoline (0x2d80e6e0) ;; code: BUILTIN
Note the silly handling of ecx; the hydrogen for this code is:
0 4 s27 Constant 1 range:1_1 <|@
0 3 t30 Constant 0x5bc1aa85 <JS Function xyz (SharedFunctionInfo 0x5bc1a919)> type:object <|@
0 1 t36 LoadNamedField t30.[in-object]@24 <|@
0 1 t38 Constant 0x2300e6a1 <Code> <|@
0 1 i102 Constant 2 range:2_2 <|@
0 1 i103 Constant 1 range:1_1 <|@
0 2 t41 CallWithDescriptor t38 t30 t36 s27 i103 i102 #2 changes[*] <|@
BUG=
R=verwaest@chromium.org , danno@chromium.org
Review URL: https://codereview.chromium.org/104663004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-15 17:00:35 +00:00
jkummerow@chromium.org
5298a078c6
Revert "Eliminatable CheckMaps replaced with if(true) or if(false)."
...
This reverts r18592 for breaking the GC stress bots.
R=machenbach@chromium.org
Review URL: https://codereview.chromium.org/137783011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-15 09:53:54 +00:00
ishell@chromium.org
6b389902e1
Revert "Polymorphic named calls optimized for the case of repetitive call targets." for now because it prevents better results for checkmap elimination.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/138453002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-14 16:37:09 +00:00
verwaest@chromium.org
72125bafcc
Remove HCallGlobal and merge uses with HCallNamed.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/134333007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-14 16:15:52 +00:00
ishell@chromium.org
952fbe475f
Eliminatable CheckMaps replaced with if(true) or if(false).
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/130613003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18592 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-14 16:06:40 +00:00
verwaest@chromium.org
1257ba358c
Remove CALL_AS_FUNCTION and CALL_AS_METHOD.
...
BUG=
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/136403005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18590 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-14 14:36:24 +00:00
verwaest@chromium.org
f2245a9cf9
Make the strict-mode calling convention for contextual calls the default one.
...
BUG=
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/131663003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-14 12:04:10 +00:00
hpayer@chromium.org
f01dc250dc
Handlify AllocationSite AddDependentCompilationInfo.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/136703002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18570 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-13 14:54:33 +00:00
mvstanton@chromium.org
854d085996
More efficient use of space in AllocationSite.
...
We can eliminate one word from the object by sharing the pretenuring decision and the found memento count.
R=bmeurer@chromium.org , hpayer@chromium.org
Review URL: https://codereview.chromium.org/132063004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18554 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-13 10:28:01 +00:00
ishell@chromium.org
5c65572dd2
"dead" and "osr" block flags added to trace output for unreachable and osr entry blocks respectively.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/135943004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18550 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-13 08:45:26 +00:00
jarin@chromium.org
c0f622a45b
Fix of Hydrogen environment building for function "apply" calls.
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/133773002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-11 13:59:04 +00:00
rossberg@chromium.org
cb28b7f837
Retry "Templatise type representation" after making clang happy
...
The only thing different now is line types.h:208/236, which had a static_cast<Type*> before.
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/133683002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-10 12:19:01 +00:00
hpayer@chromium.org
4ef951cf43
Allocation site pretenuring.
...
Pretenuring decisions are made based on allocation site lifetime statistics.
BUG=
R=mstarzinger@chromium.org , mvstanton@chromium.org
Review URL: https://codereview.chromium.org/96783002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-10 12:11:54 +00:00
machenbach@chromium.org
8ffcd2a281
[Sheriff] Revert "Templatise type representation" and "Fix Mac warnings".
...
This reverts commit r18521 and r18522 for breaking mac and win builders.
BUG=
TBR=rossberg@chromium.org
Review URL: https://codereview.chromium.org/132493002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18524 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-09 19:52:15 +00:00
rossberg@chromium.org
1c33a2d840
Templatise type representation
...
This is to support both heap- and zone-allocated types in the future (the latter not yet implemented).
Also, handlify the type API some more.
R=titzer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/107933005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18521 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-09 17:12:48 +00:00
jkummerow@chromium.org
839297487f
Skip back edge creation for "do ... while(false)" loops
...
Drive-by fix: Fix disassembling "prefetch" instruction on ia32
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/131733002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-09 15:20:25 +00:00
mvstanton@chromium.org
380aa6dc8d
Array constructor can be simplified by loading context from JSFunction.
...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/128683002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-09 15:07:23 +00:00
mvstanton@chromium.org
7baadbfac1
FunctionLiteral has work to do in the typing phase.
...
In crankshaft, we searched un-optimized code for a SharedFunctionInfo
that matches the FunctionLiteral we are processing. Ideally, this
work should be done in the typing phase.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/104883006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-09 09:00:19 +00:00
ishell@chromium.org
b2616f415b
Polymorphic named calls optimized for the case of repetitive call targets.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/118483003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18476 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-07 16:59:42 +00:00
verwaest@chromium.org
4615e9edac
Reland v8:18458 "Load the global proxy from the context of the target function."
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/104013008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18462 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-07 10:46:39 +00:00
rossberg@chromium.org
2879f2104c
Revert "Load the global proxy from the context of the target function."
...
This reverts commit https://code.google.com/p/v8/source/detail?r=18458 , since it exhibits a bug that breaks some tests.
TBR=verwaest@chromium.org
BUG=
Review URL: https://codereview.chromium.org/93863006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18461 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-07 09:55:25 +00:00
verwaest@chromium.org
5b40c38679
Load the global proxy from the context of the target function.
...
BUG=
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/111613003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-07 08:21:17 +00:00
bmeurer@chromium.org
ad4231c495
Reland "Allocation site support for monomorphic StringAdds in BinaryOps".
...
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/106313003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18444 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-02 15:31:27 +00:00
bmeurer@chromium.org
4d88b0b4be
Revert "Fix compilation with C++11." and "Allocation site support for monomorphic StringAdds in BinaryOps.".
...
This reverts commit r18431 and r18432 for breaking
the Linux nosnapshot build.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/122463004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-02 10:38:45 +00:00
bmeurer@chromium.org
a91499fec7
Allocation site support for monomorphic StringAdds in BinaryOps.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/106453003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18431 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-02 09:17:52 +00:00
bmeurer@chromium.org
a53dcc9da1
Make it possible to assert that certain instance types are compatible wrt HAllocate.
...
Turns clear_next_map_word_ into a flag and adds a new method
CompatibleInstanceTypes(). This is used in BuildUncheckedStringAdd()
to ASSERT that there's no difference wrt. HAllocate in using
CONS_STRING_TYPE vs CONS_ASCII_STRING_TYPE.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/110443003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-02 06:26:44 +00:00
jkummerow@chromium.org
3c76ecd732
Fix switch statements with non-Smi integer labels and no type feedback
...
BUG=chromium:329709
LOG=Y
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/98643010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-19 14:25:58 +00:00
ishell@chromium.org
e3752b63c0
HStoreKeyed for Smis optimized for x64 + related redundant moves of elements removed
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/108503004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 18:05:10 +00:00
ishell@chromium.org
8c159ed4ec
HStoreNamedField for Smis optimized for x64
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/108413003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 17:53:50 +00:00
danno@chromium.org
8683920e3f
Improve ==/=== comparison in Hydrogen for monomorphic maps
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/108083004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 17:18:23 +00:00
jkummerow@chromium.org
59c334ebf4
Hydrogen: Re-use regular comparisons infrastructure for switch statements
...
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/111573003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 11:58:58 +00:00
verwaest@chromium.org
fb7218dc3d
Enable optimization of functions with generic switches.
...
R=jkummerow@chromium.org , titzer@chromium.org
Review URL: https://chromiumcodereview.appspot.com/110123002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18347 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 11:44:38 +00:00
svenpanne@chromium.org
84aa5263f3
Remove the last remnants of the TranscendentalCache.
...
It was only used for Math.log, and even then only in full code and in %_MathLog. For crankshafted code, Intel already used the FP operations directly, while the ARM/MIPS ports were a bit lazy and simply called the stub. The latter directly call the C library now without any cache. It would be possible to directly generate machine code if somebody has the time, from what I've seen out in the wild it should be only about a dozen instructions.
LOG=y
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/113343003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 10:40:26 +00:00
yurys@chromium.org
cd5ea74700
Replace 'operator*' with explicit 'get' method on SmartPointer
...
Made operator* return reference to the raw type, not pointer. New method 'get()' should be used when raw pointer is needed.
Also removed useless inline modifier from the SmaprtPointer methods and added const modifier to the methods that don't change smart pointer.
Made ~SmartPointerBase protected to avoid accidental calls of the non-virtual base class's destructor.
drive-by: fixed use after free in src/factory.cc
BUG=None
LOG=N
R=alph@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/101763003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18275 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-09 07:41:20 +00:00
mvstanton@chromium.org
a1a871fb5a
Remove unnecessary overflow check in HGraphBuilder::BuildCreateAllocationMemento().
...
With this fix codegen looks like:
mov ecx,[eax+0xf] ;;; <@52,#38> load-named-field
add ecx,0x2 ;;; <@54,#40> add-i
mov [eax+0xf],ecx ;;; <@56,#41> store-named-field
without it there is an overflow check and jump to deopt.
x64 code looks similar, except there is an (annoying) smi-untag then int32-to-smi around the add operation.
R=bmeurer@chromium.org , hpayer@chromium.org
Review URL: https://codereview.chromium.org/104313003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18255 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-04 10:46:18 +00:00
bmeurer@chromium.org
69b5d5f8f6
Revert "Use constant types to represent the fixed right arg of a MOD."
...
This reverts commit r18246 for tanking all benchmarks.
TBR=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/104243002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18249 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-04 09:27:48 +00:00
bmeurer@chromium.org
1868ef5de9
Use constant types to represent the fixed right arg of a MOD.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/103933002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-04 08:37:34 +00:00
bmeurer@chromium.org
7e540e6b8a
Revert "Use constant types to represent the fixed right arg of a MOD."
...
This reverts commit r18228 for crashing on Windows.
TBR=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/101663002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-03 11:24:56 +00:00
bmeurer@chromium.org
5c6b9500aa
Use constant types to represent the fixed right arg of a MOD.
...
R=mvstanton@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/99173002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18228 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-03 10:51:57 +00:00
bmeurer@chromium.org
aa83f2900a
Fix invalid assertion with OSR in BuildBinaryOperation.
...
BUG=v8:3032
LOG=n
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/98623004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18190 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-02 13:12:07 +00:00
bmeurer@chromium.org
a3d1df29f1
Fix HInnerAllocatedObject to use an HValue for the offset.
...
R=hpayer@chromium.org , mvstanton@chromium.org
Review URL: https://codereview.chromium.org/98673003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18181 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-02 11:24:31 +00:00
jkummerow@chromium.org
833ee3cdb7
A few small refactorings and typo fixes
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/95333002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18153 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-29 10:02:32 +00:00
mstarzinger@chromium.org
b506e8ce96
Follow-up fix for r18135 in TryCallApply.
...
R=yangguo@chromium.org
BUG=chromium:323942
TEST=mjsunit/regress/regress-crbug-323942
LOG=N
Review URL: https://codereview.chromium.org/95583002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18152 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-29 09:59:35 +00:00
titzer@chromium.org
6e5e23d630
Implement global check elimination using the HFlowEngine.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/46883009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-28 15:50:54 +00:00
yangguo@chromium.org
f235194518
Fix bug in inlining Function.apply.
...
R=jkummerow@chromium.org
BUG=323942
LOG=Y
Review URL: https://codereview.chromium.org/95123003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18135 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-28 15:30:17 +00:00
hpayer@chromium.org
0e95ffddf2
Fix allocation memento bookeeping code for js arrays.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/95053002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18124 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-28 13:45:23 +00:00
hpayer@chromium.org
0213fc9035
Added tracing support for pretenuring.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/94493002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-28 10:49:02 +00:00
mvstanton@chromium.org
f3a22f965e
The goal is to discover the appropriate heap space for objects created in full
...
code. By the time we optimize the code, we'll be able to decide on new or old
space based on the number of surviving objects after one or more gcs.
The mechanism is a "memento" placed behind objects in the heap. It's currently
done for array and object literals, with plans to use mementos for constructed
objects as well (in a later CL).
The feature is behind the flag allocation_site_pretenuring, currently off.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/40063002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-27 14:03:40 +00:00
dslomov@chromium.org
c3a4d718ce
Generate TypedArrayInitialize builtin in hydrogen.
...
R=danno@chromium.org
Review URL: https://codereview.chromium.org/59023003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18059 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-25 14:41:46 +00:00
mvstanton@chromium.org
81b22bbf96
A performance regression in array literal creation was caused by refactoring that eliminated a special fast case for shallow arrays. At the same time the general case got a bit slower. This CL restores most of the performance without coding the special fast case. The virtual dispatching is unnecessary because we know what we want to do at compile time. A flag was added to Runtime::CreateArrayLiteral. The flags delivers information about shallowness but also whether or not allocation mementos should be created. This is useful for crankshafted code.
...
BUG=v8:3008
LOG=Y
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/77293003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18046 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-25 12:41:27 +00:00
dslomov@chromium.org
21dca31203
Safe HGraphBuilder::Add<> and New<>
...
R=danno@chromium.org
Review URL: https://codereview.chromium.org/82943005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-22 19:05:21 +00:00
bmeurer@chromium.org
7158b51125
Fix combined string length computation.
...
For 31-bit smis, we don't need to explicitly check whether the
combined string length exceeds the max supported string length,
since the value must be converted to a smi at some point (i.e.
when it is stored into the string length field of the resulting
string), which will emit an overflow check.
For 32-bit smis, we insert an explicit check that the combined
string length does not exceed String::kMaxLength.
This also enables to get rid of the JoinContinuation() usage in
BuildUncheckedStringAdd().
BUG=v8:2990
LOG=n
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/82733003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18005 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-22 12:03:01 +00:00
bmeurer@chromium.org
08df395f4e
Get rid of the binop_stub parameter to BuildBinaryOperation().
...
Just ask the graph builder whether we are compiling a stub.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/83073003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18004 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-22 11:49:04 +00:00
svenpanne@chromium.org
b6b84c02b2
Reland "Implement Math.random() purely in JavaScript" plus fixes.
...
The main change is that a bit has been added to array buffers to
signal that the backing store has to be freed when the buffer dies.
BUG=316359
LOG=Y
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/82763005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18003 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-22 11:35:39 +00:00
bmeurer@chromium.org
da87c188ad
Rework BuildCheckString() to be compatible with the other BuildCheck*() methods.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/79343009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17985 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-22 07:27:26 +00:00
danno@chromium.org
8e266c2244
Revert 17963, 17962 and 17955: Random number generator in JS changes
...
Revert 17966, 17965 also as collateral damage: Embed trigonometric lookup table.
Due to Heapcheck and valgrind failures that are not yet fixed.
TBR=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/80513004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17981 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-21 17:21:00 +00:00
svenpanne@chromium.org
2b1da67263
Implement Math.random() purely in JavaScript.
...
This removes tons of architecture-specific code and makes it easy to
experiment with other pseudo-RNG algorithms. The crankshafted code is
extremely good, keeping all things unboxed and doing only minimal
checks, so it is basically equivalent to the handwritten code.
When benchmarks are run without parallel recompilation, we get a few
percent regression on SunSpider's string-validate-input and
string-base64, but these benchmarks run so fast that the overall
SunSpider score is hardly affected and within the usual jitter. Note
that these benchmarks actually run even faster when we don't
crankshaft at all on the main thread (the regression is not caused by
bad code, it is caused by Crankshaft needing a few hundred microsecond
for compilation of a trivial function). Luckily, when parallel
recompilation is enabled, i.e. in the browser, we see no regression at
all!
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/68723002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17955 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-21 09:55:15 +00:00
bmeurer@chromium.org
d38abc3bba
Remove the first_right_arg hack for HMod.
...
Generate a proper subgraph in BuildBinaryOperation instead.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/77053003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17919 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-20 12:43:33 +00:00
bmeurer@chromium.org
4c4d911cde
Convert constant numbers at compile time.
...
TEST=mjsunit/number-tostring
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/77553005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17917 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-20 12:35:21 +00:00
bmeurer@chromium.org
defee14d76
Make BuildBinaryOperation use ReturnValue instead of ReturnInstruction.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/78183002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-20 12:00:57 +00:00
bmeurer@chromium.org
6826b74708
Replace unsafe uses of Add<> with AddUncasted<>.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/78213002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17913 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-20 11:57:49 +00:00
bmeurer@chromium.org
da6d5586f9
Don't generate useless string checks for string adds.
...
If we know that one side of a string add is definitely a string
(i.e. if it's a string constant), then we don't need to emit a
string check for the argument.
This adds a new BuildCheckString() method to the graph builder,
which does "the right thing".
TEST=mjsunit/string-add
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/78063002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17912 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-20 11:53:09 +00:00
danno@chromium.org
06c7620302
Fixed crashes exposed though fuzzing.
...
The %_OneByteSeqStringSetChar intrinsic expects its arguments to be checked before being called for efficiency reasons, but the fuzzer provided no such checks. Now the intrinsic is robust to bad input if FLAG_debug_code is set.
R=yangguo@chromium.org
TEST=test/mjsunit/regress/regress-320948.js
BUG=chromium:320948
LOG=Y
Review URL: https://codereview.chromium.org/72813004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17886 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-19 16:41:07 +00:00
yangguo@chromium.org
e2563d7a8e
Make number of available threads isolate-dependent and expose it to ResourceConstraints.
...
R=svenpanne@chromium.org
BUG=v8:2991
LOG=Y
Review URL: https://codereview.chromium.org/68203029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-19 11:52:47 +00:00
ishell@chromium.org
53bd540ee0
Constant-folding through HForceRepresentation fix.
...
Reverts changes in HValue::IsInteger32Constant() made in https://code.google.com/p/v8/source/detail?r=17787
R=bmeurer@chromium.org , mvstanton@chromium.org
Review URL: https://codereview.chromium.org/68493005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17863 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-19 11:41:04 +00:00
vegorov@chromium.org
0ec0d5fc32
Reapply r11765
...
Add static_cast<int> in HPositionInfo::position to please Win64 build.
Improvements in positions handling in optimizing compiler.
- When building binary arithmetic op and comparison restore source position of the operation itself before building operation itself after it was changed by building operands. This ensures that position recorded for operation points to the operation token instead of pointing to the rightmost operand;
- Add support for recording operands' positions and use these positions when inserting HChange instructions;
- When generating hydrogen.cfg emit H-instruction position as BCI (previously 0 was emitted), additionally on every lithium instruction emit annotation pointing to corresponding hydrogen-instruction. This allows to easily reach from deopt_id to lithium instruction and from it to hydrogen instruction and source position.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/59703011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17848 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-18 17:24:00 +00:00
dslomov@chromium.org
99133912bd
Generate DataViewInitialize built-in in hydrogen.
...
R=bmeurer@chromium.org , mvstanton@chromium.org
Review URL: https://codereview.chromium.org/66843011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-18 13:57:49 +00:00
danno@chromium.org
4ed2538262
Generate KeyedLoadDictionaryElementStub with Hydrogen
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/19492007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17804 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-15 17:53:35 +00:00
mvstanton@chromium.org
5b9569b574
Regression fix: HForceRepresentation shouldn't be an idef.
...
Instead, code sites that are interested in underlying constant integer values
should use HValue::IsInteger32Constant(). The issue is that the infer representation phase shouldn't "see through" HForceRepresentation nodes to an underlying, and less specific representation.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/65643003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-15 12:10:59 +00:00
verwaest@chromium.org
341d405301
Reland and fix "Add support for keyed-call on arrays of fast elements"
...
BUG=
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/71783003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17782 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-15 10:52:05 +00:00
danno@chromium.org
d62337e127
Add ability to do "else-if" clauses in IfBuilder
...
- In an Else block it's possible to add more If<>'s in the same builder that are
treated as an else if.
- Simplified and cleaned-up some of the IfBuilder's internals.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/66983002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17780 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-15 10:36:02 +00:00
bmeurer@chromium.org
2ee5aa951c
Fix missing type feedback check for Generic*String addition.
...
TEST=mjsunit/regress/regress-crbug-318671
BUG=318671
LOG=y
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/67473007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-15 09:13:36 +00:00
rafaelw@chromium.org
25b450b2b7
Revert "Improvements in positions handling in optimizing compiler." (r17765)
...
Original issue: https://codereview.chromium.org/49203002/
TBR=vegorov
Review URL: https://codereview.chromium.org/63343003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17768 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-14 21:45:01 +00:00
vegorov@chromium.org
9d440ac4c0
Improvements in positions handling in optimizing compiler.
...
- When building binary arithmetic op and comparison restore source position of the operation itself before building operation itself after it was changed by building operands. This ensures that position recorded for operation points to the operation token instead of pointing to the rightmost operand;
- Add support for recording operands' positions and use these positions when inserting HChange instructions;
- When generating hydrogen.cfg emit H-instruction position as BCI (previously 0 was emitted), additionally on every lithium instruction emit annotation pointing to corresponding hydrogen-instruction. This allows to easily reach from deopt_id to lithium instruction and from it to hydrogen instruction and source position.
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/49203002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17765 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-14 21:00:27 +00:00
machenbach@chromium.org
eef8694a7e
[Sheriff] Revert "Add support for keyed-call on arrays of fast elements"
...
This reverts commit r17746 for breaking layout tests.
TBR=verwaest@chromium.org
BUG=
Review URL: https://codereview.chromium.org/72753002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17751 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-14 15:00:13 +00:00
verwaest@chromium.org
607a175cbc
Add support for keyed-call on arrays of fast elements
...
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23537067
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-14 13:46:18 +00:00
mvstanton@chromium.org
3cf157b43b
Inline zero argument array constructor.
...
patch from issue 54583003 (dependent code).
Zero arguments - very easy
1 argument - three special cases:
a) If length is a constant in valid array length range,
no need to check it at runtime.
b) respect DoNotInline feedback on the AllocationSite for
cases that the argument is not a smi or is an integer
with a length that should create a dictionary.
c) if kind feedback is non-holey, and length is non-constant,
we'd have to generate a lot of code to be correct.
Don't inline this case.
N arguments - one special case:
a) If a deopt ever occurs because an input argument isn't
compatible with the elements kind, then set the
DoNotInline flag.
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/55933002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17741 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-14 12:05:09 +00:00
mvstanton@chromium.org
026c5507bd
Make HForceRepresentation an idef.
...
An optimization in the array constructor wasn't firing because the code
would check for constant values, failing to find them through
intervening HForceRepresentation instructions. Repaired this site. A
follow-on CL will provide a better way of making decisions based on
constant HValues.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/59623009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17708 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-13 17:03:11 +00:00
yangguo@chromium.org
e83fd01ce6
Reland "Implement Math.sin, cos and tan using table lookup and spline interpolation."
...
This relands r17594 with necessary fixes.
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/70003004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17654 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-12 14:43:18 +00:00
yangguo@chromium.org
df9665032e
Introduce %_IsMinusZero.
...
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/63423004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-12 11:53:13 +00:00