ricow@chromium.org
8402db12c9
Change lazy compilation stub to a builtin.
...
This change changes the lazy compilation stub to a builtin and
eliminates the argc (argument count for the function for which to
create a lazy stub) parameter.
Review URL: http://codereview.chromium.org/3146008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 13:48:58 +00:00
kaznacheev@chromium.org
70d3296087
Reapplying r5174 (Avoid GC when compiling CallIC stubs).
...
I could not find a way to introduce simple yet useful assertions,
so I removed the assertions that broke tests.
The new patch just fixes the actual problem (GC triggered while raw pointers
are held in LookupResult).
Review URL: http://codereview.chromium.org/3030049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5196 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-06 08:49:59 +00:00
vegorov@chromium.org
1920692d71
Revert r5174.
...
Review URL: http://codereview.chromium.org/2868108
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5177 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 11:19:43 +00:00
kaznacheev@chromium.org
5f78dc14c8
Avoid GC when compiling CallIC stubs.
...
In rare cases GC could be called from ComputeCallMiss function thus
breaking CallIC::LoadFunction.
Review URL: http://codereview.chromium.org/3047027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 08:37:12 +00:00
antonm@chromium.org
9d6fd08276
Port faster callbacks invocation to x64.
...
It's a port of http://code.google.com/p/v8/source/detail?r=3209 to x64 platform.
That allows invocation of callbacks without going into runtime.
Review URL: http://codereview.chromium.org/2801008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-28 09:36:53 +00:00
serya@chromium.org
1b9391be7a
Fix GenerateNegativeLookup to work with non-symbols as a dictionary key.
...
Review URL: http://codereview.chromium.org/2928009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-15 06:17:45 +00:00
serya@chromium.org
b569e6f562
Simplifying GenerateDictionaryNegativeLookup by making the 'extra' parameter mandatory.
...
Review URL: http://codereview.chromium.org/2982001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-13 10:02:11 +00:00
serya@chromium.org
43e28a6fea
Port prototype-call-stubs for normal objects ( http://codereview.chromium.org/2801018 ).
...
Review URL: http://codereview.chromium.org/2860049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5044 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-12 13:23:42 +00:00
serya@chromium.org
c56b92d65d
This change allows generating call-stubs for objects with normal (non-fast) objects in the prototype chain. StubCompiler::CheckPrototypes does ne
...
If the top level object is a normal object the stub is stored in its prototype map.
Lookup result of type NORMAL is not covered (since the normal stub currently doesn't check the prototype chain).
Review URL: http://codereview.chromium.org/2801018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-02 14:15:04 +00:00
antonm@chromium.org
078d285353
Push AccessorInfo data directly if they reside in old space.
...
Review URL: http://codereview.chromium.org/2840004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4896 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 17:13:40 +00:00
kaznacheev@chromium.org
ff61618c4b
Extend CallIC to support non-constant names.
...
This speeds up constructs like this:
var zz='replace'; '123'[zz]('3','4');
Review URL: http://codereview.chromium.org/2280007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4804 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-07 08:27:32 +00:00
vitalyr@chromium.org
8689b3bcea
Direct load of global function prototype.
...
As most of call IC code is tied to a context anyway we can save a few dependent loads by having a direct reference to an initial map of a global function.
Review URL: http://codereview.chromium.org/2239009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-04 16:20:34 +00:00
whesse@chromium.org
0fc3dca698
Add test_b(Operand, immediate) to ia32 assembler, and use it where possible. Improve comparison to a constant one-character string. Use CmpInstanceType in more places on ia32. Add IsObjectJSObjectType and IsInstanceJSObjectType to ia32 macro assembler, using a single branch for a range test.
...
Review URL: http://codereview.chromium.org/2586001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4795 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-04 10:46:04 +00:00
whesse@chromium.org
527c7972c7
Refactor GenerateLoadInterceptor, removing LoadInterceptorCompiler class and CompileLoadInterceptor static function.
...
All platforms (x64, ia32, and ARM) changed.
Review URL: http://codereview.chromium.org/2251003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4747 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 14:14:46 +00:00
vegorov@chromium.org
fc7c5f789a
Cardmarking writebarrier.
...
Reapply r4715 with fixes reviewed in http://codereview.chromium.org/2276002 .
Review URL: http://codereview.chromium.org/2255004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4743 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 12:30:45 +00:00
antonm@chromium.org
0dd031aa01
Move assertions to not take case to check that it's safe to omit CheckPrototypes in this case.
...
Review URL: http://codereview.chromium.org/2279005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4740 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 11:16:04 +00:00
vitalyr@chromium.org
ad0e38909f
Custom call IC-s for String.prototype.{charAt,charCodeAt}.
...
These string methods can be composed from two basic blocks: charCodeAt
and fromCharCode, both of which have fast cases for certain types of
inputs. In this patch these two blocks are refactored to allow
generating the fast cases without having to jump around the slow
cases. In the slow cases since they can now be invoked both from
inline runtime functions and from IC stubs we either have to
save/restore state of the current frame or enter/leave a new internal
frame. This is handled by new RuntimeCallHelper interface. Its
implementation for virtual frame is based on FrameRegisterState class
extracted from DeferredCode class.
Review URL: http://codereview.chromium.org/2087009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 14:23:19 +00:00
antonm@chromium.org
3e88d0d2af
Various refactorings in interceptor calling and loading.
...
1) do not push receiver early---that simplifies tail call preparation
on ia32/x64 and renders special cleanup unnecessary;
2) do not do second map check if interceptor's and cached holder
are the same;
3) do not push/pop receiver if receiver and holder registers are the same
(means that receiver is interceptor's holder);
4) do batch pushes on arm;
5) minor cosmetic improvements.
Review URL: http://codereview.chromium.org/2282001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 14:04:37 +00:00
vegorov@chromium.org
e268fbdaba
Revert r4715.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2274001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 09:24:44 +00:00
antonm@chromium.org
f6ec1b4f26
Comment the code for loading and calling with interceptor.
...
Review URL: http://codereview.chromium.org/2124021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 14:59:11 +00:00
vegorov@chromium.org
675e711f1c
Cardmarking writebarrier.
...
- New сardmarking write barrier handles large objects and normal objects in a similar fashion (no more additional space for pointer tracking is required, no conditional branches in WB code).
- Changes to enable oldspaces iteration without maps decoding:
-- layout change for FixedArrays: length is stored as a smis (initial patch by
Kevin Millikin)
-- layout change for SharedFunctionInfo: integer fields are stored as smi on
arm, ia32 and rearranged on x64.
-- layout change for String: meaning of LSB bit is fliped (1 now means hash not
computed); on x64 padding is added.
-- layout of maps is _not_ changed. Map space is currently iterated in a special
way.
Review URL: http://codereview.chromium.org/2144006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 13:15:16 +00:00
vegorov@chromium.org
2241d2af45
Reverting r4703.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2073018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 17:37:47 +00:00
vegorov@chromium.org
8879691793
Cardmarking writebarrier.
...
Reapplication of r4685 (reviewed http://codereview.chromium.org/2101002 ) with minor modifications:
- Fix compilation problems on Win64.
- Improve heap verification pass: search for garbage pointers to new space not only in dirty regions but in all regions.
Review URL: http://codereview.chromium.org/2114015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 15:52:38 +00:00
vegorov@chromium.org
955828e437
Reverting r4685, r4686, r4687
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2071020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:02:51 +00:00
vegorov@chromium.org
b38a0a719a
- Changes to enable oldspaces iteration without maps decoding:
...
-- layout change for FixedArrays: length is stored as a smis (initial patch by Kevin Millikin)
-- layout change for SharedFunctionInfo: integer fields are stored as smi on arm, ia32 and rearranged on x64.
-- layout change for String: meaning of LSB bit is fliped (1 now means hash not computed); on x64 padding is added.
-- layout of maps is _not_ changed. Map space is currently iterated in a special way.
- Cardmarking write barrier. New barrier handles large objects and normal objects in a similar fashion (no more additional space for pointer tracking is required, no conditional branches in WB code).
Review URL: http://codereview.chromium.org/2101002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:10:38 +00:00
mark@chromium.org
e9b5d7855b
Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac
...
Chromium build.
v8.gyp no longer sets any V8_TARGET_ARCH_* macro on the Mac. Instead, the
proper V8_TARGET_ARCH_* macro will be set by src/globals.h in the same way as
the V8_HOST_ARCH_* macro when it detects that no target macro is currently
defined. The Mac build will attempt to compile all ia32 and x86_64 .cc files.
#ifdef guards in each of these target-specific source files prevent their
compilation when the associated target is not selected. For completeness,
these #ifdef guards are also provided for the arm and mips .cc files.
BUG=706
TEST=x86_64 Mac GYP/Xcode-based Chromium build (still depends on other changes)
Review URL: http://codereview.chromium.org/2133003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 15:41:35 +00:00
vitalyr@chromium.org
4724826f4a
Refactored custom call IC generators:
...
* All generators are listed in a single place.
* Generators are installed as a separate pass in the bootstrapper.
* Replaced pointers to generator functions with integer ids.
Review URL: http://codereview.chromium.org/1981002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 13:21:53 +00:00
serya@chromium.org
16d3811d50
Changing string length field type from int to SMI. It will make it be a regular field. Code generated in EmitNamedLoad could be patched for faster access to string.length.
...
Review URL: http://codereview.chromium.org/1706013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 14:49:50 +00:00
lrn@chromium.org
4fdf57ace0
X64: Faster push/pop implementation.
...
Also snuck in an intended optimization for fast api call preparation and a few indentation fixes.
Review URL: http://codereview.chromium.org/1689010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 13:23:58 +00:00
podivilov@chromium.org
c973f99ce4
Port inlining of type checks in call ICs for API functions to x64 and arm (issue 602, r3825).
...
Review URL: http://codereview.chromium.org/1650011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-28 14:06:35 +00:00
antonm@chromium.org
6acdd84a61
Current custom call generators cannot cope with the case when receiver is not a JSArray.
...
Add a support for bailout from custom call generators (just return undefined).
BUG=684
Review URL: http://codereview.chromium.org/1699005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4503 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-26 15:08:07 +00:00
ager@chromium.org
c678e44805
Add missing smi check in IC for nonexistent properties.
...
Add regression test.
BUG=v8:681
Review URL: http://codereview.chromium.org/1673005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4446 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-20 10:20:39 +00:00
ager@chromium.org
afc15bb48f
Reapply load ICs for nonexistent properties.
...
We need to be careful to check global property cells for the property
encountered during lookup. Therefore, the ICs have to be specific to
the name of the property if global objects are involved. In
principle, this means that we could get a large number of monomorphic
ICs for the same map if there is a global object in the prototype
chain. However, since this is only done for normal load ICs and not
for keyed load ICs I do not expect this to be a problem. I will
experiment with it once this goes in.
BUG=675
Review URL: http://codereview.chromium.org/1559033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4426 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 11:25:41 +00:00
whesse@chromium.org
518481d5e6
Revert change 4401.
...
Review URL: http://codereview.chromium.org/1589035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4416 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 11:45:03 +00:00
ager@chromium.org
aa8818560d
Add inline caches for loading non-existing properties.
...
Review URL: http://codereview.chromium.org/1539034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4401 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 06:25:11 +00:00
vitalyr@chromium.org
6fbad6e230
Simplify passing of AccessorInfo to interceptors:
...
* Use slots on the native stack when possible instead of Relocatable.
* Got rid of a gap in AccessorInfo fields.
* Added test for non-cacheable post-interceptor lookup.
Review URL: http://codereview.chromium.org/1327002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4288 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 17:08:22 +00:00
antonm@chromium.org
5e24ffaa22
Slightly faster variant of Array.push.
...
Review URL: http://codereview.chromium.org/1265003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 14:20:56 +00:00
erik.corry@gmail.com
3672624b45
Fix pop push optimization to work with partial snapshots (correct
...
registration of external references in Proxy objects).
I moved the declaration of the two functions to stub-cache.h
because with all the types they use it's hard to declare them
anywhere else. But the actual definition is still in runtime.cc
near to the place where they are used.
Review URL: http://codereview.chromium.org/1079012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4231 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-23 14:33:42 +00:00
kasperl@chromium.org
7d6a3b433f
Merge the partial_snapshots branch back into bleeding_edge. For
...
now, the custom call generator stuff is disabled.
Review URL: http://codereview.chromium.org/1094014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4217 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-23 11:40:38 +00:00
antonm@chromium.org
14547ef434
Just grow elements if they happen to be at the edge of new space.
...
Review URL: http://codereview.chromium.org/945002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-15 15:16:04 +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
7f1eda50cc
Implement a custom call compiler for Array.pop.
...
Review URL: http://codereview.chromium.org/870007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-12 13:45: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
21af2c360a
Reland 4068 which wrapped Array methods into native builtins (reverted in 4075).
...
Review URL: http://codereview.chromium.org/857002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-11 13:13:21 +00:00
ager@chromium.org
5fd33c7527
Revert change to always call builtins for Array functions.
...
It causes regressions on test shell tests.
TBR=antonm@chromium.org
Review URL: http://codereview.chromium.org/819001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4075 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-10 08:45:00 +00:00
antonm@chromium.org
52ec954dd2
Always invoke C++ ArrayPush builtin.
...
Now this builtin checks if it should go into fast case or resort to JS ArrayPush builtin.
Review URL: http://codereview.chromium.org/660298
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4068 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-09 15:43:04 +00:00
whesse@chromium.org
a3a3a1f0be
Change KeyedStoreIC interface to take value, key, and receiver in registers.
...
Review URL: http://codereview.chromium.org/608031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3955 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-25 18:04:25 +00:00
vitalyr@chromium.org
e76f06a1e2
Fix miss in smi check when doing fast api call.
...
BUG=http://crbug.com/36604
Review URL: http://codereview.chromium.org/660004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-24 19:26:10 +00:00
vitalyr@chromium.org
3d76502914
Fix uninitialized memory read in CallOptimization.
...
BUG=http://crbug.com/36602
Review URL: http://codereview.chromium.org/657081
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3941 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-24 19:14:21 +00:00
serya@chromium.org
43d074985a
Review URL: http://codereview.chromium.org/652118
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3937 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-24 08:33:51 +00:00