Commit Graph

330 Commits

Author SHA1 Message Date
deanm@chromium.org
946c2e5027 Remove two cases of needlessly jumping to the next instruction. The jump eliminator will remove these cases, but it's easy enough to just do statically in the code, and not require the eliminator to do it at runtime.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-28 12:21:12 +00:00
deanm@chromium.org
5aa049e98d Remove ComparisonDeferred and inline the non-smi case. ARM is doing it's own thing here. This should cut down on code size, and open up two possiblities for short jump encoding.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@390 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-28 09:38:09 +00:00
erik.corry@gmail.com
062ef05ba6 Fix failing test caused by extra precision in register allocated fp values.
Review URL: http://codereview.chromium.org/5019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 23:14:43 +00:00
erik.corry@gmail.com
0f37bdb5fc Fix build breakage on ARM by removing IA32 flags
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@388 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 16:14:22 +00:00
erik.corry@gmail.com
aabe3ed736 Use -O9, tune for nocoma, assume at least a Pentium when generating code.
Review URL: http://codereview.chromium.org/4298

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 15:53:42 +00:00
christian.plesner.hansen@gmail.com
da96a860f0 Added new test type, message, to test error reporting.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 13:06:49 +00:00
erik.corry@gmail.com
0995097997 Fix stack check wraparound problem for ARM simulator.
Review URL: http://codereview.chromium.org/2926

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 12:11:35 +00:00
sgjesse@chromium.org
1a4da9714a Stack checks in generated code for function apply is now controlled
by the check-stack flag. Changed the condition code from greater to
above_equal as the SP should be unsigned (this matches the stack
check in function entry).
Review URL: http://codereview.chromium.org/4296

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 10:27:39 +00:00
olehougaard
0b02000de4 Adding comment to the fix of issue 95.
Review URL: http://codereview.chromium.org/5003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 10:25:14 +00:00
olehougaard
acffb377a8 Fix for issue 95.
Fixed QuickSort so it doesn't overflow the stack with non-reflexsive comparison functions.
Review URL: http://codereview.chromium.org/4297

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 09:15:02 +00:00
sgjesse@chromium.org
f2ac600e4b Mark test test-debug/ThreadedDebugging as flaky.
Review URL: http://codereview.chromium.org/5001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 07:57:11 +00:00
christian.plesner.hansen@gmail.com
2969145ba5 which it now does.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-26 03:44:09 +00:00
erik.corry@gmail.com
806c4d63c3 Introduce some checks to indicate that the benchmarks have run correctly.
This change affects the results by around 2% so the version number has been
bumped to 2 to avoid confusion.
Review URL: http://codereview.chromium.org/4401

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 13:48:27 +00:00
olehougaard
83da47e0d8 Tuning quick sort.
Tuning the quick sort algorithm to avoid degenerating to an n^2 algorithm when all elements are the same.
Review URL: http://codereview.chromium.org/4083

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@378 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 13:21:56 +00:00
christian.plesner.hansen@gmail.com
20e3e2f85f Added copyright headers to tests.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@377 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 13:14:23 +00:00
christian.plesner.hansen@gmail.com
041d20ffeb Fixed problem where the test framework would assume that .svn was a
test suite and then fail.


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@376 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 13:01:26 +00:00
christian.plesner.hansen@gmail.com
2d0c43ad09 - Added support for warnings on unused test rules.
- Added automatic loading of test suites


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@375 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 12:38:34 +00:00
olehougaard
69156911be Using quick sort for arrays.
Using quick sort in ArraySort instead of heap sort for better performance.
Review URL: http://codereview.chromium.org/4065

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@374 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 11:28:02 +00:00
ager@chromium.org
7f6e4473ca Update version string and ChangeLog. We are now working on version
0.3.4.
Review URL: http://codereview.chromium.org/4272

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@372 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 08:45:38 +00:00
bak@chromium.org
e05eba857e - Added a map cache for literal objects. This will
canonicalize maps for object literals. JSON objects
  with the same set of properties names will then
  share the same map.
  This reduces the amount of generated code associated 
  with object literals.
- Added a flag canonicalize_object_literal_maps.
  (default true)
- Changed the format of a function's literal array.
  Only the global context is now stored in the literal prefix.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@371 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 07:46:07 +00:00
ager@chromium.org
ff4e9ea134 Make sure that the body of the function created by calling Function is
on a line of its own.  This allows the body to be terminated by a
single-line comment.

Also, make sure to set the name of the function to anonymous after the
fact so that recursion through the name anonymous is not allowed and
so that global variables called anonymous are not shadowed.

This is a fix for http://code.google.com/p/v8/issues/detail?id=85
Review URL: http://codereview.chromium.org/4248

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-25 07:35:45 +00:00
deanm@chromium.org
222c7cd957 Don't defer the stack check failure code. It is a CallStub, which will be a single 5 byte call instruction. This should cause equivalent code size now, but opens up the opportunity to make one of the most common jcc's to use short encoding in the future.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-24 16:34:00 +00:00
feng@chromium.org
e048ec8c44 This is a fix of issue http://b/issue?id=1381845.
Check domain security on prototypes in for-in loop.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@368 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-24 15:47:34 +00:00
sgjesse@chromium.org
ef9b0a8e2f Added a profiling option (prof) to the SCons build. Currently
it just makes the linker generate a MAP file for the shell
sample on Windows.
Review URL: http://codereview.chromium.org/4064

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-24 08:47:39 +00:00
sgjesse@chromium.org
b0a79ce164 Added some peephole optimizaitions regarding push of immediate followed
by pop eax.
Review URL: http://codereview.chromium.org/4212

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 13:31:14 +00:00
deanm@chromium.org
d8eddaa0bd Enable string pooling in the VS release build. This saves 46k for a v8_shell_sample.exe, I didn't measure performance or the overall change to a Chromium build. I think this option should always make sense anyway, unless we're using some string constants incorrectly.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 12:32:43 +00:00
christian.plesner.hansen@gmail.com
16bfefe012 Fixed lint error.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@364 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 12:23:20 +00:00
kasperl@chromium.org
e4a82f2440 Move more functionality from CEntryStub to the helper
functions in the macro assembler.
Review URL: http://codereview.chromium.org/4402

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@363 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 12:21:54 +00:00
christian.plesner.hansen@gmail.com
6d47b29765 - Added new object type, RegExp, for regular expressions.
- Renamed some ::kSizes to ::kHeaderSizes to avoid confusion.


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 11:45:43 +00:00
kasperl@chromium.org
88c9fa5d42 Allow platforms (linux and win32) to not force 16-byte alignment
of activation frames (needed on Mac OS X).
Review URL: http://codereview.chromium.org/4211

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@361 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 10:06:58 +00:00
erik.corry@gmail.com
a9e4a68ef2 Parse /proc/self/maps lines better to handle variations between Linux kernels.
It seems noone has had time to file a bug on this.
Review URL: http://codereview.chromium.org/4210

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 08:56:12 +00:00
kasperl@chromium.org
9d30045d06 Refactored the code for entering and leaving exit frames (calls
from JavaScript to C++). Includes a few slight optimizations 
like keeping argv in a callee-saved register.
Review URL: http://codereview.chromium.org/4035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 08:19:26 +00:00
kasperl@chromium.org
ee7e7be35f Change the logging information for generated stubs to be
consistent with the other log events for generated code.
Review URL: http://codereview.chromium.org/4033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-23 07:33:08 +00:00
iposva@chromium.org
c2ffa52f09 Remove debugging code that snuck in with the ARM calling convention changes.
Thanks to Erik Corry for spotting this.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-22 16:00:56 +00:00
kasperl@chromium.org
5a2d74e2b4 Work around issue 80 by splitting strings from the environment
variables into lists before appending to them.
Review URL: http://codereview.chromium.org/3185

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-22 15:50:30 +00:00
sgjesse@chromium.org
8391b19b07 Refactor the enum RelocMode changing the naming scheme from lower case to
upper case. Moved it into the RelocInfo class together with the associated
is_xxx functions. Renamed is_xxx to IsXxx in the process.

Removed the exit_js_frame mode as it was no longer used.

Patch Set 2 renames RELOC_MODE_COUNT to NUMBER_OF_MODES and fixes a couple of lint errors.
Review URL: http://codereview.chromium.org/3186

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@354 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-22 13:57:03 +00:00
deanm@chromium.org
924f7b8491 In release, disable UNREACHABLE and make UNIMPLEMENTED and FATAL simpler, removing the file name and line numbers, so we carry around less data and can share more code.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@353 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-22 09:22:18 +00:00
kasperl@chromium.org
8c7550f99a Add compilation flags for optimizing samples built in release
mode. Remove /Ob2 /Oi /Oy from VS build because they are 
already enabled by /Ox.
Review URL: http://codereview.chromium.org/4012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-22 08:27:54 +00:00
sgjesse@chromium.org
354deb6fa1 Made the ARM port with simulator build and run on Windows.
The reason for the "ugly" definition of SScanF is that the Windows CRT does not have a vsscanf function making it difficult to add OS::SSprintF to platform.h.
Review URL: http://codereview.chromium.org/2988

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-19 12:35:15 +00:00
deanm@chromium.org
dc91b5f368 Avoid the KMP overhead for simple indexOf() operations. Will look into evaluating the best cutoff between a simple search and KMP in the future. This improves some simple operations ~1.5x.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@349 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-19 12:30:14 +00:00
deanm@chromium.org
6f5368146b Don't try an indexOf() when the search string is bigger than the string. The current code will spend a bunch of time trying to match, even though we should know a match is impossible.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-19 11:31:02 +00:00
deanm@chromium.org
ab377a3f42 TryFlatten is inlined, while Flatten is not. Make an optimization to avoid the call to Flatten when we're already flat. This gives me 5% on some simple indexOf experiments.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@347 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-19 11:06:35 +00:00
sgjesse@chromium.org
cc8fd0e527 Add assembler.h the the Visual Studio project file.
Review URL: http://codereview.chromium.org/2985

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@346 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-19 10:10:21 +00:00
kasperl@chromium.org
914611056a Fix lint issues.
Review URL: http://codereview.chromium.org/3144

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-18 13:42:39 +00:00
lrn@chromium.org
2816e8a899 Added fast-case for switch statement where all lables are constant Smi's in a limited range (IA32 only so far).
Implemented using a jump-table, for constant time lookup.


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@343 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-18 11:59:55 +00:00
ager@chromium.org
57e2aa1b26 Use null instead of undefined for deleted elements in code caches.
Update the lookup and update code for code caches to deal with deleted
elements.

Do not clear the code cache for the builtins object.  If there was a
matching element in the code cache, we would have hit the monomorphic
prototype failure case and removed it.
Review URL: http://codereview.chromium.org/3140

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@340 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-18 11:18:27 +00:00
kasperl@chromium.org
cb4ea56368 Fix ARM build by adding a dummy last_statement_position() accessor
to the assembler.
Review URL: http://codereview.chromium.org/2961

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-18 10:40:25 +00:00
ager@chromium.org
6a3d1868e4 Revert revision 331. The propagation of monomorphic prototype failure
information does not work.  In certains situations, it will keep
alternating between unrelated monomorphic states instead of going
megamorphic.
Review URL: http://codereview.chromium.org/2959

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@338 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-18 10:22:46 +00:00
sgjesse@chromium.org
d6ae7d4d04 Revert changes to src\assembler-arm.h which slipped into a previous checkin breaking the ARM build.
Review URL: http://codereview.chromium.org/2958

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@337 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-18 10:15:17 +00:00
sgjesse@chromium.org
b568d7a17b Defer the writing of the source position data to the relocation information
until a possible debug break location is reached. Currently this is call sites
with calls to code objects and JS return. Source position information in the
code therefore no longer refers to the "first" instruction generated for a
given source position (which was not the case defered code anyway) but to the
first break location after that source position was passed (again defered code
always start with source position information). This doesn't make a difference
for the debugger as it will always be stopped only at debug break locations.
However, this makes the life of the peep-hole optimizer much easier as many
oportunities for posh/pop eliminations where previosly blocked by relocation
information already written to the code object.

Two types of source positions are still collected. Statement positions indicate
the position of the start of the statement leading to this code and (plain)
positions indicate other places typically call sites to help indicate current
position in backtraces. The two different types of positions are also used to
distinguish between step next and step in.

Runs all the tests (including debugger tests) as before.

Moved the checking for the FLAG_debug_info to one place.

I will do the same changes to the ARM codegenerator in a seperate changelist.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-18 08:51:43 +00:00