Commit Graph

3702 Commits

Author SHA1 Message Date
mikhail.naganov@gmail.com
c1903ce332 Show RegExp calls in the profile.
It turns out they were filtered out. But when I unfiltered them, I
discovered another issue: when DevTools run, regexp literals get
recompiled each time they called (looks like this is concerned with
switching to full compiler), so I ended up having multiple entries for
the same regexp. To fix this, I changed the way of how code entries
equivalence is considered.

BUG=crbug/55999
TEST=cctest/test-profile-generator/ProfileNodeFindOrAddChildForSameFunction
(the test isn't for the whole issue, but rather for equivalence testing)

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-20 09:29:12 +00:00
floitschV8@gmail.com
fc9915b770 Added precision mode to fast-dtoa.
Review URL: http://codereview.chromium.org/2000004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5491 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-20 09:18:00 +00:00
lrn@chromium.org
a98baf9666 Remove unused variable from Scanner class.
BUG=None
TEST=compiles

Patch from Thiago Farina <tfarina@chromium.org>

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5490 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-20 08:43:35 +00:00
lrn@chromium.org
81b0236d76 Make preparsing data reusable.
Fix bug in writing symbol ids over 128.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5485 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-17 12:55:27 +00:00
fschneider@chromium.org
78f550c6fd Add missing x87 instructions fisttp and fst to the disassembler.
Review URL: http://codereview.chromium.org/3408011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5484 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-17 12:08:50 +00:00
vitalyr@chromium.org
c6c55a69a9 Fix direct loading of global function prototypes:
We must also check the current context has not changed.

The bug reported by Florian.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-17 09:56:47 +00:00
lrn@chromium.org
3b8235b306 Make some runtime arguments checks be RUNTIME_ASSERT, not ASSERT.
Review URL: http://codereview.chromium.org/3411013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5482 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-17 08:34:53 +00:00
peter.rybin@gmail.com
41064a57c3 Add breakOnCaughtException and breakOnUncaughtException flags
Review URL: http://codereview.chromium.org/3275011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 21:40:42 +00:00
kaznacheev@chromium.org
eef3bd7c04 Prevent inline constructor generation when duplicate properties are present in the constructor.
Currenly the constructor like this:
function f() {
  this.a = 0;
  this.a = 1;
  this.a = 2;
}
creates a map with duplicate desciptors which is bad in many ways.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5476 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 10:55:37 +00:00
fschneider@chromium.org
e91a352d02 Fix a regression in character-at stub when doing a keyed load on a string.
Loading from out-of-range has to go to the runtime system to check if there
exists a property with that index in the prototype.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 09:18:08 +00:00
kasperl@chromium.org
b2306a41d0 Clean up the insertion of nops (signalling non-inlined loads and
stores) in the full codegens.
Review URL: http://codereview.chromium.org/3431010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 09:10:34 +00:00
mikhail.naganov@gmail.com
2133ee3fee Really fix Mac build, and lint.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5469 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 08:51:13 +00:00
mikhail.naganov@gmail.com
64d07348ab Fix compilation issue on Mac
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5468 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 08:39:27 +00:00
mikhail.naganov@gmail.com
187d249d92 Enhance SafeStackFrameIterator to avoid triggering assertions in debug mode.
When running profiling in debug mode, several assertions in frame
iterators that are undoubtedly useful when iterator is started from a
VM thread in a known "good" state, may fail when running over a stack
of a suspended VM thread. This patch makes SafeStackFrameIterator
to proactively check addresses and bail out from iteration early,
before an assertion will be triggered.

BUG=crbug/55565

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5467 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 08:23:34 +00:00
mikhail.naganov@gmail.com
b6c5c5b50d Fix x64 compilation error. Patch from tfarina@chromium.org
http://codereview.chromium.org/3442004/show

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5466 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 08:17:46 +00:00
lrn@chromium.org
4d99cef867 X64: Templating Smi-macros to use both Label and NearLabel.
Added some more uses of NearLabel.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5465 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 07:24:15 +00:00
ricow@chromium.org
240cee91e4 Add support for near labels.
This change introduces near labels in the assembler, allowing us to
uptimize forward jumps (conditional and unconditional) if we can
guarantee that the jump is witin range -128 to +127.

I changed a large fractions of the existing Labels to NearLabels, and
left out cases where it was not immediately clear if it could be used
or not (not immediately clear means labels covering a large code
block, or used in function calls which we could potentially change to
accept near labels). 

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-15 11:43:12 +00:00
erik.corry@gmail.com
fbd67b1045 Prepare push to trunk. We are now working on version 2.4.5.
Review URL: http://codereview.chromium.org/3429006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5459 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-15 10:58:25 +00:00
lrn@chromium.org
cb514b72db Made predata smaller by storing symbol data in variable length base-128.
Remove position from symbol data - they must come in the correct order anyway.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-15 10:54:35 +00:00
erik.corry@gmail.com
62ec3292de Replace 2 ARM ldr instructions with one ldrd in the code generated
for a SubStringStub and StringCompareStub in the ARM backend.  This
is a commit of http://codereview.chromium.org/3341012 for Andreas
Anyuru.
Review URL: http://codereview.chromium.org/3387003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5457 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-15 10:22:55 +00:00
fschneider@chromium.org
bd6a8c1e4e Make the CompareStub and the UnaryOpStub accept smi inputs.
The stubs get an additional flag for including the smi code
inside the stub. This allows us to generate more compact code
if we don't want to inline the smi case outside the stub.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-15 10:14:25 +00:00
antonm@chromium.org
dae5fc6f81 Attempt to collect more garbage before panicking with out of memory.
Currently weak handles retain an object for another GC round (oftem times,
major GC round.)  Instrumenting Chromium shows that navigation leaves
many global objects which are only collected in next go.  Let's
attempt to collect more garbage when approacing OOM condition.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5455 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-14 17:48:56 +00:00
vitalyr@chromium.org
c3f04bf46f Add a few missing nops to signal no inlined code was generated.
Review URL: http://codereview.chromium.org/3399005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-14 16:38:02 +00:00
whesse@chromium.org
141e82b31e Allow List::sort, with an integer comparison function, to sort 64-bit pointers in profile-generator. Change a static const int member to be declared and defined only inside the class declaration in class Runtime.
Review URL: http://codereview.chromium.org/3424002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5453 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-14 15:16:32 +00:00
mikhail.naganov@gmail.com
228d56bd8e Add support for abortion in v8::OutputStream.
It's a good idea to allow receiver to interrupt data transmission.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5452 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-14 15:11:24 +00:00
whesse@chromium.org
fc83faa8fd Move inlined function declarations and support from codegen.* to runtime.*.
Review URL: http://codereview.chromium.org/3293002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5451 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-14 14:52:53 +00:00
mikhail.naganov@gmail.com
2388079051 Implement heap snapshots serialization into JSON. API is designed
to avoid storing serialized snapshot on VM, instead it is emitted
using output stream interface.

The size of JSON emitted is roughly equal to used heap size
(when stored as an ASCII string).

Now a whole heap snapshot can be serialized and transmitted outside
VM. This makes possible:
  - implementing non-async UI for heap snapshots inspection;
  - storing heap snapshots for further inspection;
  - remote profiling (we can even implement a snapshotting mode
    where a snapshot isn't even stored in VM, only transmitted --
    good for mobile devices);
  - creating tools for outside heap snapshots processing, e.g.
    converting to HPROF.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5450 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-14 11:49:06 +00:00
sgjesse@chromium.org
6ba4022033 Prepare push to trunk. We are now working on version 2.4.4.
Review URL: http://codereview.chromium.org/3308028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5446 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-13 09:10:47 +00:00
kasperl@chromium.org
dffb7533aa Implement for-in cache validity checking in the full codegen on IA-32.
Review URL: http://codereview.chromium.org/3376003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5445 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-13 06:13:20 +00:00
ager@chromium.org
666b98fb4b Handle both global and local variables potentially shadowed by
eval-introduced variables in full-codegen.

Make sure that x64 assembler records source positions for calls.
Review URL: http://codereview.chromium.org/3357022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-10 10:57:07 +00:00
lrn@chromium.org
bc2bf76129 Move string-search functions to separate file.
Review URL: http://codereview.chromium.org/3291021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5440 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-10 09:22:41 +00:00
lrn@chromium.org
84d8115ecf Fix bug in Array.prototype.indexOf/lastIndexOf when called on non-sparse non-arrays.
Review URL: http://codereview.chromium.org/3358025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5439 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-10 08:21:01 +00:00
lrn@chromium.org
ac2ae05f85 make Date.parse properly handle TZ offsets
This makes, e.g., Date.parse("2010-08-31T22:35:36-09:00") work as
expected. Without this change, the "-9:00" timezone-offset portion
causes V8 to fail to properly parse that string into a date.
BUG=http://code.google.com/p/v8/issues/detail?id=857
TEST=Try Date.parse("2010-08-31T22:35:36-09:00") and make sure
that it gets parsed without errors and does not return NaN.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5436 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-10 07:00:28 +00:00
peter.rybin@gmail.com
4ed429cc43 Landing 3338012: Move a function below to private section.
Review URL: http://codereview.chromium.org/3295023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-09 17:45:21 +00:00
vitalyr@chromium.org
624b13a804 Custom call IC for String.fromCharCode.
Review URL: http://codereview.chromium.org/3291015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5433 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-09 13:38:01 +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
lrn@chromium.org
67d8302779 Avoid collecting symbol info for one-off preparsing.
Review URL: http://codereview.chromium.org/3356010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5431 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-09 11:49:21 +00:00
ager@chromium.org
e5b63e7213 Handle global variables potentially shadowed by eval-introduced
variables in full-codegen.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-09 10:44:24 +00:00
sandholm@chromium.org
3877e1132b Change threshold for using ComplexIndexOf (using Boyer-Moore string
search) from 5 to 7. 
Review URL: http://codereview.chromium.org/3294016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5429 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-08 12:57:50 +00:00
sandholm@chromium.org
3684dc4d88 Store pattern.length() in a local.
Review URL: http://codereview.chromium.org/3300020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-08 11:05:54 +00:00
lrn@chromium.org
dc4898aae2 Don't generate preparse data if lazy-flag is false.
Review URL: http://codereview.chromium.org/3304012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-08 10:33:15 +00:00
ager@chromium.org
d6b50d5a12 Prepare push of version 2.4.2 to trunk.
Review URL: http://codereview.chromium.org/3324010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5424 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-08 06:20:09 +00:00
podivilov@chromium.org
8c595da419 Move stack check below while statement.
Call to Runtime_StackGuard should be generated after loop body.
Otherwise, break position will be the previous position before
loop statement.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-07 15:34:16 +00:00
kaznacheev@chromium.org
73c02394bf Avoid pushing arguments twice in GenericBinaryOpStub.
Under some conditions (ADD, non-number arguments passed in registers)
GenerateRegisterArgumentsPush was called twice and the stack broke.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5422 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-07 13:33:40 +00:00
lrn@chromium.org
7d3711ef75 Avoid (some) symbol lookups at parse time if preparse data is available.
Review URL: http://codereview.chromium.org/3308010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5421 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-07 12:52:16 +00:00
serya@chromium.org
e54ad9ee86 Removing a wrong check.
A strings which represents an array index with length 8 and 9 digits do not pass this check. However generated hash is valid.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-07 11:32:20 +00:00
whesse@chromium.org
7368ce808e Fix the ambigous Operand(0) for newer C++ compilers.
Review URL: http://codereview.chromium.org/3351010/show
Committed for Thiago Farina <tfarina@chromium.org>


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5419 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-07 11:09:45 +00:00
vegorov@chromium.org
983ed89a14 Ensure that empty descriptor array is marked before visiting any maps in marking phase.
Review URL: http://codereview.chromium.org/3318014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5416 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-07 09:15:15 +00:00
vitalyr@chromium.org
ece887dabf Turn visitor_id into a byte field and free back one word in Map.
Review URL: http://codereview.chromium.org/3364007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5414 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-06 12:50:11 +00:00
kmillikin@chromium.org
47e6e4fa6f Prepare push to trunk. Now working on version 2.4.2.
Review URL: http://codereview.chromium.org/3305012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5411 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-06 11:31:07 +00:00