rossberg@chromium.org
e645597aa7
Implement function proxies (except for their use as constructors).
...
Introduce new %Apply native.
Extend Execution::Call to optionally handle receiver rewriting (needed for %Apply).
Fix Function.prototype.bind for functions that have .apply modified.
R=kmillikin@chromium.org
BUG=v8:1543
TEST=
Review URL: http://codereview.chromium.org/7623011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-13 11:42:57 +00:00
lrn@chromium.org
ffffa716c5
Lock the prototype of internal classes.
...
Prototypes and their properties and methods are locked down to prevent fiddling with their operation, even if the build-in object leaks.
Made some built-in functions only work during bootstrapping.
Review URL: http://codereview.chromium.org/7799027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-05 07:30:35 +00:00
lrn@chromium.org
5c32722581
Make built-in functions not rely on callback functions .call method.
...
In builtin code, we can't rely on Function.prototype.call being unmolested.
Review URL: http://codereview.chromium.org/7776008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9053 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-29 11:44:54 +00:00
lrn@chromium.org
cd3588d582
Make (some) functions called from builtin functions use the callback's global as receiver.
...
Changes GetGlobalReceiver() to GetDefaultReceiver(func) that returns undefined
for strict and native functions, and the function's context's global proxy
for "normal" functions.
BUG=v8:1547
TEST=cctest/api-test/ForeignFunctionReceiver
Review URL: http://codereview.chromium.org/7741042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-26 13:53:00 +00:00
mstarzinger@chromium.org
2a225a3717
Fixed bug in array filter and reduce functions.
...
R=danno@chromium.org
BUG=v8:1559
TEST=test262
Review URL: http://codereview.chromium.org/7368005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-15 11:07:18 +00:00
ager@chromium.org
0d8c343c90
Do not pass the global object as the receiver to strict-mode and
...
builtin replace and sort functions.
R=ricow@chromium.org
BUG=v8:1360
TEST=mjsunit/regress/regress-1360.js
Review URL: http://codereview.chromium.org/7283006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 12:29:19 +00:00
ager@chromium.org
626cdffaef
Fix Array.prototype.{reduce,reduceRight} to pass undefined as receiver for strict mode callbacks.
...
Propagate strict mode information from pre-parser to parser for lazily compiled functions.
R=lrn@chromium.org
BUG=v8:1436
TEST=mjsunit/regress/regress-1436.js
Review URL: http://codereview.chromium.org/7044054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8227 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-09 09:05:15 +00:00
ager@chromium.org
0c1702b199
Don't use SmartSlice just because the receiver is an array.
...
Only do so if the estimated number of elements is low compared to the
end position for the slice. This is similar to other heuristics used
for array operations that use the %GetElementKeys runtime function.
R=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/7111032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8184 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-06 13:28:44 +00:00
ricow@chromium.org
e0eb110130
Reapply 7763, including arm and x64 variants.
...
The only difference to revision 7763 is the implementation in the
builtins file for arm and x64, plus a move of Array.prototype.toString
and Array.prototype.toLocaleString from should throw on null or
undefined to the non generic test cases in the function-call test (due
to us not currently supporting generic cases with these to functions)
Review URL: http://codereview.chromium.org/6928007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7786 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-05 05:21:30 +00:00
ricow@chromium.org
4d890da191
Revert 7763, missing implementation on x64 and arm for call and apply with null or undefined.
...
Review URL: http://codereview.chromium.org/6913024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7764 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-03 13:45:19 +00:00
ricow@chromium.org
2b730c2bf6
Don't exchange null and undefined with the global object in function.prototype.{call, apply} for natives.
...
This makes us compatible with firefox in throwing an exception when
call is invoked on a builtin with null as the this argument.
Review URL: http://codereview.chromium.org/6902104
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7763 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-03 13:19:04 +00:00
lrn@chromium.org
f470cf2777
Handle join of sparse arrays with non-empty separator more efficiently.
...
BUG=v8:1028
Review URL: http://codereview.chromium.org/6902144
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7716 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-29 08:53:36 +00:00
lrn@chromium.org
f5839996fb
More cases of CallFunction that doesn't work correctly.
...
Review URL: http://codereview.chromium.org/6603015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7044 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 12:56:14 +00:00
lrn@chromium.org
30c0420b39
Undo change from .call to %_CallFunction.
...
The latter doesn't handle promotion of null/undefined to global object as
receiver for non-strict functions.
Review URL: http://codereview.chromium.org/6615013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7043 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 12:44:39 +00:00
lrn@chromium.org
4707d7ac08
Stop using plain Arrays internally in built-in functions.
...
In built-in code we use arrays for internal computations.
This makes it possible to affect the built-in code by putting getters
or setters on the Array prototype chain.
This adds a new internal Array constructor that creates Arrays with
a very simplistic prototype chain that doesn't include any publicly
visible objects. These Arrays shoudl ofcourse never leak outside the
builtins, since that would expose the prototype object.
The prototype object contains only the array functions that we use:
push, pop and join (and not even a toString, so it doesn't stringify
well).
Also change uses of .call to %_CallFunction.
BUG=1206
Review URL: http://codereview.chromium.org/6602081
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 11:49:03 +00:00
lrn@chromium.org
735dc96461
Fix bug 73940.
...
I think this actually turns the code in question into dead code, because the current definition of UseSparseVariant only allows arrays in DictionaryMode, and these never return encoded ranges from %GetArrayKeys. This is a subtle link between the definition of %GetArrayKeys and UseSparseVariant, so I would prefer to keep the code rather than having an invisible depeendency.
BUG=73940
Review URL: http://codereview.chromium.org/6596004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6946 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-25 11:30:22 +00:00
lrn@chromium.org
68f1c73a06
Fix array concat to follow the specification in the presence of element getters.
...
Also fix issue 1175 and 1177.
BUG=v8:1175
Review URL: http://codereview.chromium.org/6568007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 14:00:52 +00:00
antonm@chromium.org
186d832c79
Introduce new runtime function to make join with lower memory usage.
...
Do not use generic StringBuilderConcat which requires array passed
to keep both elements and separator (which roughly double size
of the array). That should be faster as well.
BUG=crbug.com/54580
Review URL: http://codereview.chromium.org/6520004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6777 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 17:25:12 +00:00
sandholm@chromium.org
f64976e62d
Improve ScanJsonNumber.
...
Review URL: http://codereview.chromium.org/6334106
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6658 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-07 08:57:06 +00:00
ager@chromium.org
471c0d2983
Avoid callbacks to user code during error formatting in a couple of
...
other situations.
Do not use overwritten Object.prototype.hasOwnProperty and
Array.prototype.pop. Do not use split and join in the error formatting
implementation. They are too big to control and their generality is
not needed.
Review URL: http://codereview.chromium.org/6287041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6552 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-01 12:31:16 +00:00
antonm@chromium.org
a38a8ffab0
ArraySplice builtin should return empty array and not alter receiver if invoked with no arguments.
...
Review URL: http://codereview.chromium.org/6357025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-31 14:54:53 +00:00
sandholm@chromium.org
c260e4f731
Simplify Join and speedup joining arrays of numbers.
...
Review URL: http://codereview.chromium.org/6173004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6243 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 11:44:54 +00:00
sandholm@chromium.org
6dd671d6c2
Make better use of the %_FastAsciiArrayJoin function.
...
Review URL: http://codereview.chromium.org/6100005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6235 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 08:00:48 +00:00
sandholm@chromium.org
ba4f9faec5
Aviod double checking IS_STRING when joining arrays.
...
Review URL: http://codereview.chromium.org/5977013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6226 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 13:21:34 +00:00
lrn@chromium.org
5741575327
Tweak quicksort loop to reduce number of compares slightly.
...
Review URL: http://codereview.chromium.org/6039002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 14:57:51 +00:00
lrn@chromium.org
9f1bcdf8ac
Change quicksort pivot from random to median-of-three.
...
Tweak quicksort bailout parameter to minimize time.
Review URL: http://codereview.chromium.org/5962003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6063 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 10:06:11 +00:00
sandholm@chromium.org
23c07cd413
Fix sputnik regression introduced in r5943.
...
Review URL: http://codereview.chromium.org/5516013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5944 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-08 09:52:48 +00:00
sandholm@chromium.org
b36e346a08
Use the PushIfAbsent function for the JSON stringify stack.
...
Optimize ConvertToString.
Review URL: http://codereview.chromium.org/5614004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-08 09:10:36 +00:00
sandholm@chromium.org
209eb1c219
Improved JSON stringify.
...
Review URL: http://codereview.chromium.org/5578004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5919 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-06 15:41:07 +00:00
whesse@chromium.org
1d11e32a01
Add a fast case to Array.join when all the elements and the separator are flat ascii strings.
...
Review URL: http://codereview.chromium.org/5122005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5860 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-19 09:25:46 +00:00
lrn@chromium.org
d1a674f7c1
Add sparse array handling to Array.protoype.indexOf/lastIndexOf.
...
Review URL: http://codereview.chromium.org/3132046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5432 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-09 12:57:32 +00:00
ager@chromium.org
d955b212b5
Follow Safari and Firefox in returning empty array from array splice
...
with no arguments.
Review URL: http://codereview.chromium.org/3277005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5375 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-30 18:08:50 +00:00
lrn@chromium.org
16a3419650
Convert this.length to uint32 in Array.prototype.[last]indexOf.
...
Review URL: http://codereview.chromium.org/3104033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5340 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 12:16:46 +00:00
ricow@chromium.org
faaf524445
Fixes bug in Array.prototype.lastIndexOf when called with null or undefined as fromIndex argument. (fixes issue 754).
...
Review URL: http://codereview.chromium.org/2840021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4950 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-25 09:28:38 +00:00
antonm@chromium.org
55e32d2f3b
Introduce faster swapping primitives.
...
Keyed store stub sits high in sorting profiles.
Swapping allows to save us additional type checks as we could both read and
write elmenets (on fast path) without them.
Review URL: http://codereview.chromium.org/1709008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4551 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-29 15:14:39 +00:00
antonm@chromium.org
ad9312cdaa
Unify treatment of sorting with and without custom comparator.
...
Review URL: http://codereview.chromium.org/1706010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-26 14:34:48 +00:00
antonm@chromium.org
cdbbd7fa49
Do not preconvert to string as it apparently has minimal performance benefit.
...
Review URL: http://codereview.chromium.org/1525040
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-20 11:29:32 +00:00
antonm@chromium.org
0c4bac296b
Reimplement InsertSort to use simple linear search.
...
And various minor cleanups.
Review URL: http://codereview.chromium.org/1611021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4392 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-12 15:12:30 +00:00
antonm@chromium.org
400b1be449
Faster invocation of custom comparator function.
...
Review URL: http://codereview.chromium.org/1623004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-12 07:05:24 +00:00
antonm@chromium.org
a4df380ffa
Early specialize sorting functions depending if there is a custom comparator or not.
...
Review URL: http://codereview.chromium.org/1513020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-07 13:13:06 +00:00
kmillikin@chromium.org
1cf0439ca7
Remove trailing regexp from .js files.
...
Removed trailing whitespace using regexp replace. No other changes.
Review URL: http://codereview.chromium.org/1559006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4314 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-30 07:15:23 +00:00
antonm@chromium.org
c2dc316138
Add Array.concat builtin for the most common case.
...
Review URL: http://codereview.chromium.org/954001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-15 10:52:38 +00:00
lrn@chromium.org
27c737bb73
Optimized Array.prototype.{lastIndexOf,indexOf} by special casing comparison to undefined.
...
Review URL: http://codereview.chromium.org/851008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-15 10:14:59 +00:00
antonm@chromium.org
dca7574e6e
Some cosmetic issues.
...
Review URL: http://codereview.chromium.org/903004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-12 18:27:31 +00:00
antonm@chromium.org
de070ccfa6
First take on custom call generators.
...
Review URL: http://codereview.chromium.org/669061
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4108 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-11 16:24:31 +00:00
antonm@chromium.org
d4cb1ba3c5
Faster moving FixedArray elements around.
...
Review URL: http://codereview.chromium.org/660245
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3987 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-01 15:33:30 +00:00
antonm@chromium.org
be21c71584
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
2010-02-17 10:54:49 +00:00
ricow@chromium.org
8cf3521acb
Removed check on element in case it is undefined in ArrayIndexOf - according to spec this is OK.
...
Review URL: http://codereview.chromium.org/545056
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3603 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-14 12:05:48 +00:00
ricow@chromium.org
19e49e1740
Enabled es5conform tests for new array methods and corrected errors that was discovered by enabling these.
...
Added new es5 methods:
GetOwnPropertyDescriptor
GetOwnProperty
FromPropertyDescriptor
Review URL: http://codereview.chromium.org/546032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-13 12:10:57 +00:00
kasperl@chromium.org
1fdbaa1d10
Improve performance of Array.prototype.join and String.prototype.substring
...
by tweaking the JavaScript implementation of these functions.
Review URL: http://codereview.chromium.org/519061
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-06 14:40:21 +00:00