ager@chromium.org [Mon, 9 Nov 2009 13:17:50 +0000 (13:17 +0000)]
Inline common case of one capture when using replace with a regexp and
a function.
Review URL: http://codereview.chromium.org/371065
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3248
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 9 Nov 2009 12:18:25 +0000 (12:18 +0000)]
Fix lint issue.
Review URL: http://codereview.chromium.org/379005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3247
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 9 Nov 2009 11:52:18 +0000 (11:52 +0000)]
Remove unnecessary buffer doubling and content copying.
Review URL: http://codereview.chromium.org/377006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3246
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 9 Nov 2009 10:30:33 +0000 (10:30 +0000)]
Fix SVN merge problem in the top-level compiler.
(Remove bailout on non-global declarations again)
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/372054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3245
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Mon, 9 Nov 2009 10:23:50 +0000 (10:23 +0000)]
Fixed breakage of test running when sputniktests not checked out.
Review URL: http://codereview.chromium.org/381002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3244
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Mon, 9 Nov 2009 10:01:23 +0000 (10:01 +0000)]
* Fix regexp benchmark regression where we were doing work to
make standard regexps like \s and . case independent.
* Make use of the fact that the subject string is ASCII only
when making character classes case independent.
* Avoid spending time making large ideogram or punctuation
ranges case independent when there is no case mapping anyway.
Review URL: http://codereview.chromium.org/378024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3243
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 9 Nov 2009 09:56:57 +0000 (09:56 +0000)]
Enable writes and reads of context slots in fast compiler.
Review URL: http://codereview.chromium.org/360054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3242
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 9 Nov 2009 09:43:24 +0000 (09:43 +0000)]
Add function literals that always require non-lazy compilation to the top-level compiler.
Review URL: http://codereview.chromium.org/371064
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3241
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Mon, 9 Nov 2009 09:31:57 +0000 (09:31 +0000)]
Added test runner for sputnik tests.
Review URL: http://codereview.chromium.org/372053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3240
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 6 Nov 2009 14:06:35 +0000 (14:06 +0000)]
Fix missing () on function call causing warning on some versions
of gcc.
Review URL: http://codereview.chromium.org/371020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3239
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 6 Nov 2009 13:48:33 +0000 (13:48 +0000)]
Keep natives source code in external strings instead of putting
it in regular flat strings that are part of the snapshot.
After this change we don't need libraries-empty.cc any more. In
this change libraries-empty.cc is just a the same as libraries.cc
and the scons build builds it but does not use it. We can move
in stages to a situation where it is not generated at all for all
the build systems that we have.
Review URL: http://codereview.chromium.org/360050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3238
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Fri, 6 Nov 2009 11:35:47 +0000 (11:35 +0000)]
Fixed problem where popping a handle scope after calling an accessor
would clobber the register holding the result.
Review URL: http://codereview.chromium.org/377004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3237
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 6 Nov 2009 11:15:20 +0000 (11:15 +0000)]
Fix bug 486, Cyrillic character ranges in case independent regexps.
http://code.google.com/p/v8/issues/detail?id=486
Review URL: http://codereview.chromium.org/361033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3236
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 6 Nov 2009 07:50:31 +0000 (07:50 +0000)]
Enable mksnapshot on ARM when cross-compiling using gyp
Review URL: http://codereview.chromium.org/351019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3235
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 5 Nov 2009 17:33:50 +0000 (17:33 +0000)]
Add support for all declarations in the top-level compiler:
Until now we only handled global declarations. This change
adds declarations of local variables, consts and functions.
Review URL: http://codereview.chromium.org/368005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3234
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 5 Nov 2009 17:25:50 +0000 (17:25 +0000)]
Remove an unused enumeration value.
Review URL: http://codereview.chromium.org/366030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3233
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 5 Nov 2009 16:21:27 +0000 (16:21 +0000)]
Fix a bad commit due to an svn merge error.
Review URL: http://codereview.chromium.org/368007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3232
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 5 Nov 2009 16:08:48 +0000 (16:08 +0000)]
Change the special handling of typeof comparisons to strings for
regular expressions to be consistent with typeof in other contexts.
Typeof regular expressions should now be 'function' in all contexts.
In the JS natives, IS_FUNCTION, IS_OBJECT, and IS_REGEXP return the
same answers as before.
Review URL: http://codereview.chromium.org/360053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3231
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Thu, 5 Nov 2009 15:12:36 +0000 (15:12 +0000)]
Made iteration of global handles more efficient on scavenges.
Review URL: http://codereview.chromium.org/355041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3230
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 5 Nov 2009 13:59:40 +0000 (13:59 +0000)]
Fix issue 493: Infinite loop when debug break is set when entering function.apply.
In the generated code for function.apply there was a loop checking the stack limit for interruption. This loop would call into the runtime system to handle interuption and keep running until there was no interruption. However if the interuption was debug break the runtime system would never clear the interruption as debug break is prevented in builtins are prevented and the assumption here was that returning with the debug break flag set would move execution forward.
Renamed initial_jslimit and initial_climit to real_jslimit and real_climit. Renamed a few external references related to the stack limit as well.
Exposed the real stack limit to generated code to make the stack check when entering function.apply use the real stack limit and not the stack limit which is changed to signal interruption.
Added the real stack limit to the roots array.
BUG=http://code.google.com/p/v8/issues/detail?id=493
TEST=cctest/test-debug/DebugBreakFunctionApply
Review URL: http://codereview.chromium.org/345048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3229
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 5 Nov 2009 13:27:21 +0000 (13:27 +0000)]
Rework the way we handle the fact that the ARM simulator uses a
separate JS stack.
In exception handling, we need to be able to compare addresses into
the JavaScript portion of the stack with the address of a C++ handler
on the stack. Since the stacks are separate on the simulator, we need
a JavaScript stack address corresponding to a C++ try catch handler in
order to perform valid address comparisons.
On the simulator, we now link the C++ try catch handlers indirectly
through the JS stack and use the JS stack indirection address for
comparisons.
JS C++
handler
[C++ address] <------ next_
\
\
\----> handler
[C++ address] <------ next_
On actual hardware the C++ try catch handlers continue to be directly
linked.
BUG=http://code.google.com/p/v8/issues/detail?id=271
Review URL: http://codereview.chromium.org/360004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3228
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 5 Nov 2009 12:45:53 +0000 (12:45 +0000)]
Make "typeof this" return object in fast compiler.
Review URL: http://codereview.chromium.org/366028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3227
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 5 Nov 2009 11:19:37 +0000 (11:19 +0000)]
Fix case where we treat an unaliased call to eval as an aliased call
to eval.
BUG=http://code.google.com/p/v8/issues/detail?id=496
Review URL: http://codereview.chromium.org/366027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3225
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 5 Nov 2009 10:38:26 +0000 (10:38 +0000)]
In the toplevel code generator, support local context allocation
provided that none of the parameters need to be copied into the
context.
Review URL: http://codereview.chromium.org/369003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3224
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 5 Nov 2009 10:24:20 +0000 (10:24 +0000)]
Removed (now) unused Token-lookup code.
Review URL: http://codereview.chromium.org/361026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3223
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 5 Nov 2009 10:15:25 +0000 (10:15 +0000)]
Implement typeof in fast compiler.
Review URL: http://codereview.chromium.org/354027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3222
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 5 Nov 2009 10:11:38 +0000 (10:11 +0000)]
Changed keyword token recognition to be done inline in the identifier scanner.
Review URL: http://codereview.chromium.org/360048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3221
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 4 Nov 2009 19:04:29 +0000 (19:04 +0000)]
Add support for debugger statement to top-level compiler.
Review URL: http://codereview.chromium.org/366004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3220
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 4 Nov 2009 18:39:44 +0000 (18:39 +0000)]
Fix a bug where if a non-lazily-compiled function is a candidate for
toplevel compilation and the toplevel compiler cannot handle the
function, we would erroneously signal a stack overflow instead of
falling back on the optimizing compiler.
Review URL: http://codereview.chromium.org/366005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3219
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 4 Nov 2009 17:59:24 +0000 (17:59 +0000)]
Obey the flag --lazy in the toplevel code generator.
There were two separate implementations of the function
'BuildBoilerplate' that is used to compile function declarations and
function literals. The implementations did not do exactly the same
thing. In particular, one ignored the flag --lazy.
Combine the two implementations.
Review URL: http://codereview.chromium.org/360011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3218
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 4 Nov 2009 16:55:24 +0000 (16:55 +0000)]
Sort tests to increase predictability of mozilla test runs
in the face of suspected python bugs. Also remove some
unused code.
Review URL: http://codereview.chromium.org/365001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3217
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 4 Nov 2009 15:24:11 +0000 (15:24 +0000)]
Fix ARM debug build
TBR=fschneider@chromium.org
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3216
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 4 Nov 2009 14:45:50 +0000 (14:45 +0000)]
Fix issue 491: constantpool dump violates ARM debugger assertion for return point
The generation of the return sequence is now protected from having the constant pool emitted inside of it in both compilers.
BUG=http://code.google.com/p/v8/issues/detail?id=491
TEST=test/mjsunit/regress/regress-491.js
Review URL: http://codereview.chromium.org/362003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3215
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 4 Nov 2009 14:33:37 +0000 (14:33 +0000)]
Fix compilation error in debug build for IA-32 and ARM.
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/361005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3214
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 4 Nov 2009 14:11:39 +0000 (14:11 +0000)]
Emitting the common return sequence in the top-level compiler in one function for each platform.
I factored out the code for emitting the return sequence since we had this code duplicated in the top-level compiler.
Review URL: http://codereview.chromium.org/354024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3213
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 4 Nov 2009 13:56:41 +0000 (13:56 +0000)]
Remove the typeof state threaded through the code generator. It was
used to signal that an expression was the immediate subexpression of
typeof, or (?) in the arm of a conditional expression itself in the
typeof state.
It was inconsistently consulted. It was not used for property loads,
but only for slot loads. This means that we matched the Webkit JSC
(not Spidermonkey) behavior for:
typeof(true ? x : y) // throws ReferenceError
and we matched the SpiderMonkey behavior (not JSC) for:
with ({}) { typeof(true ? x : y) } // ==> "undefined"
Now we are expected to match the JSC behavior in all cases.
Review URL: http://codereview.chromium.org/362004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3212
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 4 Nov 2009 10:04:22 +0000 (10:04 +0000)]
Fix xssue 492: ARM debug crash: mozilla/ecma/FunctionObjects/15.3.1.1-3
When the number of parameters times 4 (kPointerSize) to a function cannot be encoded in 12 bits the return sequence gets one more instruction. Changed the assertion to check for this case.
BUG=http://code.google.com/p/v8/issues/detail?id=492
TEST=test/mjsunit/regress/regress-492.js
Review URL: http://codereview.chromium.org/354028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3211
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Wed, 4 Nov 2009 09:19:30 +0000 (09:19 +0000)]
Hate. Hate. Hate.
Review URL: http://codereview.chromium.org/360005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3210
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Wed, 4 Nov 2009 08:51:48 +0000 (08:51 +0000)]
Reverting 3174. Aka reapplying 3150, 3151 and 3159. Aka api accessor
ics.
Review URL: http://codereview.chromium.org/341082
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3209
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 3 Nov 2009 21:00:43 +0000 (21:00 +0000)]
* Do a GC in mksnapshot to get rid of some extraneous junk.
* Make snapshot more compact by coding the tag and the space
in one byte. Contract some common sequences to one byte.
* Use back references only within one page. Index from the
start of the space otherwise.
* Serialize Smis as raw data rather than int-encoding them.
This takes a little more space but is faster.
Review URL: http://codereview.chromium.org/341079
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3208
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Tue, 3 Nov 2009 16:08:35 +0000 (16:08 +0000)]
Insert call to CodeForFunctionPosition in the ARM code generator.
(== SetFunctionPosition in the top-level compiler)
IA32 and X64 already do this at the beginning of CodeGenerator::gencode
Review URL: http://codereview.chromium.org/354026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3207
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 3 Nov 2009 14:48:59 +0000 (14:48 +0000)]
Begin using the top-level code generator for code that is inside
directly-applied function literals that are themselves compiled with
the top-level code generator.
The choice is guarded by a test that the function is anonymous (thus
not expected to be recursive) and not in a loop.
A compilation hint is set in the shared function info and used to make
the choice.
Review URL: http://codereview.chromium.org/341081
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3206
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Tue, 3 Nov 2009 12:53:30 +0000 (12:53 +0000)]
Marked mjsunit/apply as expected to fail on mac debug.
Review URL: http://codereview.chromium.org/351021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3205
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 3 Nov 2009 12:47:19 +0000 (12:47 +0000)]
Fix a latent bug in the top-level compilation of function calls.
Calls to a non-global variable would go through the "call to a global"
path, rather than the "call to an arbitrary (other) expression" path.
Review URL: http://codereview.chromium.org/355009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3204
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Tue, 3 Nov 2009 09:52:06 +0000 (09:52 +0000)]
Made rethrow test not depend on stack overflow behavior.
Review URL: http://codereview.chromium.org/345046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3202
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Tue, 3 Nov 2009 08:53:34 +0000 (08:53 +0000)]
Added TryCatch::ReThrow method.
Review URL: http://codereview.chromium.org/342078
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3201
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 2 Nov 2009 15:01:06 +0000 (15:01 +0000)]
Commiting changelist issue 348039 outside the codereview tool. Add comparisons to fast compiler
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3200
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Mon, 2 Nov 2009 14:12:48 +0000 (14:12 +0000)]
Add support for for loops to the toplevel code generator.
Review URL: http://codereview.chromium.org/340059
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3199
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Mon, 2 Nov 2009 13:30:24 +0000 (13:30 +0000)]
Add support for initialization block assignments in the toplevel code
generator, mimicing the behavior of the optimizing compiler.
Initialization blocks can only contain (thus begin and end) with a
property assignment in toplevel code.
Review URL: http://codereview.chromium.org/348038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3198
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 2 Nov 2009 12:21:43 +0000 (12:21 +0000)]
Don't use string slices when processing RexExp replace (re-apply r3153)
Re-apply r3153 with a fix for issue 490. Except for the change in line 1756 and the added test this change is identical to http://codereview.chromium.org/342015.
BUG=490
TEST=test/mjsunit/regress/regress-490.js
Review URL: http://codereview.chromium.org/341064
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3197
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 2 Nov 2009 12:04:35 +0000 (12:04 +0000)]
Support for function calls on an arbitrary expression that returns
a function in the top-level compiler.
e.g.
function f() { return (function() { return true; }) }
f()()
Review URL: http://codereview.chromium.org/346029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3196
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Mon, 2 Nov 2009 11:01:47 +0000 (11:01 +0000)]
Refactor the somewhat complicated code generation for assignments into
a platform-independent structure and a few platform-specific helpers
to do the heavy lifting.
Review URL: http://codereview.chromium.org/342073
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3195
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 2 Nov 2009 10:22:22 +0000 (10:22 +0000)]
Support for post-fix count operations (x++, x--) where x is a global
variable for the top-level compiler.
Review URL: http://codereview.chromium.org/342058
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3194
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 2 Nov 2009 10:17:12 +0000 (10:17 +0000)]
Add unary not operator to fast compiler.
Review URL: http://codereview.chromium.org/343057
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3193
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 2 Nov 2009 08:44:19 +0000 (08:44 +0000)]
Add conditional expressions (ternary choice operator) to fast compiler.
Review URL: http://codereview.chromium.org/340058
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3192
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
peter.rybin@gmail.com [Fri, 30 Oct 2009 16:38:37 +0000 (16:38 +0000)]
Report function source position via JSON protocol
Review URL: http://codereview.chromium.org/341024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3189
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 30 Oct 2009 15:34:09 +0000 (15:34 +0000)]
Implement new support for if statements in top-level code.
Review URL: http://codereview.chromium.org/346022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3188
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 30 Oct 2009 14:06:48 +0000 (14:06 +0000)]
Initial implementation of top-level compilation of expressions in test
context. Test contexts are used for the left subexpressions of
short-circuited boolean operators. The right subexpressions inherit
their expression context from the binary op expression.
Compilation of short-circuited operations in effect and test context
is straightforward:
effect(e0 || e1) =
test(e0, L0, L1)
L1: effect(e1)
L0:
test(e0 || e1, L0, L1) =
test(e0, L0, L2)
L2: test(e1, L0, L1)
Because the value of the first subexpression may be needed as the
value of the whole expression in a value context, we introduce a
hybrid value/test contest (the value is needed if true, but not if
false).
value(e0 || e1) =
value/test(e0, L0, L1)
L1: value(e1)
L0:
The compilation of value/test and test/value (introduced by boolean
AND) is:
value/test(e0 || e1, L0, L1) =
value/test(e0, L0, L2)
L2: value/test(e1, L0, L1)
test/value(e0 || e1, L0, L1) =
test(e0, L0, L2)
L2: test/value(e1, L0, L1)
Boolean AND is the dual. The AST nodes themselves (not their parents)
are responsible for producing the proper result (effect, value, or
control flow) depending on their context.
Review URL: http://codereview.chromium.org/339082
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3187
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 30 Oct 2009 11:32:42 +0000 (11:32 +0000)]
Add void operator to fast compiler.
Review URL: http://codereview.chromium.org/342055
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3186
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 30 Oct 2009 11:28:49 +0000 (11:28 +0000)]
Fix new snapshot compilation on ARM.
Review URL: http://codereview.chromium.org/349001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3185
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 30 Oct 2009 10:23:12 +0000 (10:23 +0000)]
Introduce a switch for the new snapshot code and switch
it on by default. Includes bug fixes for new snapshots.
Review URL: http://codereview.chromium.org/342054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3184
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Fri, 30 Oct 2009 10:22:31 +0000 (10:22 +0000)]
Support for calls on named and keyed properties in the fast compiler of the form:
o.x() and o[expr]()
other changes:
- Fix missing relocation info for StoreIC on global object.
- Generate only one common return sequence instead of always appending
"return <undefined>" at the end of each function: The first JS
return-statement will generate the common return sequence. All
other return-statements will generate a unconditional branch to the common
return sequence.
Review URL: http://codereview.chromium.org/340037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3183
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 30 Oct 2009 09:57:08 +0000 (09:57 +0000)]
Fix thinko in assertion.
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/343055
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3182
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 30 Oct 2009 08:36:46 +0000 (08:36 +0000)]
Move the Location class into the AST Expression class as a member.
Since it is (currently) only an enum, change it to an enum (for now).
Review URL: http://codereview.chromium.org/342035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3181
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Fri, 30 Oct 2009 07:56:38 +0000 (07:56 +0000)]
Support for property assignment in the fast compiler.
The code for .result = (b.y = 99) where b is a global variable is:
push [esi+0x17]
mov ecx,0xf5c229ad ;; object: 0xf5c229ad <String[1]: b>
call LoadIC_Initialize
nop
mov [esp],eax
mov eax,0xc6
mov ecx,0xf5c25c41 ;; object: 0xf5c25c41 <String[1]: y>
call StoreIC_Initialize
nop
mov [esp],eax
pop [ebp+0xf4]
There is still some room for improvement in the generated code.
Other changes:
- Replaced switch-statement in FastCodeGenerator::VisitProperty with DropAndMove(...)
- Do not emit nop after IC calls on ARM.
Review URL: http://codereview.chromium.org/347001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3180
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 29 Oct 2009 23:06:59 +0000 (23:06 +0000)]
Add a test which verifies that weak reference callbacks cannot be invoked while scavenging.
BUG=25819
Review URL: http://codereview.chromium.org/334043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3179
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 29 Oct 2009 14:33:51 +0000 (14:33 +0000)]
Prepare to push to trunk. We are now working on 1.3.19
Review URL: http://codereview.chromium.org/348010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3176
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 29 Oct 2009 13:58:04 +0000 (13:58 +0000)]
Rename the Location type tags to be consistent with our current naming
scheme for enumerations (eg, EFFECT => kEffect).
Remove the ability to move from one Location to another, which should
never be necessary.
Review URL: http://codereview.chromium.org/340034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3175
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 29 Oct 2009 13:17:11 +0000 (13:17 +0000)]
Reverting 3159, 3151 and 3150
TBR=christian.plesner.hansen@gmail.com
Review URL: http://codereview.chromium.org/343035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3174
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 29 Oct 2009 12:19:20 +0000 (12:19 +0000)]
Fix x64 build.
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/346012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3173
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 29 Oct 2009 11:55:03 +0000 (11:55 +0000)]
Add binary operations to fast compiler.
Review URL: http://codereview.chromium.org/342019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3172
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 29 Oct 2009 10:35:29 +0000 (10:35 +0000)]
Rename the kinds of locations to be consistent with the (codegen)
context of the expressions they label. Introduce an "unintialized"
location to catch failure to assign any location at all.
Changed the object literal initialization on ARM to use a Store IC in
the same cases where it did on the other platforms. This was required
because the location of the literal property name is given an
"unitialized" location.
Review URL: http://codereview.chromium.org/339045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3171
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 29 Oct 2009 07:31:23 +0000 (07:31 +0000)]
Reverting 3153
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/341031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3170
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 28 Oct 2009 14:30:55 +0000 (14:30 +0000)]
Prepare push to trunk. Now working on version 1.3.18.
Review URL: http://codereview.chromium.org/338063
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3166
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 28 Oct 2009 14:28:20 +0000 (14:28 +0000)]
ARM still not quite right with new serialization code.
Review URL: http://codereview.chromium.org/339043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3165
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 28 Oct 2009 13:51:30 +0000 (13:51 +0000)]
Issue 485: Fix leak of builtins object through call and apply functions.
Review URL: http://codereview.chromium.org/345007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3164
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 28 Oct 2009 13:25:40 +0000 (13:25 +0000)]
In the toplevel compiler, shift the responsibility of assigning a
location to an Expression AST node from the node's parent to the node
itself.
This allows an inherited code generation context from a parent node to
be passed arbitrarily far down the tree (eg, the subexpression of a
unary not is in the same context as the unary expression itself, the
then and else subexpressions of the ternary operator are in the same
context as the whole expression, and so forth).
We do not yet take advantage of this in the backend (eg, the right
subexpression of short-circuited OR is still compiled by using the
parent's destination location, rather than the subexpression's
itself).
Review URL: http://codereview.chromium.org/340005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3163
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 28 Oct 2009 13:10:36 +0000 (13:10 +0000)]
Derive string size constants
* The maximum length of short and medium sized strings is now derived from other constants.
* Remove the redundant String part of their names.
Review URL: http://codereview.chromium.org/347002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3162
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 28 Oct 2009 12:37:54 +0000 (12:37 +0000)]
* Fix new snapshot code on ARM.
Review URL: http://codereview.chromium.org/344011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3161
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Wed, 28 Oct 2009 12:23:35 +0000 (12:23 +0000)]
Marking test as expected to flake.
Review URL: http://codereview.chromium.org/343016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3160
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Wed, 28 Oct 2009 12:14:20 +0000 (12:14 +0000)]
Changed accessor ICs to using direct calls.
Review URL: http://codereview.chromium.org/343015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3159
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 28 Oct 2009 10:19:56 +0000 (10:19 +0000)]
Add fast check for NaN in NumberCompare slow case.
Review URL: http://codereview.chromium.org/344010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3158
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 28 Oct 2009 10:14:32 +0000 (10:14 +0000)]
Fix missing recording of source position for property access in fast compiler.
Review URL: http://codereview.chromium.org/341002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3157
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 28 Oct 2009 09:56:14 +0000 (09:56 +0000)]
Factor out a commonly used code sequence to DropAndMove(Location, Register)
Review URL: http://codereview.chromium.org/337060
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3156
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 28 Oct 2009 09:38:09 +0000 (09:38 +0000)]
Add snapshot option to test runner.
Passing option --snapshot to test.py has the same effect as passing -S snapshot=on.
Review URL: http://codereview.chromium.org/346004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3155
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 28 Oct 2009 09:13:11 +0000 (09:13 +0000)]
Fix crbug/24815. Changes affect profiler "lazy" mode used for V8 in Chromium.
- don't engage the processing thread of CPU profiling until the first time profiling is resumed, this saves us a thread allocation for the majority of users;
- don't log shared libraries addresses: this is useless for JS-only profiling, and also consumes time on startup.
Review URL: http://codereview.chromium.org/340013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3154
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 28 Oct 2009 09:11:45 +0000 (09:11 +0000)]
Don't use string slices when processing RexExp replace.
String slices from RegExp replace results is now encoded in either one or two smis. Substrings are not used any more.
If the existing one smi encoding cannot hold the start/length information two smis are used the first having the negative length and the second having the start.
This is in preparation for removing string slices.
Review URL: http://codereview.chromium.org/342015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3153
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Tue, 27 Oct 2009 16:11:12 +0000 (16:11 +0000)]
Support for property access (named, keyed) in the fast compiler.
The generated code is similar to the existing code, but we never
inline any IC code in the fast compiler.
Review URL: http://codereview.chromium.org/337045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3152
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Tue, 27 Oct 2009 15:57:21 +0000 (15:57 +0000)]
Fixed build error on x64.
Review URL: http://codereview.chromium.org/339027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3151
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
christian.plesner.hansen@gmail.com [Tue, 27 Oct 2009 15:38:49 +0000 (15:38 +0000)]
Implemented specialized stubs for API getters. This includes a number
of individual changes:
- Added infrastructure for custom stub caching.
- Push the code object onto the stack in exit calls instead of a
debug/non-debug marker.
- Remove the DEBUG_EXIT frame type.
- Add a new exit stub generator for API getters.
Committed: http://code.google.com/p/v8/source/detail?r=3130
Review URL: http://codereview.chromium.org/330017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3150
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 27 Oct 2009 14:56:50 +0000 (14:56 +0000)]
Remove --check-stack flag from V8.
Review URL: http://codereview.chromium.org/338017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3149
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 27 Oct 2009 14:52:55 +0000 (14:52 +0000)]
Add VisitCallNew to fast compiler.
Review URL: http://codereview.chromium.org/334041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3148
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 27 Oct 2009 14:40:50 +0000 (14:40 +0000)]
Landing http://codereview.chromium.org/339026
TBR=lrn@chromium.org
Review URL: http://codereview.chromium.org/334044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3147
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 27 Oct 2009 13:38:57 +0000 (13:38 +0000)]
Make it more pleasant to work with expression locations in the
top-level code generator backend. Introduce function to move one
location to another (source cannot be nowhere); to move registers,
slots, and literals into a location; and to move a location to a
register or slot.
Review URL: http://codereview.chromium.org/338043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3146
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 27 Oct 2009 13:26:22 +0000 (13:26 +0000)]
Fix bug in test on Windows.
Review URL: http://codereview.chromium.org/335044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3145
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 27 Oct 2009 13:19:14 +0000 (13:19 +0000)]
Start using snapshot VM configuration in internal benchmark
graphing tool. Fix nonportable fopen call in new snapshot code.
Review URL: http://codereview.chromium.org/340002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3144
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 27 Oct 2009 12:26:21 +0000 (12:26 +0000)]
Fixed problem with test on big-endian-float ARM.
Review URL: http://codereview.chromium.org/338044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3143
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 27 Oct 2009 11:54:01 +0000 (11:54 +0000)]
New snapshot framework. Doesn't work on ARM yet (code targets
are different). Is able to deserialize the whole heap and run
some stuff. Not available as the primary snapshot system yet.
Review URL: http://codereview.chromium.org/335009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3142
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 27 Oct 2009 10:47:01 +0000 (10:47 +0000)]
Add fucomip instruction to disassembler. Fix some other floating point instructions.
Review URL: http://codereview.chromium.org/316010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3141
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 27 Oct 2009 10:40:43 +0000 (10:40 +0000)]
Fix x64 breakage in r3136.
Make sure that the return value is moved to rax. The line added back was accidently removed in r3136.
TBR=lrn@chromium.org
Review URL: http://codereview.chromium.org/339021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3140
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00