kmillikin@chromium.org
ece2c03160
Fix issue 263:
...
http://code.google.com/p/v8/issues/detail?id=263
Sharing the code to unlink the exception handler for a try/finally
causes us to try to merge virtual frames with different heights (due
to statements that keep state on the stack) at the entry to the unlink
code.
Avoid this by unlinking the handler separately for each exit from the
try block.
Review URL: http://codereview.chromium.org/39331
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1449 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-03-09 10:51:57 +00:00
kmillikin@chromium.org
182c3ebb2d
Reapply r1434 and port to ARM.
...
Review URL: http://codereview.chromium.org/40220
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-03-06 14:18:03 +00:00
olehougaard
3d9c24c8a4
Fixed ARM build by remembering to apply object literal optimazation to ARM code.
...
Review URL: http://codereview.chromium.org/40214
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1433 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-03-06 09:56:59 +00:00
kmillikin@chromium.org
f4735247cf
Merge from experimental code generator branch to bleeding edge.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-02-27 13:00:32 +00:00
ager@chromium.org
0c7af39737
Speed up access to global variables from eval scopes. Traverse the
...
surrounding context to figure out if the variable could be global. If
the variable could be global we check context extension objects at
runtime and use a global LoadIC if no variables have been introduced
by eval.
Fix crash bug when loading function arguments from inside eval. The
shadowed variable in the DYNAMIC_LOCAL case does not rewrite to a slot in
that case.
Review URL: http://codereview.chromium.org/28027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-02-24 13:11:53 +00:00
kmillikin@chromium.org
0c1c8d1876
Cleanup the ARM code generator for try...catch and try...finally by
...
clarifying the comments and simplifying code.
Review URL: http://codereview.chromium.org/27047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1337 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-02-23 12:05:40 +00:00
ager@chromium.org
195753ff7b
Commit of eval changes left out because they were stuck in another changelist.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-02-19 07:22:53 +00:00
ager@chromium.org
cafe25f258
ARM side of load optimization in the presence of eval.
...
Review URL: http://codereview.chromium.org/20453
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-02-18 13:54:13 +00:00
ager@chromium.org
a09832ab76
Optimize loads from variables that might be shadowed by variables
...
introduced by eval.
In the cases where calls to eval have not introduced any variables, we
do not need to perform a runtime call. Instead, we verify that the
context extension objects have not been created and perform a direct
load.
Not implemented for ARM yet and the scope resolution code could use
some better abstractions. I'd like to do that in a separate
changelist.
Review URL: http://codereview.chromium.org/20419
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1298 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-02-18 13:04:28 +00:00
kmillikin@chromium.org
46023fb742
Fix for off-by-one when initializing a constant or function
...
declaration that was not a slot.
Review URL: http://codereview.chromium.org/19745
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-02-02 12:05:13 +00:00
ager@chromium.org
47d1298236
Change the handling of catch blocks to use context extension objects
...
instead of normal JSObjects.
This ensures that __proto__ and accessors on the Object prototype do
not interfere with catch scopes. Also, it fixes the bug that catch
variables were not DontDelete (issue 74).
Next step is to create special lookup routines for context extension
objects and remove the special handling of context extension objects
from the general javascript object lookup routines.
Review URL: http://codereview.chromium.org/18143
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-01-16 09:42:08 +00:00
olehougaard
958316400f
Fixed some external references in the ARM code generator to use an ExternalReference wrapper.
...
Review URL: http://codereview.chromium.org/18266
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1074 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-01-15 08:32:50 +00:00
christian.plesner.hansen@gmail.com
4e78736900
Fixed build with no ENABLE_LOGGING_AND_PROFILING
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1039 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-01-07 14:24:08 +00:00
christian.plesner.hansen@gmail.com
afcc36a417
Added runtime call to the logging infrastructure. Made some changes
...
to the way regexps are being logged.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1028 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-01-06 13:24:52 +00:00
ager@chromium.org
3f383346aa
Inline array loads in loops directly in the code instead of always
...
calling a stub. The map to check against is unknown when generating
the code, so we patch the map check in the IC initialization code.
Loop nesting is currently not tracked on ARM. I'll file feature
request bug reports for implementing this on ARM and add the number to
the TODOs before I commit.
Review URL: http://codereview.chromium.org/16409
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1015 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-12-22 12:56:32 +00:00
olehougaard
392e6f849b
Fixing a subtle bug in receiver resolution when a thrown and caught function is called from a catch-block.
...
Second attempt - now with better memory efficiency.
Review URL: http://codereview.chromium.org/14834
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@999 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-12-18 11:28:13 +00:00
sgjesse@chromium.org
b3dd6b686a
Refactored the recording of source position in the generated code. The code generator now has two methods
...
void CodeForStatement(Node* node)
void CodeForSourcePosition(int pos)
The first is used to indicate that code is about to be generated for the given statement and the second is used to indicate that code is about to be generated for the given source position.
Added position information for some statements which was missing whem.
Updated the code generator for ARM to emit source position the same way as for IA-32.
Added an assert to ensure that deferred code stubs will always have a source source position as if it has not it will take whatever source position before which makes no sense.
The passing test on ARM has only been tested using the simulator.
Review URL: http://codereview.chromium.org/14170
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@985 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-12-17 08:45:42 +00:00
lrn@chromium.org
5afca497cb
Arm codegen could emit const pool in the middle of jump table.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@956 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-12-10 08:37:58 +00:00
olehougaard
2b72eeedfb
Change implementation of eval to make an exact distinction between direct eval and aliased eval.
...
Review URL: http://codereview.chromium.org/12673
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@860 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-27 13:55:06 +00:00
ager@chromium.org
95d1d40077
Revert r819, 821, and 822 which caused a big performance regression
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-21 15:01:41 +00:00
olehougaard
3877c91a19
Fixing the detection of aliased eval so that it is exact.
...
Fixing the semantics of aliased eval so that it is conformant.
Review URL: http://codereview.chromium.org/11563
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@819 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-21 12:49:57 +00:00
feng@chromium.org
9d06372cfe
Enable IC stubs for KeyedLaod/Store on ARM.
...
Several functions are not complete yet, always fall back to slow case.
It fixes test-api/AccessControlIC test.
Review URL: http://codereview.chromium.org/10624
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@745 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-13 01:18:31 +00:00
kmillikin@chromium.org
45e88ce988
Minor cleanup of the code generators to reduce (eventual) register
...
pressure and to avoid gratuitous merges in the CFG. No real
performance impact is expected.
Review URL: http://codereview.chromium.org/10404
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@739 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-12 11:00:12 +00:00
feng@chromium.org
3ccdce6d83
Fix CALL_NON_FUNCTION.
...
Using two flags to specify the state of targets:
1) FixupIsPCRelative specifies where to patch (relative to pc or at pc);
2) FixupUseCodeObject specifies what to patch (code object or start address).
Review URL: http://codereview.chromium.org/10233
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@727 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-10 22:53:19 +00:00
feng@chromium.org
47ac6ff1e0
fix lint, approved offline by iposva
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@721 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-07 23:00:09 +00:00
feng@chromium.org
fc8a0e3fa5
Fix OOM handler code. Old code didn't pop up the state slot.
...
Review URL: http://codereview.chromium.org/10223
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@720 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-07 22:56:41 +00:00
kmillikin@chromium.org
6edea51f89
Reporting -1 as the size of an ILLEGAL reference which actually has
...
size 0 was too cute.
Review URL: http://codereview.chromium.org/9689
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-07 08:58:23 +00:00
kmillikin@chromium.org
bdb896cc40
Emit pushes and pops through the virtual frame on ARM. Merging of
...
frames is not yet handled. The ARM code generator should be back in
line with the IA32 one.
Review URL: http://codereview.chromium.org/9182
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-07 08:21:07 +00:00
kmillikin@chromium.org
47e55a77a7
Initial port of VirtualFrame to the ARM architecture. To reduce the
...
size of the change, the initial implementation provides read access to
the frame (eg, locals, parameters, and expression stack elements) but
no mutation.
Review URL: http://codereview.chromium.org/7302
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@694 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-05 08:44:54 +00:00
ager@chromium.org
439f3e6708
Do not put failures in handles.
...
Assert in the Handle constructor that the object is not a failure.
I have run our own tests in debug mode and the WebKit layout tests in
debug mode and there are no regressions.
Review URL: http://codereview.chromium.org/9114
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-04 16:23:56 +00:00
ager@chromium.org
240d818bb8
Smi ranges are not symmetrical. -kMinSmiValue is not a Smi.
...
Review URL: http://codereview.chromium.org/9041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-03 15:21:46 +00:00
lrn@chromium.org
4e3bbd8247
If a HeapNumber is the incoming value, it must be converted to Smi before
...
checking. This is not done in a fast way.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@679 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-03 13:33:13 +00:00
kmillikin@chromium.org
ec3c4ced39
Reverted 671.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-31 13:18:52 +00:00
kmillikin@chromium.org
67ae89e417
Simplify the way we materialize boolean values that are not yet pushed
...
on the stack frame.
Review URL: http://codereview.chromium.org/8764
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-31 11:55:06 +00:00
kasperl@chromium.org
a2be3b6f84
Make sure that allocations through CALL_HEAP_FUNCTION
...
and runtime calls from JavaScript will always succeed
eventually if we have enough memory.
Review URL: http://codereview.chromium.org/8700
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@646 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-30 09:15:58 +00:00
kasperl@chromium.org
a26b3535de
Allow three runtime call attempts before throwing an out of
...
memory exception. Still needs work in Runtime_PerformGC to
make sure we'll allow future allocations.
Review URL: http://codereview.chromium.org/8873
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-29 12:16:34 +00:00
kasperl@chromium.org
2dcb4d2c59
Fix issue 120 by patching the on-stack receiver in the
...
IC stubs for calls just before invoking the target
function instead of doing it before resolving the
function.
Review URL: http://codereview.chromium.org/8192
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@607 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-27 14:12:02 +00:00
kasperl@chromium.org
4e4fc50842
Get ready for fixing issue 120: Pin point the places
...
where the receiver needs to be patched with the proxy
and get ready of unnecessary function patching on ARM.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@591 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-24 12:58:17 +00:00
kmillikin@chromium.org
681ae19bd4
Change a few runtime functions that took and returned a dummy argument
...
to instead take no arguments and return the undefined value.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@584 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-24 10:13:22 +00:00
erik.corry@gmail.com
dbc6dd66e4
Fix some style issues.
...
Review URL: http://codereview.chromium.org/8055
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@563 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-23 07:28:21 +00:00
kmillikin@chromium.org
65821f321c
Rename member variables and functions and clarify comments to try to
...
make the operation of LabelShadows more understandable.
Review URL: http://codereview.chromium.org/7868
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@556 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-22 12:45:33 +00:00
bak@chromium.org
bf948c8313
- Optimized CopyFixedArray and CopyJSObject.
...
- Refactored block copying.
Review URL: http://codereview.chromium.org/7863
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-22 08:21:18 +00:00
feng@chromium.org
202dedbdb3
No more failures than before. It is ready to be reviewed.
...
Review URL: http://codereview.chromium.org/7420
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-21 20:11:50 +00:00
iposva@chromium.org
89c762edf4
Simplify CodeGenerator hierarchy by not using a base class.
...
There is nothing virtual about a CodeGenerator since we
either generate code for one platform or for the other.
Review URL: http://codereview.chromium.org/6334
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-10 00:00:52 +00:00
kasperl@chromium.org
77643dbef6
Improve the generated code for the instanceof operator,
...
and extended the instanceof test case.
Review URL: http://codereview.chromium.org/6341
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-08 13:33:16 +00:00
kmillikin@chromium.org
5d7f354384
Moved the function GetValue from the code generator to the Reference
...
helper class.
As a consequence, also removed the optional Reference from the code
generator state and got rid of some state-dependent behavior in the
code generator.
Review URL: http://codereview.chromium.org/6538
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@466 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-08 07:24:06 +00:00
kmillikin@chromium.org
6afa5c64b7
Move code generation for storing to a reference out of the AST nodes, and
...
onto the platform-specific Reference class defined in codegen-*.cc. This
removes all of the static code generator functions.
Review URL: http://codereview.chromium.org/6527
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-07 11:19:44 +00:00
kmillikin@chromium.org
5c80e6a83a
Document (and assert) some of the safe-but-brittle implicit assumptions
...
about references in the code generators.
Review URL: http://codereview.chromium.org/6301
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@453 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-07 08:47:15 +00:00
kmillikin@chromium.org
ca0924349d
DeclareContextSlot took an extra completely random argument from the
...
stack which was returned and always pushed back.
Removed it.
Review URL: http://codereview.chromium.org/6802
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-06 16:57:38 +00:00
kasperl@chromium.org
892b0cac3c
Refactor the arguments access code to make it easier to read.
...
Review URL: http://codereview.chromium.org/6491
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-06 11:04:03 +00:00