Commit Graph

1002 Commits

Author SHA1 Message Date
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
serya@chromium.org
bc42d95cc3 Avoiding repacking payload for v8::Arguments and v8::AccessorInfo (arm)
Review URL: http://codereview.chromium.org/5107002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-19 09:06:00 +00:00
sgjesse@chromium.org
010f35f478 Change the order of evaluation of sub-expressions for keyed call
The expression of the key is now evaluated before the arguments, so all expressions in a keyed call are evaluared from left to right.

BUG=http://code.google.com/p/v8/issues/detail?id=931
TEST=test/mjsunit/regress/regress-931.js
Review URL: http://codereview.chromium.org/5161002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5842 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-17 13:59:07 +00:00
serya@chromium.org
af7825c05f API call code refactoring (x64).
Review URL: http://codereview.chromium.org/5108003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-17 10:44:16 +00:00
serya@chromium.org
ee78d11818 Port direct API function call to x64 (ia32 CL is http://codereview.chromium.org/4456002/).
Review URL: http://codereview.chromium.org/5004004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5833 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-16 16:08:57 +00:00
serya@chromium.org
3b248841da Removing redundant stubs for API functions.
Review URL: http://codereview.chromium.org/4695003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5827 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-15 17:12:34 +00:00
fschneider@chromium.org
582a3bde4f Move ComputeCallInitialize from the codegen.cc to stub-cache.cc.
Review URL: http://codereview.chromium.org/4760003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-11 10:33:51 +00:00
fschneider@chromium.org
8673e6497c Move common static helpers from codegen to the macro-assembler files.
Review URL: http://codereview.chromium.org/4654002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-10 17:00:20 +00:00
lrn@chromium.org
8f8039574a Split utils.h into utils.h and v8utils.h where the former is independent of V8.
The code in utils.h can be reused outside of v8 propert, as long as the
propert ASSERT macros are defined.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-05 08:18:53 +00:00
vegorov@chromium.org
9b96a9d592 Fix presubmit errors introduced by r5768.
Review URL: http://codereview.chromium.org/4409003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-04 15:39:06 +00:00
vegorov@chromium.org
746d72420c Improve positions recording for calls.
Review URL: http://codereview.chromium.org/4469002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5768 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-04 15:12:03 +00:00
lrn@chromium.org
e1458503d1 Remove regexp caching.
Review URL: http://codereview.chromium.org/4308001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-02 13:37:59 +00:00
ager@chromium.org
51bc9a1493 Remove invalid asserts from last commit.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/4094010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5745 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-01 09:16:39 +00:00
ager@chromium.org
5f1f2adb3b Landing for Rodolph Perfetta.
Reduces the number of movw/movt instructions generated in ProbeTable. It
improves code size for CompileCallMegamorphic by about 10%.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/4220004/show

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-01 08:55:40 +00:00
karlklose@chromium.org
1b0e2597e8 Fix a bug that prevents constants from overwriting function values in object literals.
BUG=http://code.google.com/p/v8/issues/detail?id=907

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5718 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-27 11:37:59 +00:00
ager@chromium.org
a894e78654 Clean up definitions in simulator.
Clean up the definition of USE_SIMULATOR and its uses.
Review URL: http://codereview.chromium.org/4044003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-25 16:40:41 +00:00
erik.corry@gmail.com
0dcaac1939 Make Failure inherit from MaybeObject instead of Object.
Review URL: http://codereview.chromium.org/3970005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5698 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-25 15:22:03 +00:00
serya@chromium.org
0ea6c1e09f Optimizing HandleScope. Also fixed HandleScope destruction when API getter throws an exception.
Review URL: http://codereview.chromium.org/3792003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-21 14:21:00 +00:00
whesse@chromium.org
7fd5d4540c Implement --noinline-new flag fully on x64 and ia32 platforms.
Review URL: http://codereview.chromium.org/3961005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-21 13:15:12 +00:00
ager@chromium.org
30959b20b9 Update x64 RecordWrite comment. When the offset is zero the index
should be an untagged 32-bit integer on x64. There are debug mode
asserts in the code that catch tagged integers so we get test
failures if we get it wrong.
Review URL: http://codereview.chromium.org/3928002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5668 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-20 08:52:46 +00:00
lrn@chromium.org
484b9df414 Limit end-anchored regexps to testing end of string where possible.
Review URL: http://codereview.chromium.org/3844006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 14:00:01 +00:00
kmillikin@chromium.org
f2789a903b Change the StackGuard runtime function to take no arguments.
For some reason the StackGuard runtime function took a dummy argument
that it always ignored.  Change it to take no arguments.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 11:14:03 +00:00
lrn@chromium.org
00e23b719d Revert revision 5657.
TBR: erik.corry

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5658 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 10:37:54 +00:00
lrn@chromium.org
f80da64d36 Use finite-length end-anchored regexps to reduce part of regexp that is searched.
Review URL: http://codereview.chromium.org/3850005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5657 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 09:42:40 +00:00
whesse@chromium.org
e08e43691a Fix bug in comparison of two smis that differ by MIN_SMI on full compiler on all platforms.
Review URL: http://codereview.chromium.org/3767016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-18 14:04:28 +00:00
whesse@chromium.org
056b1f3a86 Fix compilation error on ARM with gcc 4.4. Remove NULL check of pointer to member, which was dead code (never failed).
Review URL: http://codereview.chromium.org/3793011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-18 10:23:45 +00:00
whesse@chromium.org
a8455f0424 Do not return the constant singleton float -0.0 from UnaryOpStub, because it may be overwritten, on X64 platform.
Review URL: http://codereview.chromium.org/3748007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-15 14:50:49 +00:00
whesse@chromium.org
9aec312468 Add stop-at flag implementation to full compiler on all platforms.
Review URL: http://codereview.chromium.org/3791009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5629 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-15 11:45:05 +00:00
kmillikin@chromium.org
92a74be6f1 Fix presubmit failure.
Review URL: http://codereview.chromium.org/3605008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-06 08:47:08 +00:00
vitalyr@chromium.org
d498613c9a Make lint happy.
TBR=kmillikin@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-04 15:21:38 +00:00
kmillikin@chromium.org
ea910460bd More refactoring of class Compiler's interface.
Change more functions used by the Compiler class to have a uniform
interface: they get passed as argument an input/output pointer to a
CompilationInfo that they mutate if they succeed, and they return a
flag telling whether they succeeded.

Also, remove some unnecessary timers.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-04 14:30:43 +00:00
kmillikin@chromium.org
bef3ae07db Begin a more aggressive refactoring of the Compiler interface.
The plan is to use the CompilationInfo class to communicate inputs and
outputs to compilation pipeline phases, which each return a boolean
success/failure flag.

The intent is to make it easier to compose small pieces of the
pipeline without having to grow a custom function each time, each
taking a half dozen arguments.

This change modifies the very front end (the parser).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-04 11:35:46 +00:00
vitalyr@chromium.org
7228d867cb Use existing global cell status as a hint when generating loads.
Review URL: http://codereview.chromium.org/3537003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-30 17:39:31 +00:00
antonm@chromium.org
f8b274eea8 Rename some x64 macros to be more precise about their semantics.
Review URL: http://codereview.chromium.org/3574002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-30 11:48:03 +00:00
antonm@chromium.org
9e618ff460 Add another check to be sure non-negative smi fits into Uint32 range.
Review URL: http://codereview.chromium.org/3546003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5558 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-29 18:15:36 +00:00
antonm@chromium.org
3567207741 Do not invoke indexed interceptor getters for negative indices.
BUG=https://bugs.webkit.org/show_bug.cgi?id=46689

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5553 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-29 15:08:38 +00:00
vitalyr@chromium.org
1982f9d257 Custom call IC for Math.abs.
Review URL: http://codereview.chromium.org/3446024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5538 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-27 23:41:41 +00:00
whesse@chromium.org
25f31f13fa Fix error in x64 inlined optimized shift operators.
Review URL: http://codereview.chromium.org/3496007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-27 07:24:01 +00:00
kaznacheev@chromium.org
c39194e06f Implemented missing instructions in ia32 and x64 disassembler.
ia32: fld(i), fldpi
x64: fld(i), fldpi, cvtsd2si, cvttsd2si

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5525 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 12:55:17 +00:00
erik.corry@gmail.com
a26a9b74ab Revert 5520 due to compilation failure.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5521 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 09:35:19 +00:00
erik.corry@gmail.com
68ef41af29 Small tweaks to make the x64 full code generator generate
more compact code.
Review URL: http://codereview.chromium.org/3443022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 08:34:52 +00:00
kmillikin@chromium.org
9c503a8330 Fix some inconsistent formatting.
I noticed we sometimes had extra spaces before and after the "const"
keyword.  Probably the result of a search and replace gone wrong.

This is a whitespace only change.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 08:25:31 +00:00
kmillikin@chromium.org
830185b175 Clean up some messiness in Scopes.
For some reason, the scope's arguments and arguments shadow were
variable proxies, which resulted in all references to the arguments
shadow being shared in the AST.  This makes it hard to put per-node
state on the AST nodes.

I took the opportunity to remove Variable::AsVariable which has
confused people in the past, and to rename Variable::slot to the more
accurate Variable::AsSlot.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 07:53:59 +00:00
kaznacheev@chromium.org
5e572e4622 Support dec_b instruction in ia32 and x64 disassembler.
Review URL: http://codereview.chromium.org/3412028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-23 19:01:56 +00:00
erik.corry@gmail.com
94cf27373c Cleanup of contexts in the full code generator.
Review URL: http://codereview.chromium.org/3449004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5511 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-23 09:22:45 +00:00
kaznacheev@chromium.org
06c867404b Dynamically determine optimal instance size.
The number of inobject properties used to be derived from the number
of this property assignments in the constructor (and increased by 2 to
allow for properties added later). This very often leads to wasted inobject 
slots.

This patch reclaims some of the unused inobject space by the following method:
 - for each constructor function the first several objects are allocated using the initial 
   ("generous) instance size estimation (this is called 'tracking phase').
 - during the tracking phase map transitions are tracked and actual property counts are collected.
 - at the end of the tracking phase instance sizes in the maps are decreased if necessary
   (starting with the function's initial map and traversing the transition tree).
 - all further allocation use more realistic instance size estimation.

Shrinking generously allocated objects without costly heap traversal is made possible 
by initializing their inobject properties with one_pointer_filler_map (instead of undefined). 

The initial slack for the generous allocation is increased from 2 to 6 which really helps some tests.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-23 09:15:26 +00:00
kaznacheev@chromium.org
e69278a70c Unuse labels when bailing out of StubCompiler methods.
There are 3 methods where early return happen before the 
miss label is bound. This is harmless in Release mode, 
in Debug an assertion fails.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-23 08:06:19 +00:00
vitalyr@chromium.org
a6bbe9820e Custom call IC for Math.floor.
Review URL: http://codereview.chromium.org/3327022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5499 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-21 12:54:12 +00:00
vitalyr@chromium.org
ceb9d79d73 Generate inline code for contextual loads.
Contextual load requires only a map check followed by a cell hole
check so we can generate pretty compact code for that. The fact that
we have inlined code is marked by mov ecx, offset instruction after
the IC call. Inlining is only enabled inside loops and in non-builtin
functions.

The generated code size increase is about 3%. This descreased the
pc-to-code cache hit rate in some of the benchmarks that trigger
GC. To compensate we now have 4 times as much entries in the cache.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5497 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-20 13:50:27 +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
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
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
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
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
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
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
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
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
whesse@chromium.org
990992a857 Remove CodeGenerator::PatchInlineRuntimeEntry and replace its single use in test-log-stack-tracer.cc with an alternative implementation.
Review URL: http://codereview.chromium.org/3311002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5392 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-01 13:13:31 +00:00
whesse@chromium.org
a18f9d1114 Remove dependence of code-stubs on codegen, the virtual frame code generator. Move some functions used by code-stubs and full-codegen from codegen to macro-assembler.
Review URL: http://codereview.chromium.org/3169049

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-30 11:48:07 +00:00
ricow@chromium.org
3fb62235e3 Add functionality for finding code objects from a pc that points into
the code object's instructions.

This allows us to find a code object using just the pc. This approach
uses a cache (PcToCodeCache) to make sure we don't continuously have
to iterate heap pages.

This change eliminates the need for cooking and uncooking of stack frames.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-30 08:54:43 +00:00
serya@chromium.org
71548e969b Using array index hash code for string-to-number conversion.
Review URL: http://codereview.chromium.org/3141022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-27 11:47:12 +00:00
sgjesse@chromium.org
cfb4a183e5 Fix presumbit errors in previous commit
TBR=kasperl@chromium.org
Review URL: http://codereview.chromium.org/3249001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-27 07:41:46 +00:00
sgjesse@chromium.org
be5763fc4d Cleanup the way the debugger stores live registers when entering at a break
The live registers are now only stored to the expression stack with the non pointer values being stored as smis (on the 32-bit platforms these values are assumed to be 31-bit max).

This makes the CEntryStub entry/exit code much simpler, and there is no longer any need for a mode (debug or normal) on it.

Fix a missing live register when breaking at ARM keyed load.
Review URL: http://codereview.chromium.org/3141047

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-27 07:08:03 +00:00
vitalyr@chromium.org
ee1dc27795 Fast string construct stub (ia32 only for now).
Review URL: http://codereview.chromium.org/3211002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-26 13:59:37 +00:00
kasperl@chromium.org
6d5451d685 Add inlining of binary smi operations in the full codegens on IA32
and x64 (on IA32 we even fold constants into the instructions for
a more compact representation) and prepare the ARM full codegen for
the doing the same there.
Review URL: http://codereview.chromium.org/3195028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-26 08:50:38 +00:00
kasperl@chromium.org
1816e05dc2 Prepare for optionally inlining smi cases in the code generated
by the full codegens.
Review URL: http://codereview.chromium.org/3116042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5343 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 14:22:03 +00:00
kasperl@chromium.org
3c26a55def Start using the overwrite mode from the full codegens to generate
slightly better code and allow passing arguments to binary op stubs
in registers on the platforms that support it.
Review URL: http://codereview.chromium.org/3203005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 11:10:05 +00:00
whesse@chromium.org
82309445ad Move code stub implementations from codegen-[platform].cc files to new code-stub-[platform].cc files, and declarations to new code-stub-[platform].h files.
Remaining work is to do the same for platform-independent code stub declarations, and to remove all dependencies on codegen header files from code stub files.
Review URL: http://codereview.chromium.org/3195022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5338 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 09:44:44 +00:00
kasperl@chromium.org
59b0bb1e2a Improve the code generated by the full codegen by keeping
track of the fall-through label and avoiding silly jumps.
Review URL: http://codereview.chromium.org/3166033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5337 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 08:57:21 +00:00
kasperl@chromium.org
02a842daae Simplify the way constructors are called and avoid pushing
a dummy receiver that we end up ignoring anyway.
Review URL: http://codereview.chromium.org/3136032

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 07:18:32 +00:00
sgjesse@chromium.org
d7fa6b7a21 Fix a bug in the handling of debug break in CallIC
The change of calling convention in the CallIC was not reflected in the debug break code. Without the change to the debug break code the added test crashed.
Review URL: http://codereview.chromium.org/3167037

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5333 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 05:57:02 +00:00
kasperl@chromium.org
a342aa03d5 Add position information for compares, binary ops, and count
operations.
Review URL: http://codereview.chromium.org/3120027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-24 13:51:23 +00:00
vitalyr@chromium.org
01e0e6c662 Ported string call IC-s to x64.
Review URL: http://codereview.chromium.org/3156045

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-24 13:39:29 +00:00
kasperl@chromium.org
46c0c0f44f Optimize 'typeof <expr> == <string literal>' in the full codegen.
Review URL: http://codereview.chromium.org/3110034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5326 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-24 11:41:26 +00:00
kasperl@chromium.org
7b51dc7edb Cleanup the AST code by removing unused parts and get rid of the
flow graph code completely. Add new AST node for null compares
and use it to make the full codegens better at generating code
for null comparisons.
Review URL: http://codereview.chromium.org/3146037

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-24 07:26:49 +00:00
lrn@chromium.org
0d12f8f4e5 Fixed remaining bugs in COW-regexp-results.
Review URL: http://codereview.chromium.org/3197011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5322 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-23 13:58:56 +00:00
kasperl@chromium.org
d0bdc7956e Simplified the full codegens by removing the Expression::kTestValue
and Expression::kValueTest. At the same time, prepare the code for
keeping track of fall through labels to avoid unnecessary jumps.
Review URL: http://codereview.chromium.org/3152042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5320 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-23 12:55:29 +00:00
ricow@chromium.org
2f8af4f0a4 Fix bug in 64 bit codegen causing us to always go slowcase in apply.
After introducing the direct instruction pointer in functions the
CallApplyLazy method was changed on all platforms. The change made to
the 64 bit version was wrong, not using the right operand for the code
comparisons always forcing us into slow case.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5317 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-23 11:21:09 +00:00
lrn@chromium.org
0210df5848 Use Copy-on-write arrays for cached regexp results.
Review URL: http://codereview.chromium.org/3158020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5310 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-20 09:37:22 +00:00
ricow@chromium.org
2982f5e320 Change code pointer in function objects to a pointer to the first
instruction.

By changing the pointer to the code object to a pointer to the first
instruction we can call directly this instruction directly instead of
looking up the address through the code object.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5309 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-20 07:10:18 +00:00
vitalyr@chromium.org
3202df6c69 Copy-on-write arrays.
Object model changes
----------------------------------------
New fixed_cow_array_map is used for the elements array of a JSObject
to mark it as COW. The JSObject's map and other fields are not
affected. The JSObject's map still has the "fast elements" bit set. It
means we can do only the receiver map check in keyed loads and the
receiver and the elements map checks in keyed stores. So introducing
COW arrays doesn't hurt performance of these operations. But note that
the elements map check is necessary in all mutating operations because
the "has fast elements" bit now means "has fast elements for reading".
EnsureWritableFastElements can be used in runtime functions to perform
the necessary lazy copying.

Generated code changes
----------------------------------------
Generic keyed load is updated to only do the receiver map check (this
could have been done earlier). FastCloneShallowArrayStub now has two
modes: clone elements and use COW elements. AssertFastElements macro
is added to check the elements when necessary. The custom call IC
generators for Array.prototype.{push,pop} are updated to avoid going
to the slow case (and patching the IC) when calling the builtin should
work.

COW enablement
----------------------------------------
Currently we only put shallow and simple literal arrays in the COW
mode. This is done by the parser.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5275 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-16 16:06:46 +00:00
sgjesse@chromium.org
e61bd7bd26 ARM: backend opt for ToBoolean: JIT code generation for ToBool
Upgraded the CodeGenerator::ToBoolean() function in the ARM backend to use complete JIT code generation and not make runtime calls to ToBool (when VFP is enabled). 

This change also includes the vcmp VFP instruction that supports a constant 0.0 as the second operand. 

Patch by Subrato K De <subratokde@codeaurora.org>



git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5267 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-16 07:52:49 +00:00
peter.rybin@gmail.com
6fa44eb979 LiveEdit: implement stack manipulations for x64
Review URL: http://codereview.chromium.org/3120011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-13 13:54:28 +00:00
ager@chromium.org
3e936b547a Remove experimental fast-codegen. We are no longer working on this
approach.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5259 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-13 09:07:09 +00:00
sgjesse@chromium.org
8e0cd6db8a Handle overwriting valueOf on String objects correctly when adding
This adds a check to the fast case string add to ensure that the String object still have the default valueOf function. The default valueOf is sitting on a hidden prototype of String.prototype.

Before using the fast case valueOf the object is checked for a local valueOf property. For slow case objects this check always reports true (the dictionary is not probed, so valueOf might be there) and for fast case objects the descriptor array is checked for the valueOf symbol (just liniar scan). After that the prototype is checked for beeing the initial value of String.prototype. If this all pass (that is the default valueOf is still in place) this result is cached on the map making the check fast the next time.

This is only implemented in the optimizing compiler, as the two usages of %_IsStringWrapperSafeForDefaultValueOf is never hit by the full compiler.

I will port to x64 and ARM when this has been reviewed for ia32.

I will remove the performance counters prior to final commit.

BUG=http://code.google.com/p/v8/issues/detail?id=760
TEST=test/mjsunit/regress/regress-760-1.js
TEST=test/mjsunit/regress/regress-760-2.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-12 13:43:08 +00:00
vegorov@chromium.org
28f9412cbd Generalize virtually dispatched scavenger to virtually dispatched specialized visitors.
Review URL: http://codereview.chromium.org/3066044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 14:30:14 +00:00
lrn@chromium.org
fb039823ce X64: Make SmiCompare use the Smi-register when possible.
Review URL: http://codereview.chromium.org/3104007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 14:23:12 +00:00
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
sgjesse@chromium.org
fcfe6d74d9 Minor change to for-in
Return (smi) 0 instead of object null from the FILTER_KEY builtin.

Add a test which tests keys being deleted during for-in.
Review URL: http://codereview.chromium.org/3170004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5243 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 13:46:10 +00:00
lrn@chromium.org
abcf1012c6 Allow compiling with strict aliasing enabled on GCC 4.4.
Patch by Jay Freeman.
Fixes issue 463.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5237 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 10:52:34 +00:00
ricow@chromium.org
36e5743674 Put direct code pointers into JSFunction objects. This is a first step
in allowing more flexible compilation and to simplify builtins lookup. 

This changes a number of places where code objects are assigned to
SharedFunctionInfo objects to also assign this code object to the
JSFunction. In addition, the code flushing is changed slightly to
accomodate this (we need to flush the code from functions pointing to
SharedFunctionInfo objects that has already been flushed).


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5233 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 08:12:53 +00:00
lrn@chromium.org
53e22e386c Create a new RegExp object for every evaluation of a RegExp literal.
Changes necessary to following ES5 semantics and matching Safari - in ES3
the same RegExp object was generated by each evaluation of the RegExp literal.
Fixes bug 704.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5198 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-06 13:04:27 +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
bed254fac9 Do not apply JS_RETURN and DEBUG_BREAK_SLOT relocations on x64.
Improve tests for debug API to check behavior of JS_RETURN and DEBUG_BREAK_SLOT relocations.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5180 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 13:38:27 +00:00
vegorov@chromium.org
2ba27d2201 Add RelocInfo::DEBUG_BREAK_SLOT to RelocInfo::kApplyMask on ia32/x64 to ensure that debug break slots get relocated correctly during compacting GC.
Review URL: http://codereview.chromium.org/3058048

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5178 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 11:39:01 +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
whesse@chromium.org
d25d40aa5c Modify polymorphic keyed load IC stub to load cached properties from the property array of a fast-case JSObject.
Review URL: http://codereview.chromium.org/3053042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5175 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 10:45:07 +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
vegorov@chromium.org
4a2f05ce35 Fix issue 806.
Ensure that we are not using r12 as a receiver in inlined NamedStore code.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-02 09:14:44 +00:00
peter.rybin@gmail.com
a9958afeee Roll over again fixed 3029033 Fix 'step in' after live edit stack manipulation
Review URL: http://codereview.chromium.org/3066018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5160 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-30 11:58:43 +00:00
peter.rybin@gmail.com
84cf5ca5cb Roll back all step-in-fix-related changes
Review URL: http://codereview.chromium.org/3012035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-29 21:46:19 +00:00
peter.rybin@gmail.com
16709ee695 Fix 'step in' after live edit stack manipulation
Review URL: http://codereview.chromium.org/3029033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5150 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-29 16:40:14 +00:00
podivilov@chromium.org
52762e4c59 Breakpoint position should be inside function body.
Review URL: http://codereview.chromium.org/2883042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-28 13:02:03 +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
lrn@chromium.org
cf21615bd9 X64: Fix order of operands on movq(reg, xmm).
Fixes bug 792, and the Transcendental cache is the only use of this operation.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-27 12:02:21 +00:00
ager@chromium.org
79e332010a Fix aliasing problem in inlined stores on x64 and ia32. The receiver
and the value can share a register. We need to remove this aliasing
before modifying the registers.

I haven't managed to generate a stand-alon test case for this
yet. I'll do that as a separate change. This was found while loading
Wave.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-23 11:55:03 +00:00
whesse@chromium.org
e8c0a459a9 Fix bug in r5123, Comparison(), by unusing results before unconditional jump to smi comparison JumpTarget.
Review URL: http://codereview.chromium.org/3026019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-23 11:20:59 +00:00
whesse@chromium.org
8bb47c1939 Use static type information when creating the inlined code for comparison operators.
Review URL: http://codereview.chromium.org/3017025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-23 09:05:46 +00:00
whesse@chromium.org
9deeec0b08 Change asserts to STATIC_ASSERT if they can be checked at compilation time. Just in the codegen-xxx.cc files on all platforms.
Review URL: http://codereview.chromium.org/3017018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5121 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-23 08:25:48 +00:00
ager@chromium.org
afa73d3907 Fix Win64 build.
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/3017024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-22 09:01:00 +00:00
ager@chromium.org
dc45fcb232 Port inline in-object property stores from ia32 to x64.
Review URL: http://codereview.chromium.org/3008017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5115 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-22 06:31:49 +00:00
whesse@chromium.org
8105e9baa3 Remove VirtualFrame::CallStoreIC(void) and CallCommonStoreIC from virtual-frame-x64.cc. Make implementations of CallStoreIC(key, is_contextual) and CallKeyedStoreIC() the same on x64 and ia32. Make ia32 and x64 implementations more alike by moving some functions and changing comments.
Review URL: http://codereview.chromium.org/3060002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 15:16:01 +00:00
whesse@chromium.org
9174700dca Add EmitKeyedStore and EmitKeyedPropertyAssignment to x64. Removal of Reference class from VisitAssignment complete on all platforms.
Review URL: http://codereview.chromium.org/3028015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 11:52:57 +00:00
whesse@chromium.org
fe02d5e25f Add EmitNamedStore and CallStoreIC(name, is_contextual) to x64 platform.
Review URL: http://codereview.chromium.org/3050008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5108 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 10:31:52 +00:00
whesse@chromium.org
6612b98dcf Add EmitSlotAssignment to x64 platform.
Review URL: http://codereview.chromium.org/2878042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 08:50:57 +00:00
ager@chromium.org
c9c7f8834e Inline in-object property stores on ia32 when in loop and not in top-level code.
Review URL: http://codereview.chromium.org/3046006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5105 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 06:59:34 +00:00
whesse@chromium.org
54f68eacbf Stop pushing arguments onto the stack in CompareStub until just before calling runtime.
This is a fixed version of change 5097, which had the problem that LoadFloatOperands tried to load the arguments from the stack.
Review URL: http://codereview.chromium.org/3040010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5103 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-20 12:41:43 +00:00
whesse@chromium.org
24ca3eddd7 Revert 5097 on ia32 platform until problem is diagnosed.
Review URL: http://codereview.chromium.org/3018009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5098 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-19 14:26:51 +00:00
whesse@chromium.org
96a7cc4a38 Delay the pushing of arguments until just before calling runtime in CompareStub.
This will allow jumps to runtime that skip useless tests.
Review URL: http://codereview.chromium.org/3016004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-19 13:35:41 +00:00
ricow@chromium.org
4957326521 Refactor type checks in v8natives.js and runtime.js.
This includes adding a new inline IsSpecObject method to the code
generator.  The old approach was somehow ineffecient since we would
call both IsObject, IsUndetectable and IsFunction to determine if
something was an object according to the spec. This change introduces
a new macro that determines if something is an object according to the
spec (and this does not include null). 

This change also corrects a few places where undetectable objects was
not allowed even when they should be (priorly they would use only
IS_SPEC_OBJECT_OR_NULL, which would return false on an undetectable
object, the new IS_SPEC_OBJECT returns true on an undetectable object.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-16 11:21:08 +00:00
whesse@chromium.org
1f85eccb24 Fix compilation errors on X64. Error from r5080 is constructor Operand(register) with too few arguments, while constructing a dummy return value in unreachable code to avoid compiler errors. Also added explicit cast from intptr_t to int in profile-generator.cc to avoid compiler warnings, introduced in r5078.
Review URL: http://codereview.chromium.org/3030002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5084 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-16 08:20:39 +00:00
whesse@chromium.org
5794e68f76 Remove unnecessary formatting differences between ia32 and x64 code generators. Mainly just typographical changes.
Review URL: http://codereview.chromium.org/3023001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5080 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-15 14:31:49 +00:00
whesse@chromium.org
dd06f4f102 Avoid a smi check when comparing an unknown to a constant smi for equality on ia32 and x64 platforms.
Review URL: http://codereview.chromium.org/2897013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5077 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-15 10:34:08 +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
whesse@chromium.org
cb1eedd269 Fix error in x64 fast smi loops, change 4998.
Review URL: http://codereview.chromium.org/2925012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5069 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-14 13:22:47 +00:00
ager@chromium.org
6744793c90 Landing for Rodolph Perfetta.
Allow compareStub on ARM to take register in reverse order optionally.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/2850046/show

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5059 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-13 20:54:06 +00:00
kaznacheev@chromium.org
0243bc875c Move serialized scope info from Code object to SharedFunctionInfo.
The scope info is now stored in a FixedArray referenced from SharedFunctionInfo.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5056 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-13 13:06:33 +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
whesse@chromium.org
20d4c6d52d Fix compilation error on 64-bit MacOS V8 compilation. ASSERT_EQ macro needs unambiguous similar integer types as arguments.
Review URL: http://codereview.chromium.org/2982005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-13 08:55:06 +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
whesse@chromium.org
4329a58b1c Code cleanup: reorder functions in codegen-x64.cc to agree with the order in codegen-ia32.cc. If svn blame shows this change, run svn blame on the previous version of the file to find the actual author of the lines.
Review URL: http://codereview.chromium.org/2955004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-09 13:20:12 +00:00
erik.corry@gmail.com
5bc0522ad4 Second half of number alloc change accidentally omitted from
last change.
Review URL: http://codereview.chromium.org/2919001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5039 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-08 13:50:13 +00:00
erik.corry@gmail.com
c205ffe05c Add number allocation call to runtime.cc instead of misusing
UnaryMinus.
Review URL: http://codereview.chromium.org/2899004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5038 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-08 13:16:51 +00:00
erik.corry@gmail.com
118a421067 Simplify the transitions in the Binary Op ICs. Now a single call
to the runtime will both patch in the more specialized binary op
stub and calculate the answer.  This eliminates the need to call
both the rest of the binary op and the patching runtime call.  The
runtime routines are altered to be more agressive in returning
Smis so we don't get spurious heap numbers as inputs to binary ops
while we are patching the binary op ICs.
Review URL: http://codereview.chromium.org/2843049

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5026 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-06 12:56:55 +00:00
erik.corry@gmail.com
8da222b010 Specialize GenericUnaryStub so that it knows whether it needs to
take negative zero into account.
Review URL: http://codereview.chromium.org/2850043

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5018 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-05 11:03:16 +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
lrn@chromium.org
04da7b90c9 X64: Added register holding Smi::FromInt(1).
Don't use r15 for anything any more.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-02 14:09:35 +00:00
whesse@chromium.org
8afef876dd Fix problem in r4998. Initialize target of break and continue in fast smi loop on X64.
Review URL: http://codereview.chromium.org/2830033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-01 16:00:51 +00:00
whesse@chromium.org
94ae008739 Let relational comparison operators quickly compare a string with itself.
Review URL: http://codereview.chromium.org/2802028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5000 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-01 15:18:07 +00:00
lrn@chromium.org
59f2b6c825 X64: Made simpler version of fast-smi-loop code.
It avoids the overflow check on the increment.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4998 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-01 13:19:32 +00:00
sgjesse@chromium.org
bbb2648464 ARM: Fix GC bug with previous change
The change in r4990 contained a bug in Math.pow. One of the arguments for the call to runtime where clobbered if allocation of the heap number for the result failed.

Caught by a couple of Mozilla tests which does a lot of calls to Math.pow.

Fix presubmit error in x64.
Review URL: http://codereview.chromium.org/2847037

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4993 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-30 13:39:03 +00:00
whesse@chromium.org
b122fbd363 Decide that different detectable objects are not equal without calling runtime, on all platforms.
Review URL: http://codereview.chromium.org/2805046

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4992 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-30 13:24:47 +00:00
ager@chromium.org
6044b33766 Implement IC for storing to dictionary case objects.
The IC stub is completely generic, so there will only be one such stub
in the system.

Added a new overloaded version of the macro assembler RecordWrite
method for cases where we have the address we store to computed up
front.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4991 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-30 12:27:49 +00:00
lrn@chromium.org
ade53c4282 X64: Make the ToBoolean inline code do even less if the value is known to be a smi.
Review URL: http://codereview.chromium.org/2834028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4978 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-29 14:15:34 +00:00
lrn@chromium.org
d539095bcb X64: A number of small tweaks.
Fix bug in disassembler output (using non-generic registers for memory operands in some cases).
Fix bug in movsxbq and make REX optional in movzx?q.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4977 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-29 14:03:11 +00:00
whesse@chromium.org
363060ca23 Ensure that ToPrimitive is called on all objects involved in comparisons <, <=, >, >=. Ensures that ToPrimitive is called when comparing an object to undefined. Fixes bugs on all platforms.
Review URL: http://codereview.chromium.org/2834022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4971 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-29 06:47:19 +00:00
whesse@chromium.org
8fda0670ef Remove not-both-smis optimization on FloatingPointHelper::LoadNumbersAsIntegers on X64 platform.
Review URL: http://codereview.chromium.org/2861031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4960 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-28 10:54:07 +00:00
lrn@chromium.org
49c4718443 Fix bug in CheckBothPositiveSmi macro.
Fix lint.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4952 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-25 12:31:49 +00:00
lrn@chromium.org
f0529878d1 Add special case of taking a substring that is the entire string to stub.
Review URL: http://codereview.chromium.org/2800027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4951 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-25 11:24:41 +00:00
whesse@chromium.org
667c5e84a1 Port optimization of comparison with a trivial LHS from ia32 to x64.
Review URL: http://codereview.chromium.org/2868028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 14:22:25 +00:00
whesse@chromium.org
d0a9f76261 Fix error in for-in on x64 platform using full compiler with keyed store IC.
BUG=v8:748

http://code.google.com/p/v8/issues/detail?id=748

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 14:02:36 +00:00
vitalyr@chromium.org
8ab6832203 Add "has fast elements" bit to maps and use it in inlined keyed loads.
A potential issue with this change is creating lots of maps when
objects flip between fast/slow elements modes.  We could add special
transitions to avoid this.  Yet testing this on our benchmarks, gmail,
and wave seems to indicate that this is not a real problem.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4941 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 13:56:35 +00:00
lrn@chromium.org
40d86c616c X64: Remove more fpu code. Unroll more local initialization loops.
Review URL: http://codereview.chromium.org/2815028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 09:03:49 +00:00
lrn@chromium.org
0dee9a7942 X64: Change some fpu operations to use XMM registers.
Review URL: http://codereview.chromium.org/2827022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4930 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 14:05:18 +00:00
lrn@chromium.org
a2fc244de2 X64: A bunch of small fixes.
Make push/pop use emit_optional_rex32.
Fix bug in disassembler (swapped name of comisd/ucomisd).
Use fstp in FCmp macro.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4928 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 11:48:30 +00:00
whesse@chromium.org
132fea7980 Use SSE2 registers when comparing identical heap numbers on X64.
Review URL: http://codereview.chromium.org/2850018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4927 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 09:21:32 +00:00
kaznacheev@chromium.org
927750571c Remove redundant checks in and around GenerateDictionaryLoad.
Similar or duplicate checks are scattered around the code before doing the dictionary load. 
Also the entire branch in GenerateCallNormal that handles global/builtin receiver is 
guaranteed to bail out from GenerateDictionaryLoad, so there is no point in generating it at all.

The purpose of the patch is:
- making C++ code more compact and transparent,
- not generating dead code. 

There is a tiny performance gain. The patch is ia32 only for now.

Please tell me if I am missing anything.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4926 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 09:10:21 +00:00
lrn@chromium.org
2bd8d3323b X64: Change strategy for spilling to match ia32. It's just better.
Align deferred code blocks to 16-byte address boundaries.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-22 10:07:57 +00:00
lrn@chromium.org
324a6df321 X64: Fix bug in LoadSSE2NumberOperands. It can be called with two smis!
Remove some unused labels.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4906 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 12:39:37 +00:00
lrn@chromium.org
ed55948864 X64: Reapply fix for allocating HeapNumber results for >>>.
Also skip case where both number arguments are smis.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4905 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 11:21:36 +00:00
whesse@chromium.org
48f2458bd9 Avoid redundant smi check in x64 loading of floats into SSE2 registers.
Review URL: http://codereview.chromium.org/2862004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4903 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 09:04:44 +00:00
lrn@chromium.org
c94c39a667 X64: Load HeapNumberMap once in BinaryOpStub, and reuse it.
Review URL: http://codereview.chromium.org/2819012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 08:51:44 +00:00
lrn@chromium.org
d8bc7a9436 X64: Make more computations happen on 32-bit values instead of on smis.
Review URL: http://codereview.chromium.org/2816014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-18 12:55:04 +00:00
vitalyr@chromium.org
3cafa65462 Track ascii-ness of data in externalized strings.
If a two-byte string only contains ascii characters, then we can save
memory when flattening a cons string containing it. Similarly we can
use this in Array.prototype.join implementation. To track this a new
bit is added to instance type. This bit is used as a hint in generated
code and in runtime functions.

To enable testing a new V8 extension is added controlled by
--expose-externalize-string flag.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4894 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 16:19:28 +00:00
lrn@chromium.org
26e692af2f X64: Change some smi operations to work on untagged integers instead.
Use direct reading and writing of integers from Smi fields.
Change RecordWrite with 0 offset to take untagged index instead of
smi tagged index.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4893 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 15:48:43 +00:00
ager@chromium.org
6702ace935 Move definition of NegateConditon from assembler*-inl.h files to
assembler*.h files to make clang happy. There was no reason for having
the definition in the -inl.h files in the first place.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 08:41:48 +00:00
ager@chromium.org
2043956c54 Remove the comisd instruction from the ia32 and x64 assemblers. We
should always use ucomisd.

Add missing pop from floating-point stack in case of allocation failure.
Review URL: http://codereview.chromium.org/2831009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4878 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 12:32:34 +00:00
lrn@chromium.org
14b216bd61 X64: Change overflow checks to only jump on overflow.
Costs an extra move because the result is calculated in a scratch register
and only moved to destination on non-overflow in order to preserve source
registers in case of overflow.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 12:11:22 +00:00
kaznacheev@chromium.org
b251f14782 Port KeyedCallIC implementation to x64 and ARM.
Also edited ic-ia32.cc for clarity and better formatting.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4873 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 10:03:47 +00:00
ager@chromium.org
ed0fc41723 Change hash computation for transcendental cache to use arithmetic
shifts. Leads to fewer collisions.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4872 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 08:29:25 +00:00
ager@chromium.org
6b474bc1d8 Another x64 build fix. Actually builds now.
KExponentBits -> kExponentBits.

TBR=erik.corry@gmail.com

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:55:37 +00:00
ager@chromium.org
1dbf2db4b6 Fix build by fixing a typo in codegen-x64.cc.
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/2824002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4858 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:43:00 +00:00
ager@chromium.org
9a34337066 Remove direct reference from builtins code to global object. Load the
global object through the context instead.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:08:39 +00:00
whesse@chromium.org
317dcabe84 Change tests for string type in RegExpExecStub on all platforms.
Review URL: http://codereview.chromium.org/2772004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4854 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 10:21:24 +00:00
ager@chromium.org
89ffd6c2f2 Implement transcendental cache probing in generated code on ARM.
Fixed hash code computation on ia32 and x64 to match the runtime
system (change arithmetic shift right to logical shift right).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-11 10:18:44 +00:00
whesse@chromium.org
ab65809a62 Use static type information in ConstantIntBinaryOperation on x64.
Review URL: http://codereview.chromium.org/2754004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-10 14:37:49 +00:00
sgjesse@chromium.org
e045ca6898 Better handling of stepping out of a function
With the change in r4820 all return statements are now breakable like any statement, so stepping will stop before the return statement actually returning from a function. With this change the position when breaking in the function return (after executing the return statement) will be the actual end of the function. At this point the return value is available as it saved to the stack by the debug break at return handling. Added information on the actual value returned from the function to the debugger.
Review URL: http://codereview.chromium.org/2783002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4835 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-10 09:02:16 +00:00
whesse@chromium.org
e1e4d985f9 Use static type information on x64 in LikelySmiBinaryOperation.
Refactor check for smi operands, using type information, on ia32 and x64.
Review URL: http://codereview.chromium.org/2771001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-09 11:15:54 +00:00
sgjesse@chromium.org
8227208d34 x64: Fix code to return from debug break slot
On x64 the return from debug break slot did not pop off the return address.

TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2731002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-08 12:50:42 +00:00
sgjesse@chromium.org
baf100fc48 Add parenthesis around '&&' within '||'
Warning by some gcc versions. Adding the parenthesis made the condition correct.

TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2725003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4821 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-08 12:20:24 +00:00
sgjesse@chromium.org
634fb9152c More precise break points and stepping when debugging
Added support for more precise break points when debugging and stepping. To achieve that additional nop instructions are inserted where breaking would otherwise be impossible. The number of nop instructions inserted are sufficient to make place for patching with a call to a debug break code stub. On Intel that is 5 nop's for 32-bit and 13 for 64-bit. Om ARM 3 nop instructions (12 bytes) are required.

In order to avoid inserting nop's in to many places a simple ast checker have been added to check whether there are breakable code in a statement or expression. If it is possible to break in an expression no additional break enabeling code is inserted.

Added break locations to the true and false part of a conditional expression.

Added stepping tests to cover more constructs.

These changes are only in the full compiler.

Changed the default value for the option --debugger in teh d8 shell from true to false. The reason for this is that with --debugger turned on the full compiler will be used for all code in when running d8, which can be unexpeceted.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4820 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-08 12:04:49 +00:00
vegorov@chromium.org
53923e9233 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
2010-06-07 09:36:30 +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
ager@chromium.org
a40569e5a0 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
2010-06-07 07:12:00 +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
ebc21fc958 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
2010-06-02 14:37:47 +00:00
sgjesse@chromium.org
33973b7d13 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
2010-06-01 21:11:38 +00:00
vitalyr@chromium.org
26be30912d 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
2010-06-01 14:08:19 +00:00
whesse@chromium.org
019b8c4511 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
2010-05-31 13:26:12 +00:00
lrn@chromium.org
1be589d844 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
2010-05-28 08:37:44 +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
lrn@chromium.org
19dc4f4fd9 Revert try-commit.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 12:23:46 +00:00