platform/upstream/v8.git
14 years agoTypo fixed.
serya@chromium.org [Tue, 23 Feb 2010 12:52:29 +0000 (12:52 +0000)]
Typo fixed.

Review URL: http://codereview.chromium.org/650047

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

14 years agoAdd comment to generated code that says which code generator compiled it.
whesse@chromium.org [Tue, 23 Feb 2010 12:40:36 +0000 (12:40 +0000)]
Add comment to generated code that says which code generator compiled it.
Review URL: http://codereview.chromium.org/652110

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

14 years agoIA32: Native access to TranscendentalCache for sin/cos.
lrn@chromium.org [Tue, 23 Feb 2010 10:29:02 +0000 (10:29 +0000)]
IA32: Native access to TranscendentalCache for sin/cos.

Review URL: http://codereview.chromium.org/652041

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

14 years agoPrepare push to trunk. Now working on 2.1.3.
fschneider@chromium.org [Tue, 23 Feb 2010 10:22:07 +0000 (10:22 +0000)]
Prepare push to trunk. Now working on 2.1.3.

Review URL: http://codereview.chromium.org/654003

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

14 years agoFix reliability crash caused by wrong assert.
fschneider@chromium.org [Mon, 22 Feb 2010 15:42:23 +0000 (15:42 +0000)]
Fix reliability crash caused by wrong assert.

These two asserts in ComputeEntryFrame are wrong since the
virtual frame already knows how to deal with the number type
information of copy elements: We do not store type
information with copy elements. Instead the backing element
contains the type information.

Review URL: http://codereview.chromium.org/652044

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

14 years agoAdd integer casts to make v8 compile without warnings on 64-bit Visual Studio
whesse@chromium.org [Mon, 22 Feb 2010 11:42:46 +0000 (11:42 +0000)]
Add integer casts to make v8 compile without warnings on 64-bit Visual Studio
Review URL: http://codereview.chromium.org/650140

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

14 years agoDeclare register names as constants in assembler-x64.h. Fix for issue 615.
whesse@chromium.org [Mon, 22 Feb 2010 11:41:52 +0000 (11:41 +0000)]
Declare register names as constants in assembler-x64.h.  Fix for issue 615.
Review URL: http://codereview.chromium.org/650136

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

14 years agoConsistently return failure if the stub cache cannot deliver a code object
sgjesse@chromium.org [Mon, 22 Feb 2010 10:04:22 +0000 (10:04 +0000)]
Consistently return failure if the stub cache cannot deliver a code object

Some functions of the stub cache returned undefined if a code stub could not be generated. However the clients of these functions only cehcks for failure. Now all these functions return a failire object if no code stub can be made available
Review URL: http://codereview.chromium.org/652039

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

14 years agoLand patch by Oleg Eterevsky (oleg@chromium.org).
vitalyr@chromium.org [Fri, 19 Feb 2010 17:11:47 +0000 (17:11 +0000)]
Land patch by Oleg Eterevsky (oleg@chromium.org).

Original review: http://codereview.chromium.org/646010/show

Change the implementation of lastIndexOf method of String. Convert the
strings in question to Vector<char> or Vector<uc16> and execute simple
search algorithm on them.

The difference in speed on 500k character string is about 10x.

TBR=ager@chromium.org

Review URL: http://codereview.chromium.org/650036

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

14 years agoImprove stores to global variables.
whesse@chromium.org [Fri, 19 Feb 2010 15:04:16 +0000 (15:04 +0000)]
Improve stores to global variables.
Review URL: http://codereview.chromium.org/650028

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

14 years agoBegin using a list of bailouts instead of a singleton in the fast code generator.
kmillikin@chromium.org [Fri, 19 Feb 2010 14:52:39 +0000 (14:52 +0000)]
Begin using a list of bailouts instead of a singleton in the fast code generator.

A list of bailout descriptions is kept in the CompilationInfo
structure that is shared between the primary and secondary code
generators.  The primary adds a description to the list for each
bailout position.

Responsibility for binding labels is moved from the primary to the
secondary code generator. All the labels still target the start of the
secondary code and the compilation state of the primary is still
ignored.

Move the compilation mode flag to the CompilationInfo.

Review URL: http://codereview.chromium.org/651031

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

14 years agoAdd maxStrinLength argument to debugger requests
yurys@chromium.org [Fri, 19 Feb 2010 14:33:08 +0000 (14:33 +0000)]
Add maxStrinLength argument to debugger requests

Review URL: http://codereview.chromium.org/647022

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

14 years agoAdded test for bug 619 - we should move this to object-define-property when the bug...
ricow@chromium.org [Fri, 19 Feb 2010 13:27:43 +0000 (13:27 +0000)]
Added test for bug 619 - we should move this to object-define-property when the bug has been corrected.

Review URL: http://codereview.chromium.org/651028

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

14 years agoSome string optimizations:
vitalyr@chromium.org [Fri, 19 Feb 2010 13:07:37 +0000 (13:07 +0000)]
Some string optimizations:

 * Inlined checks for strings and regexps.
 * Rewrote split for the non-regexp case.
 * Implemented one-char case for lastIndexOf.

Review URL: http://codereview.chromium.org/596122

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

14 years agoRemoved asserts on attributes when setting elements. Will file a bug on not handling...
ricow@chromium.org [Fri, 19 Feb 2010 12:16:00 +0000 (12:16 +0000)]
Removed asserts on attributes when setting elements. Will file a bug on not handling elements correctly when using Object.defineProperty
Review URL: http://codereview.chromium.org/651025

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

14 years agoAdd missing break in GetPropertyWithFailedAccessCheck. This break has
ager@chromium.org [Fri, 19 Feb 2010 12:10:46 +0000 (12:10 +0000)]
Add missing break in GetPropertyWithFailedAccessCheck.  This break has
been missing for a long time but the fallthrough to the default case
used to break.  Now the default case should be unreachable and the
fallthrough therefore causes assertion failures.

Review URL: http://codereview.chromium.org/651024

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

14 years agoReorder code in fast-codegen-ia32.cc.
kmillikin@chromium.org [Fri, 19 Feb 2010 11:39:12 +0000 (11:39 +0000)]
Reorder code in fast-codegen-ia32.cc.

Reorder code so that helper functions and simple accessors come before
all the visit function.

Review URL: http://codereview.chromium.org/650026

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

14 years agoImprove load of global variables.
whesse@chromium.org [Fri, 19 Feb 2010 10:05:33 +0000 (10:05 +0000)]
Improve load of global variables.
Review URL: http://codereview.chromium.org/651019

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

14 years agoMake class BitField able to use 32 bits of a uint32.
fschneider@chromium.org [Fri, 19 Feb 2010 10:02:04 +0000 (10:02 +0000)]
Make class BitField able to use 32 bits of a uint32.

Although algorithmically correct, the compiler would not allow to instantiate
a BitField that uses all 32 bits without warnings about a too large shift
count. As a consequence we were limited to 31 bit values when using BitField.

This happened when instantiating a bitfield BitField<T, shift, size> with
[shift=0, size=32] or [shift=31, size=1] or more general any
[shift=X, size=32-X]

As side-effect of the new implementation the compiler now warns if we ever
try instantiating a bitfield with size 0.

Review URL: http://codereview.chromium.org/606063

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

14 years agoFix missing includes.
fschneider@chromium.org [Fri, 19 Feb 2010 09:59:47 +0000 (09:59 +0000)]
Fix missing includes.

TBR=kmillikin@chromium.org,
Review URL: http://codereview.chromium.org/650025

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

14 years agoTemporarily move the ia32 fast code generator into the platform-specific directory.
fschneider@chromium.org [Fri, 19 Feb 2010 09:17:37 +0000 (09:17 +0000)]
Temporarily move the ia32 fast code generator into the platform-specific directory.

This allows us to make changes to one platform without affecting the others.

Review URL: http://codereview.chromium.org/646019

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

14 years agoIntroduce 'trivial' expressions, use them for this property assignments.
kmillikin@chromium.org [Fri, 19 Feb 2010 09:01:31 +0000 (09:01 +0000)]
Introduce 'trivial' expressions, use them for this property assignments.

Add a (currently) syntactic predicate to AST expression nodes telling
whether they are 'trivial'.  Trivial expressions have no side effects,
do not require storage to be allocated for them, and can be evaluated
out of order (because their value does not change between when they
are visited by the code generator as expressions in the AST and when
it is consumed).

Mark 'this' and literals as trivial.  Allow them to be pushed on the
virtual frame.  Make use of them to push 'this' more lazily in this
property assignments.

Review URL: http://codereview.chromium.org/647018

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

14 years agoPrepare push to trunk. Now working on version 2.1.2.
ager@chromium.org [Fri, 19 Feb 2010 08:19:20 +0000 (08:19 +0000)]
Prepare push to trunk.  Now working on version 2.1.2.
Review URL: http://codereview.chromium.org/651016

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

14 years agoMake setting length on arrays faster.
antonm@chromium.org [Thu, 18 Feb 2010 17:30:32 +0000 (17:30 +0000)]
Make setting length on arrays faster.

Review URL: http://codereview.chromium.org/647013

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

14 years agoRemove the LookupResult IsValid method because it is confusing.
ager@chromium.org [Thu, 18 Feb 2010 15:10:35 +0000 (15:10 +0000)]
Remove the LookupResult IsValid method because it is confusing.

Replaced IsValid by IsPropertyOrTransition and used IsProperty in most
of the places where IsValid was used before.  Most of the time when
inspecting a lookup result we really want to know if there is a real
property present.  Only for stores are we interested in transitions.

BUG=http://crbug.com/20104
TEST=cctest/test-api/NamedInterceptorMapTransitionRead
Review URL: http://codereview.chromium.org/647015

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

14 years agoAdded access check to SetNormalizedProperty which is used from runtime DefineOrRedefi...
ricow@chromium.org [Thu, 18 Feb 2010 13:13:21 +0000 (13:13 +0000)]
Added access check to SetNormalizedProperty which is used from runtime DefineOrRedefineDataProperty.

Review URL: http://codereview.chromium.org/647010

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

14 years agoRefactor assignments in the ia32 code generator.
kmillikin@chromium.org [Thu, 18 Feb 2010 13:02:17 +0000 (13:02 +0000)]
Refactor assignments in the ia32 code generator.

Change compilation of assignment expressions in the ia32 code
generator to no longer use the Reference helper class.  This gives us
more explicit control over which subexpressions are evaluated and
when.

Review URL: http://codereview.chromium.org/643001

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

14 years agoAdd a test case for issue 618
sgjesse@chromium.org [Thu, 18 Feb 2010 13:01:58 +0000 (13:01 +0000)]
Add a test case for issue 618
Review URL: http://codereview.chromium.org/647014

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

14 years agoFix error in compound assignment to keyed load by making platform-independent full...
whesse@chromium.org [Thu, 18 Feb 2010 12:59:41 +0000 (12:59 +0000)]
Fix error in compound assignment to keyed load by making platform-independent full compiler code platform dependent, add test of compound assignments.
Review URL: http://codereview.chromium.org/646009

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

14 years agoKill some unused code.
mikhail.naganov@gmail.com [Thu, 18 Feb 2010 12:47:17 +0000 (12:47 +0000)]
Kill some unused code.

It doesn't mean I'm participating in some fixit, just spotted some
code which doesn't have usages and decided to remove it.

Review URL: http://codereview.chromium.org/646007

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

14 years agoChange KeyedLoadIC interface on ia32 to take receiver and name in registers.
whesse@chromium.org [Thu, 18 Feb 2010 10:09:54 +0000 (10:09 +0000)]
Change KeyedLoadIC interface on ia32 to take receiver and name in registers.
Review URL: http://codereview.chromium.org/601080

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

14 years agoFix issues with commit r3839
sgjesse@chromium.org [Thu, 18 Feb 2010 09:41:47 +0000 (09:41 +0000)]
Fix issues with commit r3839

Fix broken condition.
Fixe some style issues.
Re-enabel part of a test which was turned off.

TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/647007

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

14 years agoRefactor the check for generating inline constructors
sgjesse@chromium.org [Thu, 18 Feb 2010 09:07:03 +0000 (09:07 +0000)]
Refactor the check for generating inline constructors

Moved all the logic to a function on SharedFunctionInfo (including the flag check) to make things more readable.

Changed the check for setter to do a lookup for a named setter for each of the properties assigned in the constructor.

Added tests using accessors and interseptors set through the API.

Added fast case objects to the mjsunit test.

TEST=test/mjsunit/setter-on-constructor-prototype.js
TEST=test/cctest/test-api/SetterOnConstructorPrototype
TEST=test/cctest/test-api/InterceptorOnConstructorPrototype
Review URL: http://codereview.chromium.org/619006

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

14 years agoFix lint errors
peter.rybin@gmail.com [Wed, 17 Feb 2010 20:57:05 +0000 (20:57 +0000)]
Fix lint errors

Review URL: http://codereview.chromium.org/626002

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

14 years agoAdd central bridge for liveedit support
peter.rybin@gmail.com [Wed, 17 Feb 2010 20:37:08 +0000 (20:37 +0000)]
Add central bridge for liveedit support

Review URL: http://codereview.chromium.org/607004

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

14 years agoRemove a generated mov and jmp.
kmillikin@chromium.org [Wed, 17 Feb 2010 14:18:47 +0000 (14:18 +0000)]
Remove a generated mov and jmp.

Remove a move and jump from the fast-path code in the speculative
backend. Ultimately, this code belongs to the bailout and not the
fast path.

Review URL: http://codereview.chromium.org/601094

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

14 years agoImplement tagging of profiler log event blocks.
mikhail.naganov@gmail.com [Wed, 17 Feb 2010 13:23:46 +0000 (13:23 +0000)]
Implement tagging of profiler log event blocks.

This change allows to associate integer tags with blocks of profiler
log events, and repeat calls to 'ResumeProfiler' / 'PauseProfiler' in
order to establsh nested (not necessary properly nested) blocks. By
supporting this, we will be able to match WebInspector's CPU profiler
abilities in DevTools.

I also refactored some testing code.

Review URL: http://codereview.chromium.org/619004

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

14 years agoRemove obsolete bug TODO
whesse@chromium.org [Wed, 17 Feb 2010 13:16:53 +0000 (13:16 +0000)]
Remove obsolete bug TODO
Review URL: http://codereview.chromium.org/618006

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

14 years agoAdding checks for the cases when array grows too big.
antonm@chromium.org [Wed, 17 Feb 2010 13:04:30 +0000 (13:04 +0000)]
Adding checks for the cases when array grows too big.

Review URL: http://codereview.chromium.org/601092

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

14 years agoRemove duplicate function from runtime.
sgjesse@chromium.org [Wed, 17 Feb 2010 11:26:00 +0000 (11:26 +0000)]
Remove duplicate function from runtime.
Review URL: http://codereview.chromium.org/620003

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

14 years agoIntroduce Array.splice builtin.
antonm@chromium.org [Wed, 17 Feb 2010 10:54:49 +0000 (10:54 +0000)]
Introduce Array.splice builtin.

Review URL: http://codereview.chromium.org/618002

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

14 years agoRenaming test/mjsunit/array-splice.js to test/mjsunit/array-functions-prototype-misc.js.
antonm@chromium.org [Wed, 17 Feb 2010 10:48:29 +0000 (10:48 +0000)]
Renaming test/mjsunit/array-splice.js to test/mjsunit/array-functions-prototype-misc.js.

The test array-splice.js following array-shift, array-slice etc would be added in
next commit.

Review URL: http://codereview.chromium.org/618005

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

14 years agoMark two tests as part of the threading tests.
sgjesse@chromium.org [Wed, 17 Feb 2010 10:12:43 +0000 (10:12 +0000)]
Mark two tests as part of the threading tests.
Review URL: http://codereview.chromium.org/608027

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

14 years agoFix stack corruption when calling non-function.
kmillikin@chromium.org [Wed, 17 Feb 2010 08:26:50 +0000 (08:26 +0000)]
Fix stack corruption when calling non-function.

Fix for issue 603.

Revision r3484 removed the property name from the call stack for
call ICs.  When a non-function was called via a call IC and
Function.prototype.call, an extra value was left on the stack that the
caller could not know to clean up.

Fix is to change the JS builtin used for calling non-functions.  It
now gets the callee as receiver, rather than iterating stack frames
and finding it on the expression stack of its JS caller.

Review URL: http://codereview.chromium.org/604064

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

14 years agoAdd class name into FunctionTemplateInfo debug printing.
antonm@chromium.org [Wed, 17 Feb 2010 07:14:43 +0000 (07:14 +0000)]
Add class name into FunctionTemplateInfo debug printing.

Review URL: http://codereview.chromium.org/608015

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

14 years agoNormalize the object before updating getter/setter info.
antonm@chromium.org [Wed, 17 Feb 2010 06:53:19 +0000 (06:53 +0000)]
Normalize the object before updating getter/setter info.

BUG=612

Review URL: http://codereview.chromium.org/608014

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

14 years agoFix construction of simple objects with setters on prototype
sgjesse@chromium.org [Wed, 17 Feb 2010 06:28:33 +0000 (06:28 +0000)]
Fix construction of simple objects with setters on prototype

Simple objects which are constructed without calling the actual constructor function did not take setters defined on prototype chain of the new object into account.

Constructing objects this way is now not done if there are setters involved on the prototype chain of the new object.

This only fixes the case where the setter is found when the first object from a constructor is created. If the prototype chain is changed new objects will on take any change to setters into account.

TEST=test/mjsunit/setter-on-constructor-prototype.js
Review URL: http://codereview.chromium.org/606062

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

14 years agoDon't externalize fresh strings.
vitalyr@chromium.org [Tue, 16 Feb 2010 18:56:07 +0000 (18:56 +0000)]
Don't externalize fresh strings.

With the current API the embedder has to extrenalize a string each
time a string is encountered to avoid the cost of repeated character
copying/conversion. The issue here is that the externalization cost
itself is non-negligible (both in time and space) and should not be
paid for a rarely used string. This change is an attempt to predict a
string's usage frequency based on its freshness. A string is
considered fresh if it was recently allocated in the new space.

Review URL: http://codereview.chromium.org/608006

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

14 years agoFix the build after previous commit.
mikhail.naganov@gmail.com [Tue, 16 Feb 2010 15:29:35 +0000 (15:29 +0000)]
Fix the build after previous commit.

TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/605030

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

14 years agoEnable passing of script data via script creation methods.
mikhail.naganov@gmail.com [Tue, 16 Feb 2010 15:15:31 +0000 (15:15 +0000)]
Enable passing of script data via script creation methods.

Patch by Andrey Kosyakov <caseq@chromium.org>
Original issue http://codereview.chromium.org/606053

TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/608013

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

14 years agoMake sure that the inline_new flag guards all the optimizations for
ager@chromium.org [Tue, 16 Feb 2010 15:14:34 +0000 (15:14 +0000)]
Make sure that the inline_new flag guards all the optimizations for
constructors that only contain simple this assignments.

Make sure that constructors with declarations are not treated as
constructors with only simple this property assignments.

Review URL: http://codereview.chromium.org/601081

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

14 years agoPort keyed interceptor stubs to ARM and x64.
antonm@chromium.org [Tue, 16 Feb 2010 14:13:21 +0000 (14:13 +0000)]
Port keyed interceptor stubs to ARM and x64.

Review URL: http://codereview.chromium.org/600123

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

14 years agoPass the complete number type information into the GenericBinaryOpStub.
fschneider@chromium.org [Tue, 16 Feb 2010 13:03:16 +0000 (13:03 +0000)]
Pass the complete number type information into the GenericBinaryOpStub.

Currently we only pass a boolean parameter indicating whether
the input operands to the GenericBinaryOpStub are guaranteed
to be numbers or not.

Instead we pass the complete number type as a parameters. This
allows to use more precise type information for code generation
in the stub.

Also make the computation of the result type more precise and correct on both ia32 and x64.

Review URL: http://codereview.chromium.org/593110

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

14 years agoFix regression in cctest/test-log/EquivalenceOfLoggingAndTraversal
mikhail.naganov@gmail.com [Tue, 16 Feb 2010 13:01:05 +0000 (13:01 +0000)]
Fix regression in cctest/test-log/EquivalenceOfLoggingAndTraversal

TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/600136

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

14 years agoIntroduce builtin for Array.slice function.
antonm@chromium.org [Tue, 16 Feb 2010 12:14:23 +0000 (12:14 +0000)]
Introduce builtin for Array.slice function.

Review URL: http://codereview.chromium.org/604059

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

14 years agoUse binary search in GetScriptLineNumber.
mikhail.naganov@gmail.com [Tue, 16 Feb 2010 12:08:10 +0000 (12:08 +0000)]
Use binary search in GetScriptLineNumber.

Patch by Ilya Tikhonovsky <loislo@chromium.org>
Original issue http://codereview.chromium.org/593108

TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/608012

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

14 years agoLand thumb2 assembler update.
ager@chromium.org [Tue, 16 Feb 2010 11:40:56 +0000 (11:40 +0000)]
Land thumb2 assembler update.

Review URL: http://codereview.chromium.org/596065

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

14 years agoFix inline NumberToString
sgjesse@chromium.org [Tue, 16 Feb 2010 11:16:10 +0000 (11:16 +0000)]
Fix inline NumberToString

Glitch in pre-commit cleanup.

TBR=ager@chromium.orgZ
Review URL: http://codereview.chromium.org/600134

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

14 years agoPort arguments object allocation in generated code to ARM and x64.
ager@chromium.org [Tue, 16 Feb 2010 10:50:56 +0000 (10:50 +0000)]
Port arguments object allocation in generated code to ARM and x64.

BUG=v8:611
Review URL: http://codereview.chromium.org/605024

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

14 years agoObject.getOwnPropertyNames should return string names for indexed properties
yurys@chromium.org [Tue, 16 Feb 2010 10:08:39 +0000 (10:08 +0000)]
Object.getOwnPropertyNames should return string names for indexed properties

Land original change by pfeldman: http://codereview.chromium.org/596117
Review URL: http://codereview.chromium.org/596124

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

14 years agoInline NumberToString
sgjesse@chromium.org [Tue, 16 Feb 2010 09:41:11 +0000 (09:41 +0000)]
Inline NumberToString

NumberToString in runtime JavaScript is inlined through a call to a stub. Currently the stub only checks the number string cache and only if the number is a smi. Code is shared with the inlining of number string cache lookup when adding a smi to a string.
Review URL: http://codereview.chromium.org/604062

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

14 years agoRemove caching of ToBoolean on the global context. This was used for
ager@chromium.org [Tue, 16 Feb 2010 09:24:14 +0000 (09:24 +0000)]
Remove caching of ToBoolean on the global context.  This was used for
API operations but the API C++ code no longer performs a call to the
JavaScript code for ToBoolean.

Review URL: http://codereview.chromium.org/607009

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

14 years agoRemove printf committed by mistake
kmillikin@chromium.org [Tue, 16 Feb 2010 07:54:28 +0000 (07:54 +0000)]
Remove printf committed by mistake

Review URL: http://codereview.chromium.org/600126

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

14 years agoFix arm build.
fschneider@chromium.org [Mon, 15 Feb 2010 14:47:03 +0000 (14:47 +0000)]
Fix arm build.

Change the function declarations in the arm virtual frame header
file to match the other platform.

TBR=kmillikin@chromium.org
Review URL: http://codereview.chromium.org/608007

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

14 years agoIntroduce number type information in the virtual frame.
fschneider@chromium.org [Mon, 15 Feb 2010 14:24:38 +0000 (14:24 +0000)]
Introduce number type information in the virtual frame.

Each frame element gets a new attribute with number type information. A frame element can be:

- smi
- heap number
- number (i.e. either of the above)
- or something else.

The type information is propagated along with all virtual frame operations.
Results popped from the frame carry the number information with them.

Two optimizations in the code generator make use of the new
information:
- GenericBinaryOpSyub omits map checks if input operands are numbers.
- Boolean conversion for numbers: Emit inline code for converting a number (smi or heap number) to boolean. Do not emit call to ToBoolean stub in this case.

Review URL: http://codereview.chromium.org/545007

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

14 years agoAdd GetScriptOrigin and GetScriptLineNumber functions for Timeline panel.
mikhail.naganov@gmail.com [Mon, 15 Feb 2010 14:19:15 +0000 (14:19 +0000)]
Add GetScriptOrigin and GetScriptLineNumber functions for Timeline panel.

Patch by Ilya Tikhonovsky <loislo@chromium.org>.
Original issue: http://codereview.chromium.org/565007

TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/594058

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

14 years agoIntroduce builtin for Array.unshift function.
antonm@chromium.org [Mon, 15 Feb 2010 13:25:06 +0000 (13:25 +0000)]
Introduce builtin for Array.unshift function.

Review URL: http://codereview.chromium.org/600124

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

14 years agoChange the interface of CallStubCompiler::CompileCallInterceptor.
kmillikin@chromium.org [Mon, 15 Feb 2010 13:20:49 +0000 (13:20 +0000)]
Change the interface of CallStubCompiler::CompileCallInterceptor.

Move responsibility for a typecast into the caller so that it can be
locally verified to succeed.

Review URL: http://codereview.chromium.org/594055

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

14 years agoRefactoring various pieces of post interceptor caching.
antonm@chromium.org [Mon, 15 Feb 2010 12:32:27 +0000 (12:32 +0000)]
Refactoring various pieces of post interceptor caching.

Review URL: http://codereview.chromium.org/596096

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

14 years agoChange CallIC interface on ARM. Remove name from the stack, and pass it in register r2.
whesse@chromium.org [Mon, 15 Feb 2010 12:26:07 +0000 (12:26 +0000)]
Change CallIC interface on ARM.  Remove name from the stack, and pass it in register r2.
Review URL: http://codereview.chromium.org/598065

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

14 years agoElaborating test for Array.shift a bit.
antonm@chromium.org [Mon, 15 Feb 2010 12:01:46 +0000 (12:01 +0000)]
Elaborating test for Array.shift a bit.

Review URL: http://codereview.chromium.org/596116

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

14 years agoSimplify compilation of CallIC interceptor stub.
whesse@chromium.org [Mon, 15 Feb 2010 11:52:18 +0000 (11:52 +0000)]
Simplify compilation of CallIC interceptor stub.
Review URL: http://codereview.chromium.org/604054

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

14 years agoIntroduce builtin for Array.shift function.
antonm@chromium.org [Mon, 15 Feb 2010 09:17:38 +0000 (09:17 +0000)]
Introduce builtin for Array.shift function.

Review URL: http://codereview.chromium.org/606017

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

14 years agoLand 598061(Process //@ scriptURL=url comment for scripts that don't have name set)
yurys@chromium.org [Fri, 12 Feb 2010 17:17:13 +0000 (17:17 +0000)]
Land 598061(Process //@ scriptURL=url comment for scripts that don't have name set)

Review URL: http://codereview.chromium.org/596088

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

14 years agoChange interface to CodeGenerator::LoadFromSlot.
kmillikin@chromium.org [Fri, 12 Feb 2010 16:39:07 +0000 (16:39 +0000)]
Change interface to CodeGenerator::LoadFromSlot.

Change the interface to LoadFromSlot, LoadFromSlotCheckForArguments,
and LoadFromGlobalSlotCheckExtensions in the ia32 classic code
generator.

Review URL: http://codereview.chromium.org/606015

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

14 years agoFix CallIC stub for CallInterceptor on ARM
whesse@chromium.org [Fri, 12 Feb 2010 16:01:38 +0000 (16:01 +0000)]
Fix CallIC stub for CallInterceptor on ARM
Review URL: http://codereview.chromium.org/593080

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

14 years agoCompile very thin code to access objects on which indexed interceptor is set.
antonm@chromium.org [Fri, 12 Feb 2010 14:21:18 +0000 (14:21 +0000)]
Compile very thin code to access objects on which indexed interceptor is set.

Review URL: http://codereview.chromium.org/603028

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

14 years agoFix array allocation in generated code on x64
sgjesse@chromium.org [Fri, 12 Feb 2010 13:49:57 +0000 (13:49 +0000)]
Fix array allocation in generated code on x64

The porting of array allocation in generated code from ia32 to x64 wrongly assumed that a smi contained the actual number times 2. Removed the constant times_half_pointer_size, as it will probably not be needed.
Review URL: http://codereview.chromium.org/596084

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

14 years agoAdded optimization for div/mod by constant power of 2.
lrn@chromium.org [Fri, 12 Feb 2010 13:37:10 +0000 (13:37 +0000)]
Added optimization for div/mod by constant power of 2.

Review URL: http://codereview.chromium.org/597059

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

14 years agoOptimize string plus smi
sgjesse@chromium.org [Fri, 12 Feb 2010 11:55:04 +0000 (11:55 +0000)]
Optimize string plus smi

When adding a string with a smi value the number string cache is checked in generated code. If the there is a string value in the number string cache the resulting string is produced in generated code.
Review URL: http://codereview.chromium.org/596082

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

14 years agoProbe the symbol table for two character strings in native code
sgjesse@chromium.org [Fri, 12 Feb 2010 11:43:00 +0000 (11:43 +0000)]
Probe the symbol table for two character strings in native code

All two character string results from adding two strings and from sub string used to be handled in the runtime system as a lookup in the symbol table was done before allocating a new string. The native code for string add and sub string now probes the symbol cache for two character strings to avoid the runtime call. If the result string is not found in the symbol table within a fixed number of probes a new string is just allocated. Newly allocated two character strings are not added to the symbol table immediately.
Review URL: http://codereview.chromium.org/598062

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

14 years agoChange LoadIC interface on ia32 to take arguments in registers.
whesse@chromium.org [Fri, 12 Feb 2010 10:32:24 +0000 (10:32 +0000)]
Change LoadIC interface on ia32 to take arguments in registers.
Review URL: http://codereview.chromium.org/573009

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

14 years agoChange the interface of CodeGenerator::InstantiateBoilerplate.
kmillikin@chromium.org [Fri, 12 Feb 2010 10:28:40 +0000 (10:28 +0000)]
Change the interface of CodeGenerator::InstantiateBoilerplate.

Begin changing the interface of the virtual-frame-based code generator
to avoid pushing short-lived temporaries on the frame.

Review URL: http://codereview.chromium.org/600097

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

14 years agoAdd last use data flow information to the fast code generator.
fschneider@chromium.org [Fri, 12 Feb 2010 10:16:30 +0000 (10:16 +0000)]
Add last use data flow information to the fast code generator.

This change add simple local live variable information to
the fast code generator.  It supports only AST nodes that
are accepted by the syntax checker.

Each variable use points to a variable definition structure
which contains the last use of the definition.

To determine whether a variable is live after a certain point
we can check whether its last use occurs later in the evaluation
order defined by the AST labeling number.

The new information is currently only printed out together with
the IR and not yet used for code generation.

Review URL: http://codereview.chromium.org/603004

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

14 years agoPort change in CallIC interface to x64 platform. Name of called function is now...
whesse@chromium.org [Fri, 12 Feb 2010 08:53:13 +0000 (08:53 +0000)]
Port change in CallIC interface to x64 platform.  Name of called function is now passed in rcx.
Review URL: http://codereview.chromium.org/596036

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

14 years agoAdd a regression test for chromium issue 35344.
kmillikin@chromium.org [Fri, 12 Feb 2010 08:10:25 +0000 (08:10 +0000)]
Add a regression test for chromium issue 35344.

Review URL: http://codereview.chromium.org/600069

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

14 years agoPort FastCloneShallowArrayStub to ARM and x64.
ager@chromium.org [Thu, 11 Feb 2010 12:28:49 +0000 (12:28 +0000)]
Port FastCloneShallowArrayStub to ARM and x64.

Review URL: http://codereview.chromium.org/597022

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

14 years agoFix problem with GenericBinaryOperationStub::GenerateCall for a Smi
ager@chromium.org [Thu, 11 Feb 2010 12:26:08 +0000 (12:26 +0000)]
Fix problem with GenericBinaryOperationStub::GenerateCall for a Smi
left operand.  For non-commutative operations the right operand could
be overwritten with the Smi left operand.

We need better testing of all of these cases.  We will add more test
cases as a separate commit.
Review URL: http://codereview.chromium.org/598059

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

14 years agoSimple type tracking in the fast code generator.
kmillikin@chromium.org [Thu, 11 Feb 2010 08:41:19 +0000 (08:41 +0000)]
Simple type tracking in the fast code generator.

Initial implementation of ad hoc must-be-smi tracking in the fast code
generator.  Type information is used to avoid the write barrier for
smi property stores and to avoid the smi check for the inputs/output
of bitwise OR.

Review URL: http://codereview.chromium.org/597021

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

14 years agoAlways load the JavaScript builtins code entry from the JavaScript
ager@chromium.org [Thu, 11 Feb 2010 08:05:33 +0000 (08:05 +0000)]
Always load the JavaScript builtins code entry from the JavaScript
function instead of baking in the address of the first one that we see
in code.

This removes the need for fixups processing and makes the stubs safe
when there is no natives cache and therefore multiple versions of the
builtin functions.

Review URL: http://codereview.chromium.org/594009

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

14 years agoReport code stubs to OProfile.
mikhail.naganov@gmail.com [Wed, 10 Feb 2010 17:50:16 +0000 (17:50 +0000)]
Report code stubs to OProfile.

Patch from Dineel D Sule <dsule@codeaurora.org>.
Original issue: http://codereview.chromium.org/600019

TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/593038

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

14 years agoChange StoreIC interface on ARM platform
whesse@chromium.org [Wed, 10 Feb 2010 15:06:08 +0000 (15:06 +0000)]
Change StoreIC interface on ARM platform
Review URL: http://codereview.chromium.org/554152

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

14 years agoRefactor prototype setting code and expose SetPrototype to public V8 API.
antonm@chromium.org [Wed, 10 Feb 2010 14:44:15 +0000 (14:44 +0000)]
Refactor prototype setting code and expose SetPrototype to public V8 API.

Review URL: http://codereview.chromium.org/598020

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

14 years agoHarden global variable accesses in the fast code generator.
kmillikin@chromium.org [Wed, 10 Feb 2010 13:46:15 +0000 (13:46 +0000)]
Harden global variable accesses in the fast code generator.

Explicitly check that global variables do not have accessors or
interceptors in the fast code generator syntax checker.

Review URL: http://codereview.chromium.org/595022

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

14 years agoMaking lint happy.
antonm@chromium.org [Wed, 10 Feb 2010 11:48:53 +0000 (11:48 +0000)]
Making lint happy.

Review URL: http://codereview.chromium.org/593014

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

14 years agoRestrict the syntax that we aggressively optimize.
kmillikin@chromium.org [Wed, 10 Feb 2010 09:18:55 +0000 (09:18 +0000)]
Restrict the syntax that we aggressively optimize.

Do not use the speculative compiler for functions with other than one
statement in the body, and do not use it if subexpressions can have
side effects.  Bailing out to the beginning of the full code is not
sound if side effects have already occurred.

Add tests that would fail without the restrictions.

Review URL: http://codereview.chromium.org/598016

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

14 years agoia32: Fuse map and type checks in call ICs for API functions.
vitalyr@chromium.org [Tue, 9 Feb 2010 16:14:14 +0000 (16:14 +0000)]
ia32: Fuse map and type checks in call ICs for API functions.

This uses the fact that if a map stayed the same then the object
still passes the type check. A new builtin is added to handle the
API call in this case.

Review URL: http://codereview.chromium.org/573003

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

14 years agoEliminate unused function KeyedStoreIC::GenerateExtendStorage, and unused parameter...
whesse@chromium.org [Tue, 9 Feb 2010 15:18:37 +0000 (15:18 +0000)]
Eliminate unused function KeyedStoreIC::GenerateExtendStorage, and unused parameter from StubCompiler::GenerateStoreField.
Review URL: http://codereview.chromium.org/575022

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

14 years agoFix error introduced in version 3820. Add optimization suggested by the error.
whesse@chromium.org [Tue, 9 Feb 2010 14:19:23 +0000 (14:19 +0000)]
Fix error introduced in version 3820.  Add optimization suggested by the error.
Review URL: http://codereview.chromium.org/597006

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

14 years agoInitial implementation of fast path operation for bitwise OR.
kmillikin@chromium.org [Tue, 9 Feb 2010 13:44:43 +0000 (13:44 +0000)]
Initial implementation of fast path operation for bitwise OR.

Support a binary operation (bitwise OR) so long as it's not nested in
the left subexpression.  This ensures that the expression stack never
has height greater than two and so can be kept fully in registers.

The bounded expression stack height and the absence of any side
effects on the fast path allows us to still bailout out to the very
beginning of the function if any of our fast-path checks fail.

Review URL: http://codereview.chromium.org/594008

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