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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
lrn@chromium.org [Tue, 9 Feb 2010 13:10:32 +0000 (13:10 +0000)]
Ported ia32 optimization of revision 3487 to x64.
Review URL: http://codereview.chromium.org/597005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3821
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 9 Feb 2010 13:06:37 +0000 (13:06 +0000)]
Change GenerateLoadStringLength to have two scratch registers on all platforms. This is needed so that the LoadIC can pass the receiver in a register, and not have it overwritten, and also simplifies the code.
Review URL: http://codereview.chromium.org/596011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3820
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 9 Feb 2010 12:15:34 +0000 (12:15 +0000)]
Changed fuzzer to randomly remove half of the arguments when running
on functions that takes five or more arguments. Original version runs
for a long time when there is 5 arguments in a runtime function (45+
seconds). The fuzzer can be run with all arguments on all functions
regardless of the number of arguments by setting
RUN_WITH_ALL_ARGUMENT_ENTRIES to true in fuzz-natives.js
Review URL: http://codereview.chromium.org/598011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3819
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 9 Feb 2010 10:18:51 +0000 (10:18 +0000)]
Added helper functions for fixed register allocation.
Added helper functions to the fast code generator for temporary, ad hoc
fixed register allocation. Also inlined some helper functions that had only
one call site to simplify the code generator API for now.
Review URL: http://codereview.chromium.org/586002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3818
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 8 Feb 2010 16:08:26 +0000 (16:08 +0000)]
Eliminate *IC::Generate() function on all platforms.
Review URL: http://codereview.chromium.org/583008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3817
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 8 Feb 2010 14:33:34 +0000 (14:33 +0000)]
Eliminate unnecessary depencencies in some header files.
1. Eliminate unnecessary include of register-allocator-inl.h in frame-element.h.
2. Move functions register-allocator.h to the -inl.h file if they use other inline functions.
3. Add missing includes that resulted from the above changes.
Review URL: http://codereview.chromium.org/585009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3816
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Mon, 8 Feb 2010 14:00:50 +0000 (14:00 +0000)]
Optimize concat for one argument (two if you count 'this').
Review URL: http://codereview.chromium.org/584006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3815
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
serya@chromium.org [Mon, 8 Feb 2010 13:44:49 +0000 (13:44 +0000)]
Review URL: http://codereview.chromium.org/561049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3814
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Mon, 8 Feb 2010 08:55:01 +0000 (08:55 +0000)]
Fix tests after r3811.
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/574027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3813
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 8 Feb 2010 08:54:27 +0000 (08:54 +0000)]
Move class declaration of Comment from codegen-inl.h to codegen.h
-inl.h files should only contains small inline functions and
no class declarations. Implementation moved to codegen.cc since
it's not a performance critical class (only used in DEBUG mode).
Review URL: http://codereview.chromium.org/585004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3812
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Mon, 8 Feb 2010 08:15:18 +0000 (08:15 +0000)]
Profiler tick processor: exploit d8's readline to avoid reading
entire file prior to parsing it. This allows processing of huge
log files (over 200 MB.)
Review URL: http://codereview.chromium.org/574015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3811
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Fri, 5 Feb 2010 13:57:18 +0000 (13:57 +0000)]
Fast compiler: Load globals variables directly from property cells.
This is a first step towards loading globals directly from property cells instead
of going through a load IC.
This change supports only properties with the DontDelete attribute since
we are only able to bailout into the generic code generated by the secondary
code generator the beginning of a function. The resulting fast-case code is
specialized for a specific context. When invoked with a different global object,
it will always bailout to the secondary code.
When loading a property that does not exist at compile-time or a property
that is deleteable we still generate the generic load IC.
Review URL: http://codereview.chromium.org/565034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3808
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 5 Feb 2010 13:07:00 +0000 (13:07 +0000)]
Fix test failures in debug mode w/snapshots. It turns out that not
all stubs have valid major_keys, and this is OK. So I've added
a check to avoid termination in debug mode.
Review URL: http://codereview.chromium.org/572034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3807
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 5 Feb 2010 12:00:42 +0000 (12:00 +0000)]
ARM native string addition.
Review URL: http://codereview.chromium.org/571005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3806
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 5 Feb 2010 08:46:41 +0000 (08:46 +0000)]
ARMv7 ubfx support
Patch from Kun Zhang <zhangk@codeaurora.org>, see http://codereview.chromium.org/569015.
Review URL: http://codereview.chromium.org/573027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3804
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Fri, 5 Feb 2010 07:19:09 +0000 (07:19 +0000)]
Added checked convert of object to DefineOrRedefineAccessorProperty.
Review URL: http://codereview.chromium.org/570040
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3803
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Thu, 4 Feb 2010 21:34:03 +0000 (21:34 +0000)]
Fix issue 597: builtins and stubs are missing in profiler log when using snapshots.
After this fix, profiles of non-snapshotted VMs are now equivalent to
profiles of snapshotted VMs (having that --log-snapshot-positions is used,
and mksnapshot's log is given to the tick processor script.)
BUG=597
Review URL: http://codereview.chromium.org/574005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3802
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 4 Feb 2010 21:32:02 +0000 (21:32 +0000)]
Fixed random style violations.
Review URL: http://codereview.chromium.org/574009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3801
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 4 Feb 2010 20:43:59 +0000 (20:43 +0000)]
Fixed another presubmit error
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/572011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3800
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 4 Feb 2010 20:36:58 +0000 (20:36 +0000)]
MIPS port initial commit
This is the first step in the MIPS port of V8. It adds assembler, disassembler and simulator for the MIPS32 architecture.
Contains stubbed out implementation of all the compiler/code generator infrastructure to make it all build.
Patch by Alexandre Rames from Sigma Designs Inc.
This is the landing of http://codereview.chromium.org/543161.
Review URL: http://codereview.chromium.org/561072
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3799
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 4 Feb 2010 19:43:56 +0000 (19:43 +0000)]
Added extra tests to the DefineOrRedefineAccessorProperty and
DefineOrRedefineDataProperty to avoid invalid input.
Added tests to object-define-property.js to test that it does not crash
on invalid input.
Review URL: http://codereview.chromium.org/572005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3798
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Thu, 4 Feb 2010 15:35:42 +0000 (15:35 +0000)]
Apply r3795 to bleeding_edge.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/575004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3797
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 4 Feb 2010 15:21:05 +0000 (15:21 +0000)]
Fix presubmit errors.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/570024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3796
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 4 Feb 2010 11:28:03 +0000 (11:28 +0000)]
Added IsProperty() check to result in DefineOrRedefineAccessor - if no check
this causes the debug check to fails since type() asserts that the
lookup_type != NOT_FOUND. This does not change any functionality since we
explicitly checked if it was one of the three types that we need to delete.
Also changed defineProperties in v8natives to actually return the object
being defined (as specified by spec)
Review URL: http://codereview.chromium.org/572003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3794
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 4 Feb 2010 09:11:43 +0000 (09:11 +0000)]
ARM: Implement native substring copying.
Review URL: http://codereview.chromium.org/552186
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3793
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 3 Feb 2010 20:39:34 +0000 (20:39 +0000)]
Revert last change (temporarily using only the full compiler).
TBR=ager
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3791
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 3 Feb 2010 20:31:49 +0000 (20:31 +0000)]
Activate full compiler. This is a test which will be reverted.
TBR=ager
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3790
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 3 Feb 2010 16:12:55 +0000 (16:12 +0000)]
Incorporate the arguments to the code generator constructors and their
MakeCode functions in the CompilationInfo structure. This makes it
easier to add new arguments and makes all arguments uniformly
available to the various backends.
Review URL: http://codereview.chromium.org/566008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3789
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 3 Feb 2010 13:29:42 +0000 (13:29 +0000)]
Bad newline snuck in before commit.
Review URL: http://codereview.chromium.org/560032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3788
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 3 Feb 2010 13:17:39 +0000 (13:17 +0000)]
Updated JSON.stringify to newest version of ES5.
Review URL: http://codereview.chromium.org/562034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3787
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Wed, 3 Feb 2010 13:10:03 +0000 (13:10 +0000)]
Added Object.defineProperty + needed internal functionality:
DefineOwnProperty (changed to allow for redefinition of existing property)
SameValue
Extra info on propertydescriptor
GetProperty
HasProperty
Currently the DefineOrRedefineAccessorProperty deletes the existing
property on the object if it is a dataproperty (FIELD or NORMAL) and
adds a new one. This can potentially be optimized.
Review URL: http://codereview.chromium.org/555149
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3786
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
leonclarke@gmail.com [Wed, 3 Feb 2010 11:54:57 +0000 (11:54 +0000)]
DebugBreak shouldn't be used when ENABLE_DEBUGGER_SUPPORT isn't defined.
Review URL: http://codereview.chromium.org/568017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3784
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00