ricow@chromium.org [Mon, 7 Jun 2010 15:39:10 +0000 (15:39 +0000)]
Flushing of code from functions that we expect not to use again.
This adds an additional step to full gc, removing code from functions
that are no longer in the compilation cache. The code is replaced with
a lazy compile version enabling us to recompile the function in case
we do actually need it again.
Review URL: http://codereview.chromium.org/2632003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4814
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 7 Jun 2010 13:16:05 +0000 (13:16 +0000)]
Revert change 4812 due to performance problems. This was a change in string addition on ia32.
Review URL: http://codereview.chromium.org/2706001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4813
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 7 Jun 2010 12:15:10 +0000 (12:15 +0000)]
Improve generated code for string encoding tests on ia32.
Review URL: http://codereview.chromium.org/2673001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4812
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Mon, 7 Jun 2010 11:31:44 +0000 (11:31 +0000)]
Count Mark-Compact/Mark-Sweep collections only after compaction decision was made
Review URL: http://codereview.chromium.org/2665001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4811
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 7 Jun 2010 11:02:43 +0000 (11:02 +0000)]
Prepare push to trunk. We are now working on version 2.2.16.
Review URL: http://codereview.chromium.org/2640007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4808
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Mon, 7 Jun 2010 10:54:42 +0000 (10:54 +0000)]
Add regression tests for issues 728, 732
TBR=lrn@chromium.org
Review URL: http://codereview.chromium.org/2698004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4807
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Mon, 7 Jun 2010 09:36:30 +0000 (09:36 +0000)]
Revert r4782. Fix issues 728, 732.
Review URL: http://codereview.chromium.org/2701003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4806
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 7 Jun 2010 08:49:07 +0000 (08:49 +0000)]
Add an API to control the disposal of external string resources
A new callback have been added which - if set - will be called to dispose of external string resources passed from the embedder to the V8 engine.
Review URL: http://codereview.chromium.org/2645004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4805
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kaznacheev@chromium.org [Mon, 7 Jun 2010 08:27:32 +0000 (08:27 +0000)]
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
ager@chromium.org [Mon, 7 Jun 2010 07:12:00 +0000 (07:12 +0000)]
Port fast eval calls to x64 and ARM. For global variables that can
only be shadowed by eval-introduced variables we usually do not need
to do a context lookup in the runtime system.
Review URL: http://codereview.chromium.org/2672001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4803
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Fri, 4 Jun 2010 16:20:34 +0000 (16:20 +0000)]
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
sandholm@chromium.org [Fri, 4 Jun 2010 13:43:41 +0000 (13:43 +0000)]
Fix issue in previous test optimization
Review URL: http://codereview.chromium.org/2653002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4801
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Fri, 4 Jun 2010 13:37:28 +0000 (13:37 +0000)]
Simplify criteria for doing an optimized test call
Review URL: http://codereview.chromium.org/2662002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4800
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Fri, 4 Jun 2010 11:58:40 +0000 (11:58 +0000)]
Simplify regexp test call when the regexp starts and ends with '.*'.
Review URL: http://codereview.chromium.org/2645002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4799
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Fri, 4 Jun 2010 11:57:01 +0000 (11:57 +0000)]
Rename ThreadManager::IterateThreads to ThreadManager::IterateArchivedThreads
The IterateThreads method only iterates archived threads. If all
threads are to be iterated an additional iteration of the current active
stack is also needed.
Review URL: http://codereview.chromium.org/2655002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4798
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Fri, 4 Jun 2010 11:49:44 +0000 (11:49 +0000)]
First phase of migration to new named property query callbacks.
Eventually named property query callbacks will return attributes
(as an integer) or an empty handle if property is not intercepted.
To gradually migrate to this new API, USE_NEW_QUERY_CALLBACK
macro would control if old or new style API is used.
So the migration plan is:
1) introduce new API which should be explictily enabled;
2) switch to new API defining USE_NEW_QUERY_CALLBACK before
include of <v8.h> (that would require changes to client code as well)
3) remove old API from v8
4) remove #define USE_NEW_QUERY_CALLBACK from clients.
Review URL: http://codereview.chromium.org/2576003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4797
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 4 Jun 2010 11:30:55 +0000 (11:30 +0000)]
Add optimized version of memcpy on ia32.
Only used in one place right now.
Still room for tweaking.
Review URL: http://codereview.chromium.org/2582001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4796
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 4 Jun 2010 10:46:04 +0000 (10:46 +0000)]
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
ager@chromium.org [Fri, 4 Jun 2010 10:19:19 +0000 (10:19 +0000)]
Optimize calls to evals. Most of the time there is no reason to
perform a context lookup in the runtime system for the 'eval'
function. Instead load the 'eval' function from the global context in
generated code if it is not shadowed.
Will port to other platforms as a separate change.
Review URL: http://codereview.chromium.org/2666001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4794
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dimich@chromium.org [Fri, 4 Jun 2010 07:53:40 +0000 (07:53 +0000)]
Remove unused tpedef.
Review URL: http://codereview.chromium.org/2560002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4793
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Thu, 3 Jun 2010 11:31:19 +0000 (11:31 +0000)]
Fix double to integer conversions in runtime string indexing.
Review URL: http://codereview.chromium.org/2577001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4791
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Thu, 3 Jun 2010 09:32:07 +0000 (09:32 +0000)]
Make StringCharCodeAt runtime function do what it name implies and not
just indexed string access.
The difference is that String.prototype.charCodeAt accepts any number
as an index, whereas string[] only accepts array indices.
Review URL: http://codereview.chromium.org/2467006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4790
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 2 Jun 2010 14:37:47 +0000 (14:37 +0000)]
Change keyed load IC interface on x64 to pass arguments in registers.
Review URL: http://codereview.chromium.org/2470001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4787
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 2 Jun 2010 11:05:06 +0000 (11:05 +0000)]
Fix bug in test case that made it fail to compile in non-debug mode.
Using ASSERT_EQ instead of CHECK_EQ means that a variable becomes unused.
Review URL: http://codereview.chromium.org/2475003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4785
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 2 Jun 2010 10:47:50 +0000 (10:47 +0000)]
Fix last-minute thinko that I snuck into the last change.
It busted crypto-decrypt.
Review URL: http://codereview.chromium.org/2434005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4784
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 2 Jun 2010 09:37:02 +0000 (09:37 +0000)]
ARM: Track Smis on top 4 stack positions and Smi loop variables.
Improve code generation for known smis and suspected Smis.
Review URL: http://codereview.chromium.org/2452002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4783
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 2 Jun 2010 09:31:01 +0000 (09:31 +0000)]
Fix bug that could cause a string to be incorrectly tagged as an array index.
We should only mark a string as an array index if we can store the entire value
of the number in the hash field. We sometimes failed to reject larger numbers.
Fixes http://code.google.com/p/v8/issues/detail?id=728
Review URL: http://codereview.chromium.org/2452007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4782
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 2 Jun 2010 08:58:44 +0000 (08:58 +0000)]
Add missing initialization of a couple of variables which makes
some compilers complaint when compiling with -Werror.
Review URL: http://codereview.chromium.org/2492001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4780
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 2 Jun 2010 08:48:51 +0000 (08:48 +0000)]
Prepare push to trunk. We are now working on version 2.2.15.
Review URL: http://codereview.chromium.org/2467004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4778
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 2 Jun 2010 08:17:19 +0000 (08:17 +0000)]
Initialize variable to make gcc happy.
http://code.google.com/p/v8/issues/detail?id=727
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4777
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 1 Jun 2010 21:11:38 +0000 (21:11 +0000)]
ARM: Add more logic to the generic keyed load stub
The generic keyed load stub was missing converting string keys to numberign keys and lookup in the keyed lookup cache. This is now added together with an additional counter on all platforms.
Review URL: http://codereview.chromium.org/2441002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4773
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Tue, 1 Jun 2010 14:08:19 +0000 (14:08 +0000)]
Fix generated code for String.charCodeAt.
Review URL: http://codereview.chromium.org/2468001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4770
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 1 Jun 2010 13:52:49 +0000 (13:52 +0000)]
CPU profiler: sample call stack on profiling start.
This simplifies writing tests a lot, because it is now possible
to guarantee that certain function will present in a profile by
starting profiler from inside it.
Review URL: http://codereview.chromium.org/2438002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4769
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 1 Jun 2010 13:42:48 +0000 (13:42 +0000)]
Unreviewed. Revert r4766, r4767.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4768
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 1 Jun 2010 13:35:44 +0000 (13:35 +0000)]
started adding test
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4767
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 1 Jun 2010 13:35:09 +0000 (13:35 +0000)]
added function
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4766
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dimich@chromium.org [Tue, 1 Jun 2010 08:01:50 +0000 (08:01 +0000)]
Fix an occasional crash in Assembler::ldr() for arm.
A peephole optimization can be attempted on a buffer that contains only a single command. The crash happens when running debug on Snow Leopard with --simulator=arm.
Review URL: http://codereview.chromium.org/2454001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4762
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 31 May 2010 13:26:12 +0000 (13:26 +0000)]
Change the interface of LoadIC on the x64 platform to take its arguments in registers.
Review URL: http://codereview.chromium.org/2330003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4759
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Mon, 31 May 2010 10:13:11 +0000 (10:13 +0000)]
Prepare push to trunk. Now working on version 2.2.14.
Review URL: http://codereview.chromium.org/2417001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4755
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Mon, 31 May 2010 10:09:07 +0000 (10:09 +0000)]
Fix AddBlock invocations in CpuProfilesCollection.
It was a bad idea not to check the count of numbers to add.
Also fix a rollover: the comment in platform-linux.
Review URL: http://codereview.chromium.org/2418001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4754
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Mon, 31 May 2010 08:52:57 +0000 (08:52 +0000)]
ARM: Remove LoadConditionAndSpill and VisitAndSpill.
Review URL: http://codereview.chromium.org/2414001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4753
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 28 May 2010 16:12:24 +0000 (16:12 +0000)]
Reapply r4702 "Fix teardown order"
I accidentaly reverted changes from r4702 in r4706. Now bringing them back.
Original commit message:
As TokenEnumerator cleans up global handles posessed, it's owner --
CpuProfiler must be shut down prior to global handles.
Review URL: http://codereview.chromium.org/2072013
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/2325003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4752
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Fri, 28 May 2010 11:54:58 +0000 (11:54 +0000)]
Make intercepted properties retrievable only by getter to be not enumerable.
Currently if there is no query callback, V8 finds out intercepted properties'
attributes using getter: if getter returns not empty handle V8 treats
such a property as property with NONE attribues which means this property
is enumerable.
However, if there is no enumerator, this property cannot be enumerated.
Thus I think we should treat such properties as not enumerable.
Drawback of this approach is now one has to implement both query and enumerator
callbacks to implement enumerable intercepted properties.
BUG=725
Review URL: http://codereview.chromium.org/2270005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4751
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 28 May 2010 11:27:14 +0000 (11:27 +0000)]
Missing file from last commit.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4750
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 28 May 2010 11:23:07 +0000 (11:23 +0000)]
Get rid of LoadAndSpill on ARM since Load() knows whether it is
in a spilled scope or not. Also get rid of some spilled scopes
that we don't need any more. The generators for the %_ functions,
CodeGenerator::Generate*, are now not spilled by default. Some
of them (IsObject and related) have been converted to register
allocated operation.
Review URL: http://codereview.chromium.org/2368001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4749
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 28 May 2010 08:37:44 +0000 (08:37 +0000)]
X64: Fix issue 678. Bug in some Win64 C calls from generated code.
Win 64 C call ABI implementation requires space allocated on stack for four
argument registers, even when passing fewer arguments in registers.
Review URL: http://codereview.chromium.org/2365001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4748
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 27 May 2010 14:14:46 +0000 (14:14 +0000)]
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
ager@chromium.org [Thu, 27 May 2010 13:57:55 +0000 (13:57 +0000)]
Fix presubmit error. Trailing whitespace.
TBR=erik.corry
Review URL: http://codereview.chromium.org/2224007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4746
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Thu, 27 May 2010 13:48:52 +0000 (13:48 +0000)]
Fix jump targets on ARM to merge virtual frames (really this time).
Use the jump targets to move the first deferred code to not flush
registers in the inlined case (KeyedLoad).
Review URL: http://codereview.chromium.org/2249002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4745
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Thu, 27 May 2010 13:46:18 +0000 (13:46 +0000)]
Update and improve support for ARMv7 bitfield instructions.
This is a commit of http://codereview.chromium.org/2124022
for Rodolph Perfetta. I changed the test in
test-assembler-arm.cc so it only runs if ARMv7 is supported.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4744
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Thu, 27 May 2010 12:30:45 +0000 (12:30 +0000)]
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
lrn@chromium.org [Thu, 27 May 2010 12:23:46 +0000 (12:23 +0000)]
Revert try-commit.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4742
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 27 May 2010 12:22:23 +0000 (12:22 +0000)]
To be reverted.
Add extra checks for bad stack content in X64 RE-macro-assembler,
to check for crash that is only reproducible with the buildbot and
only in release mode.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4741
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 27 May 2010 11:16:04 +0000 (11:16 +0000)]
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
lrn@chromium.org [Thu, 27 May 2010 10:25:33 +0000 (10:25 +0000)]
X64: Many small tweaks and more usages of "load smi as int32".
Review URL: http://codereview.chromium.org/2266003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4739
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 27 May 2010 07:43:43 +0000 (07:43 +0000)]
Add support for getOwnPropertyDescriptor on array indices (fixes issue 599).
This fix adds support for retriving a property descriptor on elements. The
new version supports both fast and slow case elements. In the fast case
we always default configurable, writable, enumerable to true (we don't have
PropertyDetails for fast elements).
A few new tests are added to get-own-property-descriptor.js, I will
add a lot more to object-define-property when I add support for indices in
Object.defineProperty.
Review URL: http://codereview.chromium.org/2278002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4738
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 27 May 2010 07:31:10 +0000 (07:31 +0000)]
ARM: Default to use unaligned accesses in the simulator
Support building with or without unaligned accesses by using scons flag simulatorunalignedaccesses.
$ scons simulator=arm simulatorunalignedaccesses=off
$ scons simulator=arm simulatorunalignedaccesses=on
If simulatorunalignedaccesses is not specified (or specified as default) the default is to use unaligned accesses.
Review URL: http://codereview.chromium.org/2218003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4737
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 27 May 2010 06:38:53 +0000 (06:38 +0000)]
Implement OS::ReleaseStore for Solaris
Review URL: http://codereview.chromium.org/2282003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4736
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 26 May 2010 16:11:30 +0000 (16:11 +0000)]
Fix: make string indexing work with Infinity.
NumberToUint32 that I was trying to use maps -0 to +0 (as desired) but
also maps +/-Infinity to +0, which made +/-Infinity a valid string
index. I fixed it by introducing a new runtime function with the right
semantics.
TEST=LayoutTests/fast/js/char-at.html,mjsunit/string-charat.js
Review URL: http://codereview.chromium.org/2223003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4734
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 26 May 2010 14:23:19 +0000 (14:23 +0000)]
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
antonm@chromium.org [Wed, 26 May 2010 14:04:37 +0000 (14:04 +0000)]
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
kmillikin@chromium.org [Wed, 26 May 2010 12:39:50 +0000 (12:39 +0000)]
Prepare push to trunk. Now working on version 2.2.13.
Review URL: http://codereview.chromium.org/2280001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4729
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 26 May 2010 11:38:33 +0000 (11:38 +0000)]
Refactor x64 named loads to agree with ia32 implementation. Remove dead code and flag is_global from x64 keyed loads.
Review URL: http://codereview.chromium.org/2121022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4728
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 26 May 2010 11:28:14 +0000 (11:28 +0000)]
Update comment in the API to explicitly state that the handle returned
from Context::New is persistent and has to be disposed at some point
in order to allow garbage collecting the context.
Review URL: http://codereview.chromium.org/2220003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4727
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 May 2010 11:19:39 +0000 (11:19 +0000)]
ARM: Add Ldrd/Strd to the macro assembler
The macro assembler now checks for ARMv7 support and generates instructions for Ldrd/Strd accordingly. INstructions ldrd/strd in the assembler requires ARMv7 support enabled. This removes the a check for CAN_USE_ARMV7_INSTRUCTIONS making the ARMv7 support in the simulator fully controled by the --enable-armv7 flag.
Review URL: http://codereview.chromium.org/2226003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4726
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 26 May 2010 10:02:07 +0000 (10:02 +0000)]
X64: Make smi memory operations work directly on the embedded value.
Adds Operand-relative Operand constructor.
Review URL: http://codereview.chromium.org/2242002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4725
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 May 2010 09:43:54 +0000 (09:43 +0000)]
Make ldrd and strd instructions take two register arguments
Review URL: http://codereview.chromium.org/2122021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4724
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Wed, 26 May 2010 09:24:44 +0000 (09:24 +0000)]
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
erik.corry@gmail.com [Wed, 26 May 2010 08:40:11 +0000 (08:40 +0000)]
Refactoring of codegen-arm.cc to use the VirtualFrame API.
This is a commit for Rodolph Perfetta.
http://codereview.chromium.org/2159002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4722
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 26 May 2010 08:34:07 +0000 (08:34 +0000)]
The way reloc entries are visited by the ObjectVisitor is architecture
dependent, so we push it down to the architecture dependent files.
Currently all architectures visit in almost the same way, but this is
about to change on ARM with movw/movt.
Review URL: http://codereview.chromium.org/2218002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4721
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Wed, 26 May 2010 08:31:57 +0000 (08:31 +0000)]
Fix issue 720 making Object.defineProperty handle existing writable flags correctly.
The existing version will overwrite the existing writable flag with
false even in the case where no new value is given and the existing
writable flag is true.
The reason for the issue is that there is no check to see if the
provided descriptor actually has a writable attribute. This causes us
to use the default value (false) even in the case where nothing was
provided. In addition, the existing tests makes wrong assumptions (that writable is always set to false if not provided) and has been changed to follow the specification.
Review URL: http://codereview.chromium.org/2271001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4720
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Wed, 26 May 2010 08:20:44 +0000 (08:20 +0000)]
Fix v8_base.vcproj: add dtoa.cc and fixed-dtoa.cc to dtoa project.
Review URL: http://codereview.chromium.org/2086024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4719
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 25 May 2010 18:50:31 +0000 (18:50 +0000)]
Minor FreeBSD compile fix from Ry:
http://codereview.chromium.org/2098019/show
Should fix http://code.google.com/p/v8/issues/detail?id=716
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4718
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 25 May 2010 14:59:11 +0000 (14:59 +0000)]
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
sgjesse@chromium.org [Tue, 25 May 2010 14:08:17 +0000 (14:08 +0000)]
ARM: Update the full compiler to handle all code
The full compiler is now complete on ARM as well. The syntax checker is still used to determine whether to use it for top level code or not during normal execution. When debugging is enabled all code will be compiled with the full compiler.
This change removes the temporary flag --force-full-compiler and now the flag --always-full-compiler enables the full compiler for all code on all platforms.
This also fixes building on Intel platform without debugger support (ENABLE_DEBUGGER_SUPPORT not defined) and adds full check for the full compiler for lazily compiled code.
Review URL: http://codereview.chromium.org/2163006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4716
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 25 May 2010 13:15:16 +0000 (13:15 +0000)]
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
antonm@chromium.org [Tue, 25 May 2010 12:14:49 +0000 (12:14 +0000)]
Allow to define accessors on objects.
Currently one can only define accessors on object templates. This patch
allows to create accessors on the fly.
These accessors could control access to elements as well. This element
support is somewhat rudimentary and may require future work (for example,
we probably don't want to convert index into a string.)
Review URL: http://codereview.chromium.org/2123012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4714
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 25 May 2010 10:35:55 +0000 (10:35 +0000)]
Refactor the samevalue internal method and add tests for this method.
Noticing that the only difference between samevalue and strict equality is on
numbers we can simplify SameValue.
The old version did not return a correct answer if called on two strings since
StringEquals (from runtime.cc) returns an answer that is the negated value
(if treated as a boolean).
Review URL: http://codereview.chromium.org/2136024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4713
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 May 2010 09:18:08 +0000 (09:18 +0000)]
Fix GC issue
A raw pointer was used while collecting a stack trace. This was not safe as the code collecting the stack trace allocated memory.
Review URL: http://codereview.chromium.org/2147005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4712
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 25 May 2010 06:43:13 +0000 (06:43 +0000)]
Fix lint issue and compile error.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/2157006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4711
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 25 May 2010 06:38:19 +0000 (06:38 +0000)]
Landing patch by tonyg@chromium.org:
Changing ScriptData API to serialize its internal representation to a
const char* array.
This decouples the API from the internal representation and avoids the need for
callers to serialize themselves.
As a side-effect, ScriptData::New() no longer assumes ownership of its input.
This shouldn't matter as typical usage patterns for the old API would have
required a copy prior to calling ScriptData::New().
Review URL: http://codereview.chromium.org/2118010/show
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4710
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 25 May 2010 06:35:03 +0000 (06:35 +0000)]
Fix presubmit error (a tab in v8natives.js)
Review URL: http://codereview.chromium.org/2132025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4709
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 25 May 2010 06:25:27 +0000 (06:25 +0000)]
Fixes issue 712 causing non-configurable accessors to be overwritable by using
Object.defineProperty with empty property descriptor.
The issue is fixed by implementing step 5 and 6 from DefineOwnProperty in the
specification (ES5 8.12.9).
This also fixes a bug in SameValue when used on boolean values (it
would priorly return a number - not a boolean).
Review URL: http://codereview.chromium.org/2131019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4708
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Sat, 22 May 2010 06:35:27 +0000 (06:35 +0000)]
Fix tests on ARM simulator.
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/2124017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4707
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Sat, 22 May 2010 05:27:19 +0000 (05:27 +0000)]
CPU profiler: make code events handling scalable.
I changed the implementation of a queue between the VM and processor
thread to be unbounded and lock-free, using Herb Sutter's example from
DDJ article: http://www.ddj.com/high-performance-computing/
210604448
This had brought back profiling overhead to a minimum for the page
from Chromium's issue 16184.
BUG=714
Review URL: http://codereview.chromium.org/2091019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4706
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dimich@chromium.org [Fri, 21 May 2010 20:52:19 +0000 (20:52 +0000)]
Include check for execution termination into bailout check.
This prevents re-entry into JS during stack unwinding caused by TerminateExecution().
Review URL: http://codereview.chromium.org/2123005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4705
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Fri, 21 May 2010 17:37:47 +0000 (17:37 +0000)]
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
vegorov@chromium.org [Fri, 21 May 2010 15:52:38 +0000 (15:52 +0000)]
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
mikhail.naganov@gmail.com [Fri, 21 May 2010 13:46:35 +0000 (13:46 +0000)]
Fix teardown order.
As TokenEnumerator cleans up global handles posessed, it's owner --
CpuProfiler must be shut down prior to global handles.
Review URL: http://codereview.chromium.org/2072013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4702
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 21 May 2010 12:58:02 +0000 (12:58 +0000)]
Revert change 3849. On ia32, LoadFromSlot again returns its result on the top of the expression stack, not as a Result return value.
Review URL: http://codereview.chromium.org/2121014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4700
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 21 May 2010 11:22:03 +0000 (11:22 +0000)]
Prepare push to trunk. Now working on version 2.2.12.
Review URL: http://codereview.chromium.org/2080018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4699
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 21 May 2010 09:23:33 +0000 (09:23 +0000)]
Remove the fledgling Thumb2 support since we are concentrating
on other ways to make ARM code more compact.
Review URL: http://codereview.chromium.org/2080017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4698
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 21 May 2010 09:08:14 +0000 (09:08 +0000)]
X64: Added inline conversion of double to smi for LikelySmiBinaryOp shifts.
Review URL: http://codereview.chromium.org/2078028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4697
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 21 May 2010 09:01:19 +0000 (09:01 +0000)]
Guard VMState trakcing with ENABLE_VMSTATE_TRACKING instead of
ENABLE_HEAP_PROTECTION.
TBR=mnaganov@chromium.org
Review URL: http://codereview.chromium.org/2098017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4696
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Thu, 20 May 2010 19:58:05 +0000 (19:58 +0000)]
Cosmetic fix to avoid operator precedence warning on newer gcc.
Review URL: http://codereview.chromium.org/2088011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4695
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Thu, 20 May 2010 19:30:35 +0000 (19:30 +0000)]
ARM cleanup: Remove lea, swap, swapb instrutions. This is a commit
of http://codereview.chromium.org/2064012/show for Rodolph Perfetta.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4694
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Thu, 20 May 2010 17:15:46 +0000 (17:15 +0000)]
Provide debug event listener with access to the debuggee context. Also introduce new event listener setter that allows to set a callback that accepts single parameter encapsulating all debug event details so that additional information can later be passed to the listener without breaking compatibility with existing clients.
Review URL: http://codereview.chromium.org/2108024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4693
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 20 May 2010 15:09:21 +0000 (15:09 +0000)]
Change keyed store IC interface on x64 to take value, key, and receiver in registers rather than on the stack.
Review URL: http://codereview.chromium.org/2111011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4692
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 20 May 2010 14:56:49 +0000 (14:56 +0000)]
Fix formatting in last change, file x64/full-codegen-x64.cc.
Review URL: http://codereview.chromium.org/2081014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4691
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Thu, 20 May 2010 14:37:42 +0000 (14:37 +0000)]
Add parentheses to clarify operator precedence.
Review URL: http://codereview.chromium.org/2095019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4690
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00