sgjesse@chromium.org [Wed, 5 Jan 2011 13:47:53 +0000 (13:47 +0000)]
Misc debugger enhancements and bug fixes.
1. Added gdb style debugger commands (and their shortcuts) for d8.
These include:
- s[tep] : step into the current statement.
- s[tep]i[n]: step into the current statement with the minimum step.
- n[ext] : step to the next statement.
- fin[ish] : step out of the current function.
- cond : setting conditions on breakpoints.
- d[elete] : deletes breakpoints.
- en[able]|dis[able]: enables/disables breakpoints including
exception breakpoints.
- ignore : ignores a breakpoint for a specified period.
- inf[o] ar[gs] : info on arguments of the current function.
- inf[o] lo[cals] : info on local vars of the current function.
- inf[o] br[eakpoints] : info on breakpoints.
- l[ist] : similar to source, but allows the user to continually
dump subsequent lines of source code either in the
forward or backward direction.
- quit / exit / disconnect : terminates the remote debugger
session.
NOTE: Active breakpoints will automatically be disabled when
the remote debugger detaches. This allows v8 to continue to
run without worrying about a loss of a debugger session.
2. Added support for breaking the debugger by simply typing ENTER.
The break command is now optional.
3. Once the debugger is broken, the user can now just type ENTER
to repeat the last command. This is useful to functionality that
needs to be invoked repeatedly e.g. step, list.
4. Added more verbose descriptions in d8's help.
5. Fixed a line and column number offset bug in the listing of breakpoint
line and column numbers.
6. Added a gc command to allow GCs to be requested from the debugger
interface. The plumbing for requesting different types of GCs is
there, but the underlying implementation currently only triggers a
full mark-compact GC. The command also returns the before and after
sizes of the heap.
7. Added trace json, and flags commands that are not published in help.
trace json is used for tracing the debugger packets send from and
received by d8. flags is for setting v8 flags. These are useful for
people debugging v8 itself, but not necessarily users of v8.
8. Added the ability to enable and disable break on all / uncaught
exceptions in to d8.
9. Added a fix to prevent the Debugger Agent from being re-instantiated
if one already exists.
10. Added the ability to filter results of the script command by matching
text or numbers on the results.
11. Added v8 flags to enable/disable the sending of debugger BeforeCompile,
AfterCompile, and ScriptCollected events.
12. Fixed some undefined value bugs that resulted in v8 or the debugger
failing.
13. Added a few minor WEBOS__ customizations (analogous to ANDROID
customizations).
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/5980006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6180
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 5 Jan 2011 13:03:21 +0000 (13:03 +0000)]
Change a static_cast to BitCast
Hopefuly this will make the Win32 builder happy
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/6038007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6179
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 5 Jan 2011 12:31:31 +0000 (12:31 +0000)]
Add private members to lithium classes on X64. Add implementation file lithium-x64.cc.
Review URL: http://codereview.chromium.org/6015014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6178
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 5 Jan 2011 12:28:47 +0000 (12:28 +0000)]
Add partially-implemented TypeRecordingBinaryOpStub to x64 platform.
Review URL: http://codereview.chromium.org/6084010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6177
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 5 Jan 2011 12:06:32 +0000 (12:06 +0000)]
Fix comparison bug on ARM.
Retrieves the result of VFP comparison from the VFP status register.
BUG=none
TEST=none
Patch by Martyn Capewell from ARM Ltd.
Review URL: http://codereview.chromium.org/6020014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6176
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 5 Jan 2011 12:01:53 +0000 (12:01 +0000)]
Fix the build breakge on x64 and ARM after r6173
The instanceof changes was not fully ported to x64 and ARM.
Review URL: http://codereview.chromium.org/6031013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6175
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 5 Jan 2011 11:25:42 +0000 (11:25 +0000)]
Do not transform a/b into a * (1/b) in the parser for integer constants.
Strength reduction should be performed at a later stage. This
change avoid going to a double representation the case of
integer division.
Review URL: http://codereview.chromium.org/6044010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6174
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 5 Jan 2011 11:17:37 +0000 (11:17 +0000)]
Optimize instanceof further
If the instance of is performed against what is beliwed to be a constant global function inline the instance of check and have the call to the instanceof stub in deferred code. The inlined check will be patched by the instanceof stub when called from deferred code. This is indicated by the lithium instruction LInstanceOfKnownGlobal.
To help the patching the delta from the return address to the patch site is placed just below the return address in the edi slot of the pushad/popad ares. This is safe because the edi register (which is pushed last) is a temporary for the lithium instruction.
As the instanceof stub can call other JavaScript an additional marking for saving all double registers have been added.
Also tweaked the instanceof stub to produce true/false objects instead of 0/1 for the case with deferred code.
Review URL: http://codereview.chromium.org/5990005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6173
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Wed, 5 Jan 2011 09:34:45 +0000 (09:34 +0000)]
Add exception for test-deoptimization/DeoptimizeBinaryOperationDIV
under arm with crankchaft.
This test assumes that a specific function is always optimized when
running with crankshaft, but we do not yet support this on arm.
Review URL: http://codereview.chromium.org/6102002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6168
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 5 Jan 2011 09:11:20 +0000 (09:11 +0000)]
Prepare push to trunk. Now working on version 3.0.7.
Review URL: http://codereview.chromium.org/6006011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6167
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Wed, 5 Jan 2011 09:04:06 +0000 (09:04 +0000)]
Implement ARM lithium support for ObjectLiteral.
Review URL: http://codereview.chromium.org/6099006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6166
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Tue, 4 Jan 2011 14:48:25 +0000 (14:48 +0000)]
Implement Lithium ARM support for ArrayLiteral.
TBR=kasperl@chromium.org
Review URL: http://codereview.chromium.org/5988008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6165
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 14:35:34 +0000 (14:35 +0000)]
Fix presumbit error
TBR=karlklose@chromium.org
Review URL: http://codereview.chromium.org/6046012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6164
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Tue, 4 Jan 2011 14:35:01 +0000 (14:35 +0000)]
Remove unused policy from register allocator.
DefineSameAsAny is never used and currently does exactly the
same as DefineSameAsFirst.
Review URL: http://codereview.chromium.org/6025014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6163
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 14:32:54 +0000 (14:32 +0000)]
Set a fixed scratch register for ARM code generation
r9 is now set as a fixed scratch register for ARM code generation. removed some unneeded allocation of temporary registers and use the scratch register instead.
Review URL: http://codereview.chromium.org/5976014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6162
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 4 Jan 2011 13:59:34 +0000 (13:59 +0000)]
Allow getters and setters on JSArray elements.
This fixes bug 900
Review URL: http://codereview.chromium.org/5959009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6158
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 13:23:33 +0000 (13:23 +0000)]
Fix the Mac OS debug build
Review URL: http://codereview.chromium.org/6046010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6157
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 4 Jan 2011 13:14:39 +0000 (13:14 +0000)]
Fix tab in javascript file.
Review URL: http://codereview.chromium.org/6004009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6156
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Tue, 4 Jan 2011 13:02:51 +0000 (13:02 +0000)]
First part of lithium ARM port.
Implement LoadNamedField, CallConstantFunction, CmpMapAndBranch, JSArrayLength, BoundsCheck, IsNull, CallFunction, and CallStub in the ARM lithium codegenerator.
BUG=
TEST=
Review URL: http://codereview.chromium.org/6069010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6155
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 4 Jan 2011 12:19:55 +0000 (12:19 +0000)]
Don't let JSON parsed objects hit inherited setters.
Review URL: http://codereview.chromium.org/6101001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6154
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 12:14:10 +0000 (12:14 +0000)]
Add use_system_v8 option to gyp (off by default),
as discussed in http://groups.google.com/group/v8-users/browse_thread/thread/
33a69c51d8023ced
This will make it easier for Linux distributions
to ship with system-provided V8 library.
Patch by Pawel Hajdan, Jr. <phajdan.jr@chromium.org>
Review URL: http://codereview.chromium.org/6092006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6153
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 12:11:01 +0000 (12:11 +0000)]
Fix Windows compilation
Use strncpy_s instaad of strncpy to avoid warning.
Review URL: http://codereview.chromium.org/6056006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6151
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 4 Jan 2011 12:07:16 +0000 (12:07 +0000)]
Fix compile-problem in (currently) unused stand-alone preparser function.
Allow object initializers to define getters using string and number literals.
Review URL: http://codereview.chromium.org/5985010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6150
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 4 Jan 2011 11:36:20 +0000 (11:36 +0000)]
Add constraints verification to LAllocator::MarkAsCall().
Review URL: http://codereview.chromium.org/6069012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6149
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 11:28:17 +0000 (11:28 +0000)]
Fix presubmit error
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/6093006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6148
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 4 Jan 2011 11:25:59 +0000 (11:25 +0000)]
Fix bug that happens when the first non-ASCII character of a literal is at a power-of-two position.
Review URL: http://codereview.chromium.org/6044009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6147
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 11:02:58 +0000 (11:02 +0000)]
Addresses some performance regression in the GenericBinaryOpStub on ARM following Crankshaft introduction.
BUG=none
TEST=none
Patch by Rodolph Perfetta from ARM Ltd.
Review URL: http://codereview.chromium.org/5781010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6146
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 11:02:39 +0000 (11:02 +0000)]
Avoid using std::string in Max OS platform file.
Review URL: http://codereview.chromium.org/6001012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6145
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 10:25:06 +0000 (10:25 +0000)]
Fix presubmit error
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/6008010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6144
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 4 Jan 2011 09:50:35 +0000 (09:50 +0000)]
Cleanup of x64 code. Rearrange functions in ic-x64.cc to match order in ic-ia32.cc. Remove unused declarations, and move a constant to assembler-x64.h.
Review URL: http://codereview.chromium.org/6020012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6143
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 4 Jan 2011 09:27:46 +0000 (09:27 +0000)]
Export external array data accessors.
BUG=v8:1016
Review URL: http://codereview.chromium.org/6013011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6142
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 Jan 2011 09:09:50 +0000 (09:09 +0000)]
Added labelled thread names to help with some debugging activity. Right now,
the only platform that it works on is linux (using the prctl API to set the
names of the threads). Other platforms are setup to build properly if the
flag is set, but their thread names are not currently set.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6070009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6141
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 4 Jan 2011 09:02:53 +0000 (09:02 +0000)]
Reorder the functions in stub-cache-x64.cc, so they are in the same order as in stub-cache-ia32.cc.
Review URL: http://codereview.chromium.org/6085006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6140
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Mon, 3 Jan 2011 19:16:29 +0000 (19:16 +0000)]
Move first_artificial_register_ initialization to the right place.
Review URL: http://codereview.chromium.org/6009010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6139
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Mon, 3 Jan 2011 17:02:15 +0000 (17:02 +0000)]
Remember required register kind when creating artificial virtual register.
Review URL: http://codereview.chromium.org/6065010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6138
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Mon, 3 Jan 2011 16:57:46 +0000 (16:57 +0000)]
Fix a bug in deoptimization environments.
The function HEnvironment::SetExpressionStackAt did not update the
environment's history. This function is used to patch the bailout
environment for count operations and global function calls.
Reorganize class HEnvironment to make it fit V8's style a bit better
and to try to add some sanity to which C++ functions are intended to
be inlined.
Remove the flag --trace-environment which merely duplicated data in
the hydrogen.cfg file except without enough context to be useful.
BUG=1004
Review URL: http://codereview.chromium.org/5992011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6137
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 3 Jan 2011 14:59:12 +0000 (14:59 +0000)]
Remove RecordWriteStub from X64 and ARM platforms.
Review URL: http://codereview.chromium.org/5986014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6136
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 3 Jan 2011 11:39:22 +0000 (11:39 +0000)]
Use the macro assembler Set instead of explicit xor for clearing registers.
Review URL: http://codereview.chromium.org/6015011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6135
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Mon, 3 Jan 2011 10:51:34 +0000 (10:51 +0000)]
Simplify ScanJsonString.
Review URL: http://codereview.chromium.org/6009009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6134
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 3 Jan 2011 10:28:39 +0000 (10:28 +0000)]
Changed uncast -1 in unsigned context to use constant kSentinel.
Review URL: http://codereview.chromium.org/5993006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6133
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 3 Jan 2011 10:17:08 +0000 (10:17 +0000)]
Add more documentation to Context::New in the API header file.
Review URL: http://codereview.chromium.org/6043005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6130
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 3 Jan 2011 10:02:17 +0000 (10:02 +0000)]
Prepare push to trunk. Now working on 3.0.6.
Review URL: http://codereview.chromium.org/6005011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6129
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 3 Jan 2011 09:32:42 +0000 (09:32 +0000)]
Changed #define symbols in test to OBJECT_PRINT from PRINT_OBJECT
because this is actually what is being used.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6037015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6128
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 3 Jan 2011 08:13:37 +0000 (08:13 +0000)]
Landing for Martin Maly.
Fix Xcode project.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6127
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 3 Jan 2011 07:56:30 +0000 (07:56 +0000)]
Added context sensitive prompt for remote debugger. It now shows "> "
when the debuggee is running, and "dbg> " when the debuggee is stopped.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/5966004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6126
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 30 Dec 2010 19:30:42 +0000 (19:30 +0000)]
Optimize array-length and fast element loads.
1. Separating out the instance-type check from the array-length operation.
2. I also changed the bounds-check on keyed loads to use the length property
for JS arrays (like we do for array stores).
The new pattern should use less registers and allow more checks to be eliminated.
Review URL: http://codereview.chromium.org/5961016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6125
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Sat, 25 Dec 2010 14:14:16 +0000 (14:14 +0000)]
Don't emit a write barrier when storing a known old space value.
Review URL: http://codereview.chromium.org/6072009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6120
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Fri, 24 Dec 2010 14:44:15 +0000 (14:44 +0000)]
Force inlining of BodyVisitorBase::IteratePointers.
Review URL: http://codereview.chromium.org/6042007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6119
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
peter.rybin@gmail.com [Fri, 24 Dec 2010 02:44:35 +0000 (02:44 +0000)]
Fix variable conflict in nested for statement
Review URL: http://codereview.chromium.org/5961011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6118
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Thu, 23 Dec 2010 16:33:30 +0000 (16:33 +0000)]
Fix inlining of instanceof stub for ARM (r6093).
Review URL: http://codereview.chromium.org/6055006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6117
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 22 Dec 2010 20:14:19 +0000 (20:14 +0000)]
Change scanner buffers to not use utf-8.
Make preparser keep its symbol text itself instead of relying on the scanner.
Review URL: http://codereview.chromium.org/6075005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6115
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 22 Dec 2010 16:07:59 +0000 (16:07 +0000)]
Fix win64 build.
Review URL: http://codereview.chromium.org/6050005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6114
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 22 Dec 2010 15:45:48 +0000 (15:45 +0000)]
Do not turn source array elements into writable if doing Array.slice.
Array.slice doesn't mutate original array, so it's fine with read only data.
Plus nuke unnecessary cast.
Review URL: http://codereview.chromium.org/5972004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6113
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 22 Dec 2010 15:43:32 +0000 (15:43 +0000)]
Support load function prototype in hydrogen/lithium.
Review URL: http://codereview.chromium.org/6009005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6112
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Wed, 22 Dec 2010 13:19:25 +0000 (13:19 +0000)]
Introduce NUMBER_IS_FINITE macro to avoid ToNumber() conversion.
Review URL: http://codereview.chromium.org/5977006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6111
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 22 Dec 2010 13:04:47 +0000 (13:04 +0000)]
Refactoring out object printing functions into objects-printer.cc.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6083001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6110
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 22 Dec 2010 11:31:18 +0000 (11:31 +0000)]
Clean up is-ASCII checks.
Review URL: http://codereview.chromium.org/5963003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6109
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 22 Dec 2010 09:55:19 +0000 (09:55 +0000)]
Use Assembler::Set() to assign constants to registers in more places. Commit of codereview.chromium.org/6016007/ .
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6104
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 22 Dec 2010 09:49:26 +0000 (09:49 +0000)]
Fix a couple of cast errors for gcc-3.4.3. Patch by Ryan Dahl. codereview.chromium.org/5976006/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6103
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 21 Dec 2010 15:10:45 +0000 (15:10 +0000)]
Fix assert error in r6083 by allowing stub calls from TranscendentalCacheStub.
Review URL: http://codereview.chromium.org/6021004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6100
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 21 Dec 2010 13:24:23 +0000 (13:24 +0000)]
Avoid decoding overhead when allocating ascii strings.
The assumption is that most utf8 strings allocated are actually ascii
and that if they are not we will encounter a non-ascii char pretty
quickly.
Review URL: http://codereview.chromium.org/6072004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6099
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 21 Dec 2010 12:05:32 +0000 (12:05 +0000)]
Prepare push to trunk. Now working on version 3.0.5.
Review URL: http://codereview.chromium.org/6056003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6095
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 21 Dec 2010 11:21:04 +0000 (11:21 +0000)]
Fix for issue 1007.
The Hydrogen environment only tracks values for stack-allocated variables.
It is a precondition of HEnvironment::Lookup(variable) that variable is
stack-allocated. The check was missing at one call site.
Review URL: http://codereview.chromium.org/6034004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6094
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Tue, 21 Dec 2010 10:52:50 +0000 (10:52 +0000)]
Implement inlining of instanceof tests on ARM.
TBR=sgjesse
BUG=
TEST=
Review URL: http://codereview.chromium.org/6004005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6093
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 21 Dec 2010 10:51:50 +0000 (10:51 +0000)]
Fix leak of a global handle in Debug::Load().
Bootstrapper::CreateEnvironment() returns a global handle to the created context so there is no need to create another one explicitly.
BUG=v8:1006
Review URL: http://codereview.chromium.org/6048003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6092
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 21 Dec 2010 10:49:40 +0000 (10:49 +0000)]
Implement HeapIterator that skips over unreachable objects.
I'm using it when creating heap snapshots. I decided that it will
be more convenient to have it as a separate piece of code, instead
of embedding into the snapshot generator.
Review URL: http://codereview.chromium.org/6014004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6091
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 21 Dec 2010 10:25:51 +0000 (10:25 +0000)]
Ensure that the SSE2 TranscendentalCache stub calls GC if it runs out of memory in new space. Previously, it would just use an alternate algorithm, that did not cache the result.
Review URL: http://codereview.chromium.org/5996001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6090
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 20 Dec 2010 14:57:51 +0000 (14:57 +0000)]
Tweak quicksort loop to reduce number of compares slightly.
Review URL: http://codereview.chromium.org/6039002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6087
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 20 Dec 2010 14:42:05 +0000 (14:42 +0000)]
Fix error in r6083
Review URL: http://codereview.chromium.org/6026004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6086
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Mon, 20 Dec 2010 14:41:41 +0000 (14:41 +0000)]
Teach C++ ArraySlice builtin to deal with arguments object.
Array.prototype.slice.call(arguments, ...) idiom is pretty common (up to 97% of invocations
in GMail), so we'd better handle it efficiently too.
Review URL: http://codereview.chromium.org/6034003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6085
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Mon, 20 Dec 2010 14:20:43 +0000 (14:20 +0000)]
Allow 4 more fast properties for objects.
Review URL: http://codereview.chromium.org/6016003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6084
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 20 Dec 2010 13:52:14 +0000 (13:52 +0000)]
Add untagged double versions of Math.sin and Math.cos. Merge classes TranscendentalCacheStub and TranscendentalCacheSSE2Stub.
Review URL: http://codereview.chromium.org/5996002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6083
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 20 Dec 2010 13:18:47 +0000 (13:18 +0000)]
Fix GVN for polymorphic loads.
They must not be hoisted above the compare-map-and-branch.
Review URL: http://codereview.chromium.org/5971003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6082
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Mon, 20 Dec 2010 10:44:41 +0000 (10:44 +0000)]
Minor optimization in regexp parse.
Review URL: http://codereview.chromium.org/6014002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6081
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 20 Dec 2010 10:38:19 +0000 (10:38 +0000)]
1. Added support for object printing for release mode using the
objectprint=on (defaults to off) option (which defines OBJECT_PRINT).
2. Added the ability to print objects to a specified file instead of
just stdout.
3. Added a use_verbose_printer flag (true by default) to allow some
object printouts to be less verbose when the flag is false.
4. Fixed a bug in VSNPrintF() where it can potentially write into an
empty char vector.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/5998001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6080
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 20 Dec 2010 09:38:56 +0000 (09:38 +0000)]
Fix smi-comparison to use correct macros in X64-SwapElements.
Review URL: http://codereview.chromium.org/5967002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6079
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 17 Dec 2010 14:50:24 +0000 (14:50 +0000)]
Remove the atomic/thread safe stuff from the chunk table, since we don't
use cross thread synchronization in Crankshaft.
Review URL: http://codereview.chromium.org/5979001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6075
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Fri, 17 Dec 2010 14:16:00 +0000 (14:16 +0000)]
Extend code printing:
o Add --print-unopt-code to print unoptimized code before printing
optimized code based on it. This is useful to see the states of ICs
and the effects of code patching.
o Use debug function names in disassembly output.
Review URL: http://codereview.chromium.org/5959003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6074
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Fri, 17 Dec 2010 13:44:19 +0000 (13:44 +0000)]
Mark map-transition stores as map-changing instructions.
This prevents code motion from hoisting map-checks across such stores
which may result in unnecessary deoptimizations.
In the following example program we would move a map-check from the inner loop out before the outer loop which is not desirable:
function f() {
var o = {};
var j = 0;
o.a = 1;
do {
o.b = 6; // Map transition
for (var i=0; i<10; i++) {
o.a = o.b + i;
}
} while(++j < 1) {}
}
for (var i = 0; i < 1000000; i++) f();
Review URL: http://codereview.chromium.org/5991001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6071
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 17 Dec 2010 13:04:53 +0000 (13:04 +0000)]
When setting property on a context extension object do not inherit the
attributes from an existing property on a prototype object.
Review URL: http://codereview.chromium.org/5995002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6068
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 17 Dec 2010 12:45:27 +0000 (12:45 +0000)]
Adding Date::ResetCache() API so that the cache values in the Date object
can be reset to allow DST / timezone changes to be re-cached and reflected
in the Date object.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/5978001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6067
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Fri, 17 Dec 2010 12:31:42 +0000 (12:31 +0000)]
Allow rapid socket reuse on POSIX platforms.
Review URL: http://codereview.chromium.org/5990001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6066
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Fri, 17 Dec 2010 11:57:10 +0000 (11:57 +0000)]
Improve regexp split, replace and test.
Review URL: http://codereview.chromium.org/5959002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6065
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 17 Dec 2010 11:52:10 +0000 (11:52 +0000)]
Avoid comparing a pointer-to-member to NULL, even though C++ is supposed to support it.
Review URL: http://codereview.chromium.org/5988001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6064
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 17 Dec 2010 10:06:11 +0000 (10:06 +0000)]
Change quicksort pivot from random to median-of-three.
Tweak quicksort bailout parameter to minimize time.
Review URL: http://codereview.chromium.org/5962003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6063
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 17 Dec 2010 08:58:04 +0000 (08:58 +0000)]
Add a couple of missing includes.
Review URL: http://codereview.chromium.org/5899001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6062
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 17 Dec 2010 08:24:54 +0000 (08:24 +0000)]
Prepare push to trunk. Now working on version 3.0.4.
Also fix files because of missing prepare for push of version 3.0.2
which was pushed directly.
Review URL: http://codereview.chromium.org/5962002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6060
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 17 Dec 2010 07:52:20 +0000 (07:52 +0000)]
Fix 'Optimizations' typo in gyp file.
BUG=http://code.google.com/p/v8/issues/detail?id=998
Review URL: http://codereview.chromium.org/5970001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6059
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Fri, 17 Dec 2010 07:23:06 +0000 (07:23 +0000)]
Reduce number of iterations in new regression test, this times out on arm and the regression is hit with an order of magnitude less iterations.
Review URL: http://codereview.chromium.org/5963001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6058
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Thu, 16 Dec 2010 22:30:53 +0000 (22:30 +0000)]
Support loading constant functions in hydrogen.
Review URL: http://codereview.chromium.org/5878004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6057
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 16 Dec 2010 18:01:36 +0000 (18:01 +0000)]
Fix bugs in the range analysis for integers.
The overflow conditions were not correctly detected for
certain add, sub and mul instructions.
I replaced the previous code by using 64-bit arithmetic
to correctly identify overflows for *, + and -.
Review URL: http://codereview.chromium.org/5860009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6055
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Thu, 16 Dec 2010 17:45:26 +0000 (17:45 +0000)]
Use near labels in write barrier code.
Review URL: http://codereview.chromium.org/5939003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6054
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Thu, 16 Dec 2010 16:56:45 +0000 (16:56 +0000)]
Emit better code when pushing a constant.
Review URL: http://codereview.chromium.org/5884003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6053
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 16 Dec 2010 15:40:02 +0000 (15:40 +0000)]
A number of instructions use GVN but do not provide a comparison
function for the data. This leads to wrong results where operations
are wrongly assumed to have the same value as a previous (different)
operation.
Provide the data comparison functions.
BUG=995
Review URL: http://codereview.chromium.org/5898003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6052
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 16 Dec 2010 14:18:41 +0000 (14:18 +0000)]
Fix an issue discovered in regress-969.
When running with 10 stress runs we get polymorphic stores. This revealed
an incorrect bailout ID for the state following a polymorphic store. The ID
should be the internal ID of the assignment side-effect, not the ID of the
end of the expression.
Review URL: http://codereview.chromium.org/5885003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6051
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 16 Dec 2010 13:24:23 +0000 (13:24 +0000)]
Add flag for running with a non standard number of stress-runs.
This allows easy testing with more than 5/2 stress runs in
release/debug and will allow us to have a nightly run with e.g., 10
stress runs in debug mode.
Review URL: http://codereview.chromium.org/5903003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6050
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 16 Dec 2010 13:13:36 +0000 (13:13 +0000)]
Fix issue 977, occasional failure of the DeltaBlue benchmark.
Before, when we deoptimized after a branch we jumped to before the branch
was taken in the unoptimized code with a token value that indicated when
edge to take. There was a lot of machinery to track this value through the
short-circuit logical operations and logical negation, and to handle it
properly at inline function return sites. There was also machinery to
prevent incorrectly seeing this environment with the extra value never
actually materialized in the unoptimized code.
Instead, now we deoptimize directly to one of the targets of the branch.
Much but not yet all of the extra machinery has been removed or simplified.
The cost is that branching control structures (the looping statements, if
statements, conditional expressions, and the short-circuit binary logical
operations) need extra AST IDs to identify the branch targets.
Review URL: http://codereview.chromium.org/5908001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6049
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 16 Dec 2010 13:02:09 +0000 (13:02 +0000)]
Perform more aggressive time to NaN conversions. Our internal date
methods rely on the time values passed in being within a certain range
- not significantly larger than the the ECMA 262 specified time
range. When creating a time, always make it NaN if there is no way
that it can be within range even after UTC conversion.
Review URL: http://codereview.chromium.org/5905003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6048
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 16 Dec 2010 12:49:55 +0000 (12:49 +0000)]
Change DefaultString and DefaultNumber to match the spec required behavior.
Previously it did two reads of the .toString and .valueOf properties where
only one was allowed.
Review URL: http://codereview.chromium.org/5950001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6047
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Thu, 16 Dec 2010 12:26:04 +0000 (12:26 +0000)]
Fix presubmit errors
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6046
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00