ricow@chromium.org
eda4c9126f
X64: Add VisitGlobalPropertyCell to the relocinfo visitor.
...
This fixes GC issues when in the threading tests.
Review URL: http://codereview.chromium.org/6478026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 16:13:21 +00:00
ricow@chromium.org
1c8a1bc492
X64: Fix Generate_NotifyLazyDeoptimized to actually call with the LAZY flag.
...
This should fix the flaky cctest failure on the debug run of x64 with
crankshaft enabled.
Review URL: http://codereview.chromium.org/6480032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6731 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 15:17:38 +00:00
danno@chromium.org
1bd9f602be
Implement crankshaft support for pixel array loads.
...
Review URL: http://codereview.chromium.org/6410112
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6725 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 12:02:36 +00:00
fschneider@chromium.org
73fe82426f
Strengthen requirements for fixed registers at calls.
...
Already done on ia-32. This change is for x64 and ARM.
We now always require fixed input registers at calls to
avoid overlap with temp registers.
This fixes the affected instructions on ARM.
Review URL: http://codereview.chromium.org/6471021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 10:31:55 +00:00
ager@chromium.org
d5851dcde0
x64: Enable inline smi code patching to reenable the inlined code in
...
the code generated by the full code generator after my previous
change.
The generated code is the same as on ia32 and so is the patching.
Review URL: http://codereview.chromium.org/6456023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-09 14:51:38 +00:00
whesse@chromium.org
602d5cf427
Fix a bug that occurs when functions are defined with more than 16,382 parameters.
...
Review URL: http://codereview.chromium.org/6447007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-09 12:46:22 +00:00
ager@chromium.org
40dd216b53
Port fix for duplicate AST ID for deoptimization to ARM and x64.
...
Review URL: http://codereview.chromium.org/6458001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6690 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 19:42:24 +00:00
vegorov@chromium.org
721b60d3f5
Check for overflow when bumping new space's top in inlined allocation.
...
BUG=v8:1109
TEST=test/mjsunit/regress/regress-1109.js
Review URL: http://codereview.chromium.org/6453005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6684 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 17:25:40 +00:00
ricow@chromium.org
f64966085e
x64: Add MulI and DivI to lithium instructions.
...
Review URL: http://codereview.chromium.org/6448001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6681 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 14:37:50 +00:00
whesse@chromium.org
46e82e2f7e
X64 Crankshaft: Implement DoCodeStub on X64 platform.
...
Review URL: http://codereview.chromium.org/6451001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 11:26:42 +00:00
fschneider@chromium.org
f740d1adbe
Refactor lithium instructions for constants.
...
1. Remove unnecessary superlcass LConstant.
2. Use hydrogen accessor instead of duplicating the value.
Review URL: http://codereview.chromium.org/6410120
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6672 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 10:45:21 +00:00
vegorov@chromium.org
76cf30d9c8
Support %_IsConstructCall in the Crankshaft pipeline.
...
Provide special case for f.bind(obj).
Review URL: http://codereview.chromium.org/6368138
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 10:08:47 +00:00
whesse@chromium.org
fde8419697
X64 Crankshaft: Use TypeRecordingBinaryStub in crankshaft.
...
Review URL: http://codereview.chromium.org/6449001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 09:43:24 +00:00
ager@chromium.org
52cfd6ab16
Fixed a number of issues on x64 crankshaft port:
...
- Don't use SmiSub when overflow can occur. It asserts that overflow
does not happen.
- Actually use CompareICs and signal to crankshaft whether or not smi
code was inlined.
- Fix bug in CmpI where 64 bits were compared instead of 32 bits.
- Implement Throw, DeferredStackCheck, StoreKeyedFastElement in
lithium backend.
BUG=
TEST=
Review URL: http://codereview.chromium.org/6312193
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6669 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 07:49:59 +00:00
lrn@chromium.org
254915608e
X64: Add Crankshaft operation LoadGlobal.
...
Copied some serializer-related checks and counters from ia32.
Review URL: http://codereview.chromium.org/6312186
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6667 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-07 14:15:05 +00:00
ager@chromium.org
596b25511d
x64: Implement SmiUntag, SmiTag, LoadHeapObject and LoadNamedGeneric
...
in the lithium backend.
Review URL: http://codereview.chromium.org/6312185
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-07 14:11:53 +00:00
lrn@chromium.org
19be2622bb
X64: Disable crankshaft if serializerion is enabled.
...
Review URL: http://codereview.chromium.org/6413017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6665 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-07 13:41:02 +00:00
mmaly@chromium.org
87233c49c8
Pass strict mode to eval.
...
Code review feedback.
Code Review URL: http://codereview.chromium.org/6286043/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6652 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 18:15:49 +00:00
lrn@chromium.org
19b734fd82
Fix potential overwriting of debug jumps of following code.
...
Add JSArrayLength, CallKnownFunction, and InstanceType operations.
Remove LadGlobal and StoreGlobal again (they fail).
Review URL: http://codereview.chromium.org/6347067
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 14:09:03 +00:00
fschneider@chromium.org
17da434b29
Remove instruction summaries.
...
Instead of constructing a temporary container for all LOperands of each
instruction, the register works directly on the LIR instructions that
provide an abstract interface for input/output/temp operands.
This saves allocation of zone memory and speeds up LIR construction,
but makes iterating over all uses in the register allocator slightly
more expensive because environment uses are stored in a linked list of
environments. We can fix this by using a flat representation of LOperands.
Review URL: http://codereview.chromium.org/6352006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 13:28:23 +00:00
whesse@chromium.org
f1acd1299d
X64 Crankshaft: Port TaggedToI to X64.
...
Review URL: http://codereview.chromium.org/6368097
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6637 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 13:16:51 +00:00
whesse@chromium.org
c5de2c95fa
X64 Crankshaft: Add bit operations and shifts to x64 crankshaft.
...
Review URL: http://codereview.chromium.org/6246099
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6632 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 11:10:39 +00:00
ager@chromium.org
3a214b8f50
x64: Implemented object, array and function literals in lithium codegen.
...
Review URL: http://codereview.chromium.org/6371019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6628 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 06:54:45 +00:00
ager@chromium.org
c554faa74d
X64: Implement FixedArrayLength, BoundsCheck, LoadElements,
...
LoadKeyedFastElement in lithium codegen.
Tested locally by hardcoding DoTaggedToI to convert smis to untagged.
Review URL: http://codereview.chromium.org/6312124
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 17:01:10 +00:00
ager@chromium.org
8cdcbd7064
Don't use eax on x64. :)
...
TBR=ricow
Review URL: http://codereview.chromium.org/6312122
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 16:07:52 +00:00
ager@chromium.org
63d1b2c7f4
X64: Implement DoCallConstantFunction, DoLeaveInlined and DoCompareMap
...
in lithium-x64.
Review URL: http://codereview.chromium.org/6410060
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6623 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 15:40:20 +00:00
whesse@chromium.org
13e8360d94
X64 Crankshaft: Add TypeRecordingBinaryStub to X64
...
Review URL: http://codereview.chromium.org/6366028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 15:36:44 +00:00
kmillikin@chromium.org
97ccdd1e99
Introduce a hydrogen value for contexts, support context slot assignment.
...
Each context in the context chain has a corresponding hydrogen value.
The context values are used for global object lookup and context slot
lookup. Add simple (non-compound) assignment to context slots.
Review URL: http://codereview.chromium.org/6390003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6615 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 13:10:28 +00:00
danno@chromium.org
a2fb4a12bb
Create specialized code stubs for PixelArray loads.
...
Review URL: http://codereview.chromium.org/6287030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6614 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 12:50:50 +00:00
kmillikin@chromium.org
e4a4804546
Streamline the code for patching optimized code for lazy deopt.
...
Rewrite the lazy deopt patching code on IA32 to use addresses throughout,
rather than offsets and a base address.
Also, rename a couple of ambiguous Code fields from _start to _offset.
Review URL: http://codereview.chromium.org/6334083
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 10:07:22 +00:00
kmillikin@chromium.org
63593f0996
Fix x64 DEBUG build.
...
TBR=whesse@chromium
Review URL: http://codereview.chromium.org/6349049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6578 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-02 14:08:30 +00:00
kmillikin@chromium.org
f1149734fc
Partial fix for V8 issue 1079.
...
Record a safepoint with a deoptimization id for throw in optimized code. We
don't seem to much care what the AST ID is because we will not be using it
for lazy deoptimization (throw doesn't return to the point of throw). For
hygiene we use the actual ID of the throw expression. Throw is no longer a
control-flow instruction, but it's followed by an unconditional abnormal
exit. This is required to insert a simulate between the throw and the exit.
Make our optimized treatment of Function.prototype.apply act like a call and
have side effects. This ensures that it will get a lazy deoptimization
environment. Use that deoptimization ID in the safepoint for the call.
Deleting a property was also missing a deoptimization ID, though there was a
deoptimization environment assigned to the instruction. Record the
environment and use the deoptimization ID at the safepoint.
Review URL: http://codereview.chromium.org/6250105
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6576 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-02 13:55:29 +00:00
whesse@chromium.org
a5f94a4862
Fix Math.pow(-0, 0.5) and Math.pow(-0, -0.5). These are not equal to sqrt(-0) and 1/sqrt(-0). Add tests for these cases. Fixes V8 issue 1088.
...
BUG=1088
TEST=test/mjsunit/math-pow.js
Review URL: http://codereview.chromium.org/6368050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6573 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-02 12:54:58 +00:00
karlklose@chromium.org
8152635387
Extract platform independent part of RevertStackCheckCode.
...
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6349046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6572 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-02 11:58:24 +00:00
karlklose@chromium.org
5264d17d8f
Change OSR stack check patching to use the stack check table.
...
Change OSR stack check patching to use the stack check table to iterate over the calls to stack guards platform independent. Introduce Deoptimizer::PatchStackCheckAt for each platform to perform the platform specific patch at a given pc.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6392027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6551 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-01 11:18:45 +00:00
kmillikin@chromium.org
78b9981b90
Revert "Add custom typed ICs for pixel array loads. "
...
This change caused failures in (out of bounds) keyed loads of strings.
TBR'd.
Review URL: http://codereview.chromium.org/6298019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6528 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-28 15:07:04 +00:00
fschneider@chromium.org
24843d6310
Introduce ToNumber stub and use it in non-optimized code for to-number conversion.
...
This stub is used for increment/decrement operations and unary plus.
The resulting code is more compact and faster than calling a JS builtin.
Review URL: http://codereview.chromium.org/6350021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-28 14:18:26 +00:00
danno@chromium.org
afd0906204
Add custom typed ICs for pixel array loads.
...
Review URL: http://codereview.chromium.org/6323002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6526 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-28 14:06:20 +00:00
antonm@chromium.org
c5c4f0eda5
Revert "Unification: introduce ExternalReference::pending_exception_address()."
...
This reverts r6518.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/6359015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-27 18:21:07 +00:00
antonm@chromium.org
bea909a9bf
Unification: introduce ExternalReference::pending_exception_address().
...
Review URL: http://codereview.chromium.org/6335016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-27 18:10:45 +00:00
ricow@chromium.org
b4a2e91d45
Implement DoGlobalReceiver and DoCheckFunction lithium instructions on x64
...
Review URL: http://codereview.chromium.org/6277024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-27 16:41:43 +00:00
lrn@chromium.org
35a85c1b06
X64 Crankshaft: Added yet more operations.
...
Added operations:
DoStoreGlobal
DoLoadNamedField
DoStoreNamedField
DoCheckPrototypeMaps
DoEnterInlined
Review URL: http://codereview.chromium.org/6308019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-27 13:02:48 +00:00
lrn@chromium.org
4f11447073
X64 Crankshaft: Reapply reverted operations with DoLoadGlobal disabled.
...
Review URL: http://codereview.chromium.org/6397002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-27 11:58:31 +00:00
ager@chromium.org
dc61921bbf
Fix reintroduction of global variables that have been deleted.
...
Deletion of global properties puts 'the hole' in the global property
cell and updates the property details in the property dictionary with
the information that the property has been deleted. When setting
global properties that have been deleted in generated code we just
store the new value in the global property cell. This does not update
the property details in the property dictionary. Therefore, it looks
like the property is not there eventhough it was just reintroduced.
Perform 'the hole' checks in generated code for global property stores
and bail out of ICs and optimized code if storing to a property cell
that contains 'the hole'.
Review URL: http://codereview.chromium.org/6306014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-27 08:35:39 +00:00
karlklose@chromium.org
3141494c3e
Refactor recording of safepoints.
...
Refactor SafepointTableBuilder::DefineSafepoint and ARM LCodeGen::RecordSafepoint to use an enum for different kinds of safepoints. This change removes a lot of duplicated code and makes it easier to include new kinds of safepoints in the future. The remaining variants of LCodeGen::RecordSafepoint remain as a convinient way to record common safepoint kinds.
BUG=http://code.google.com/p/v8/issues/detail?id=1043
TEST=none
Review URL: http://codereview.chromium.org/6341008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 20:48:48 +00:00
fschneider@chromium.org
38b91a4ffe
Fix issue 1076 by resetting labels of switch-clauses before use.
...
If we compile a function literal twice with the full code generator,
we must make sure that the labels embedded in the AST are reset.
BUG=1076
Review URL: http://codereview.chromium.org/6339014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6496 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 15:28:17 +00:00
whesse@chromium.org
75c6bffbd1
X64 Crankshaft: Fix compilation error on Windows X64.
...
Review URL: http://codereview.chromium.org/6338018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 13:54:25 +00:00
whesse@chromium.org
cd935a417b
X64 Crankshaft: Remove relative jump to deoptimization code. Fixes logical error, and compilation error on Windows.
...
Review URL: http://codereview.chromium.org/6310018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6489 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 13:24:19 +00:00
erik.corry@gmail.com
591eb3f406
Minor cleanup: Use MaybeObject instead of bool and Failure** in
...
stub cache generation.
Review URL: http://codereview.chromium.org/6392003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 08:12:56 +00:00
fschneider@chromium.org
1c4dfa30fa
Revert r6543 and r6441.
...
This fixes a crash in the code generator.
BUG=1074
Review URL: http://codereview.chromium.org/6258020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 08:03:48 +00:00
whesse@chromium.org
948265619b
Revert change 6468: X64 Crankshaft functions added.
...
Review URL: http://codereview.chromium.org/6260018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 16:37:18 +00:00
vitalyr@chromium.org
76483f871b
Support StringLength in hydrogen (similar to ArrayLength).
...
To avoid deopts a few extra changes were needed:
o Enable megamorphic state for special property loads on
primitives. We used to flip between monomorphic stubs.
o Extract pure string (no string wrapper support) version of the
string length stub.
Review URL: http://codereview.chromium.org/6334015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6472 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 15:51:10 +00:00
lrn@chromium.org
1494beed42
X64 Crankshaft: Added some functions needed for delta-blue.
...
Review URL: http://codereview.chromium.org/6262013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6468 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 14:03:20 +00:00
kmillikin@chromium.org
013860d42e
Revert "Reapply change to with/arguments interaction."
...
Revert this change again. Somewhat mysteriously we sometimes get empty
contexts that we do not expect in the context chain.
Review URL: http://codereview.chromium.org/6372013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6465 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 13:01:45 +00:00
whesse@chromium.org
4c9254c054
Add compilation guard to new x64-only file, for Mac platform.
...
Review URL: http://codereview.chromium.org/6249016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6462 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 12:50:18 +00:00
ricow@chromium.org
6c800fa6fd
Implement x64 lithium instructions DoGlobalObject and DoSub
...
Review URL: http://codereview.chromium.org/6324011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 11:33:03 +00:00
lrn@chromium.org
43d7951677
X64 Crankshaft: Added a bunch of operations.
...
Review URL: http://codereview.chromium.org/6366010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6455 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 11:30:47 +00:00
fschneider@chromium.org
2444e3f247
Port to ARM and x64: Record the lazy deoptimization environmnent only at LLazyBailout-instructions.
...
This is a port of the change http://codereview.chromium.org/6348016/
to ARM and x64 platform.
Review URL: http://codereview.chromium.org/6350011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6453 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 10:35:57 +00:00
whesse@chromium.org
136db7b861
Port new version of ParallelMove's LGapResolver to X64.
...
Review URL: http://codereview.chromium.org/6366003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6452 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 10:10:36 +00:00
ricow@chromium.org
cadb9cb635
Port changes from x64 deoptimizer to ia32 and remove commented out code from last patch.
...
Review URL: http://codereview.chromium.org/6368013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6451 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 08:59:16 +00:00
ricow@chromium.org
d5cab38a33
Add support for deoptimization on x64.
...
I did not take out the code relating to osr from the generate method
since this makes it easier to compare to ia32 (we will abort anyway when we hit the osr code so there should be no issues with having this in)
Review URL: http://codereview.chromium.org/6390001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6449 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 07:57:56 +00:00
sgjesse@chromium.org
161d631b5e
Change ARM exit frame layout and alingment handling
...
Change the ARM exit frame to have the same layout as the IA32 exit frame. This basically re-arranges the order of fp and sp and changes the sp location of the entry frame to hold the sp used by the gc and not the sp for popping the arguments. This removes the option of tearing down the frame and returning using one ldm instruction.
The main motivation for this is to avoid pushing an alignment word before generating the entry frame. The GC handling of optimized frames process the registers pushed as part of a safepoint and asumes that these are at the top of the frame, so if an alignment word is pushed this processing will be one off.
The alignment handling in the C entry stub have also been simplified. Now the value of lr is stored to a stack slot already reserved avoiding pushing it and keeping track of "frame skew".
This does result in more instructions in the exit frame on ARM, but we can look into improving this later.
Review URL: http://codereview.chromium.org/6247019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 07:49:39 +00:00
ager@chromium.org
4c8fbaffa1
Move stack check patching to the architecture dependent deoptimizer
...
files. On ARM it is not enough to iterate the relocation information
because that will only give us access to the constant pool and not to
the place in the instruction stream where the target in the constant
pool is called.
Review URL: http://codereview.chromium.org/6343005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6444 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-24 14:54:45 +00:00
kmillikin@chromium.org
9c2d52eb0e
Fix a bug in delete for lookup slots.
...
The function Runtime_LookupContext searches the context chain for a
LOOKUP slot and returns the object holding the slot. It returned the
global context if the slot was not found or if it was found in a
function's context or arguments object. This is not the correct
object to use for 'delete'.
Since this lookup function is only ever used when deleting LOOKUP
slots (those that have to go through a with or a scope with eval), it
is simply replaced with a Runtime_DeleteContextSlot function that does
the appropriate thing for all kinds of context lookups.
This fixes Chromium bug 70066.
http://code.google.com/p/chromium/issues/detail?id=70066
Review URL: http://codereview.chromium.org/6280013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-24 14:03:30 +00:00
fschneider@chromium.org
672f5ffab6
Port lithium template classes to ARM.
...
This is a port of the IA32 version and is needed to allow
changing the register allocator interface in a later change.
Review URL: http://codereview.chromium.org/6250027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6436 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-24 09:43:14 +00:00
kbr@chromium.org
cbc1c0fca6
Truncate rather than round to nearest when performing float-to-integer
...
conversions for external array types, which implement the Typed Array
spec. (Revision of http://codereview.chromium.org/6315004 .)
Prefer SSE2 code path on x86 processors. Non-SSE2 processors now make
a slow runtime call for float-to-int conversions. Use SSE3 for 32-bit
signed and unsigned int array types where possible.
The movement of code from ic-arm.cc to stub-cache-arm.cc caused the
VFP3 code path to be tested for the first time. Fixed bugs in the
register usage and in the constant value stored into integer arrays
for NaN and +/-Infinity.
Added new truncation test to test-api.cc. Storage of NaN and +/-Inf
was already covered. Ran unit tests on x86, x64 and ARM simulator.
Tested ia32 and x64 code in Chromium on Mac and Linux respectively
with Typed Array unit tests and WebGL content.
BUG=http://code.google.com/p/chromium/issues/detail?id=50972
TEST=test-api/ExternalArrays
Review URL: http://codereview.chromium.org/6303012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6431 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-21 23:58:00 +00:00
kmillikin@chromium.org
8a9eeaf8da
Reapply change to with/arguments interaction.
...
This is svn r6415 with a bugfix.
The bug was that we can have scopes with 0 heap slots (functions with
such scopes do not need a local context) and scopes with at least
Context::MIN_CONTEXT_SLOTS. The code generator only allocated a local
context if there were strictly more than Context::MIN_CONTEXT_SLOTS.
Before the change to with/arguments, it was impossible to actually get
a function scope with exactly Context::MIN_CONTEXT_SLOTS because every
such scope included a heap-allocated arguments (and arguments shadow)
slot.
Review URL: http://codereview.chromium.org/6248014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6426 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-21 11:28:35 +00:00
fschneider@chromium.org
c630134ed2
Remove default template parameter T for the number of temps.
...
Instead require that the number of temps be specified at each declaration.
Review URL: http://codereview.chromium.org/6265019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-21 10:31:28 +00:00
kmillikin@chromium.org
3d15b43393
Begin changing Hydrogen branch instructions.
...
Rename HBranch (the instruction that coerces an arbitrary HValue to
control flow) to HTest to free up the term Branch to refer to any
control instruction with two successors.
Change the virtual FirstSuccessor and SecondSuccessor functions on
control instructions to a pair of data members.
Review URL: http://codereview.chromium.org/6366002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6417 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-20 12:56:34 +00:00
vitalyr@chromium.org
b4ff318e4b
Support StringCharCodeAt in hydrogen/lithium.
...
This patch adds H- and L-variants of StringCharCodeAt and StringLength.
StringCharCodeAt is used to inline a constant function call of
String.prototype.charCodeAt and to implement the corresponding inline
runtime function. It does not yet use the recently introduced extra IC
state. (We can specialize on string encoding and avoid deopts because
of out of bounds accesses.)
StringLength needs more work because the stub version of it also
supports strings wrappers and it matters in some cases. (We have to
separate the string only case.)
Review URL: http://codereview.chromium.org/6243008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6408 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 20:05:22 +00:00
kmillikin@chromium.org
70910af7a0
Fix an assertion failure in the full code generator.
...
We hit an assertion failure when we tried to record the AST ID of
the (shared) .arguments variable proxy more than once. This was hit
when we had multiple calls to the same parameter in a function that
used the arguments object. The fix is to not visit the subexpressions
of the (shared) property access expression.
BUG=1060
Review URL: http://codereview.chromium.org/6368007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6404 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 15:26:54 +00:00
lrn@chromium.org
93a0b80609
X64: Fix bug in DoBranch that miss detecting NaN as falsy.
...
Review URL: http://codereview.chromium.org/6369005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 13:52:08 +00:00
vegorov@chromium.org
1db0a6a000
Make V8 more Valgrind-friendly.
...
While we don't have to flush icache on Intel CPUs when we patch code we still have to call CPU::FlushICache() to notify Valgrind otherwise Valgrind will run incorrect translations which will lead to strange crashes.
Review URL: http://codereview.chromium.org/6271008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 11:42:43 +00:00
lrn@chromium.org
e66ceb9079
X64 Crank: Implemented DoBranch and all *AndBranch comparisons.
...
Review URL: http://codereview.chromium.org/6374002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 10:17:18 +00:00
ager@chromium.org
6b4d29766c
Revert r6376 and r6373 which changes external array support. The ARM
...
version did not work.
TBR=kbr@chromium.org
Review URL: http://codereview.chromium.org/6295013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 08:20:42 +00:00
kbr@chromium.org
27f0ae7aad
Truncate rather than round to nearest when performing float-to-integer
...
conversions for external array types, which implement the Typed Array
spec. The new code paths are for SSE3 and SSE2 capable processors.
The code for non-SSE2 processors is unchanged for now. The ARM port
appears to already be correct.
Moved the generation of the external array load and store intrinsics
to the stub cache (on all platforms) so that they are generated at run
time and can take advantage of CPU features.
This functionality is covered by the array-unit-tests.html test in the
WebGL conformance test suite:
http://khronos.org/webgl/wiki/Testing/Conformance
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/array-unit-tests.html
Manually verified all of the SSE3/SSE2/non-SSE2 code paths by enabling
each in turn. Tested in Chromium on 32-bit Mac OS X and 64-bit Linux.
BUG=http://code.google.com/p/chromium/issues/detail?id=50972
TEST=none (see above)
Review URL: http://codereview.chromium.org/6315004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-18 21:51:50 +00:00
vitalyr@chromium.org
11a4cb5718
Introduce extra IC state to record additional feedback from IC-s.
...
Extra IC state is only two bits and only supported for call IC-s for
now. To change its extra state an IC stub jumps to a new miss stub
that goes to runtime as usual but then instead of going megamorphic
generates a monomorphic stub with the updated state.
Review URL: http://codereview.chromium.org/6344005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-18 16:54:48 +00:00
whesse@chromium.org
9cee28138a
X64 Crankshaft: Add addition of tagged and int32 values to Crankshaft on x64. Enable CallIC to global function to call optimized code.
...
Review URL: http://codereview.chromium.org/6329006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-18 14:32:13 +00:00
lrn@chromium.org
d2df943bde
Merge changes to LTemplateInstruction to X64 (Issue 1048).
...
Implement ConstantD and ConstantI.
BUG=1048
Review URL: http://codereview.chromium.org/6262005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 13:51:59 +00:00
ricow@chromium.org
3d245133a3
Enable compilation of very simple functions in x64 crankshaft.
...
This change includes support for safepointtables and adding deoptimization info (but not for deoptimizing).
Implemented crankshaft functions:
CallCode
GenerateSafepointTable
RegisterEnvironmentForDeoptimization
EmitGoto
This change allows us to compile very simple functions with crankshaft:
An empty function
A function returning a constant.
A function returning a parameter.
There is 6 disabled tests that require us to be able to deoptimize
which is currently not supported.
Review URL: http://codereview.chromium.org/6310009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 13:11:39 +00:00
fschneider@chromium.org
e7610a3e14
Add UseAny to create a LOperand without register preference.
...
The result can be a register, a stack slot or a constant operand.
Right now it is only used for enviroment uses.
Review URL: http://codereview.chromium.org/6348003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6349 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 12:54:52 +00:00
kmillikin@chromium.org
437914da90
Change the algorithm and generated code for parallel moves on IA32.
...
Instead of spilling and then immediately restoring eax to resolve
memory to memory moves, the gap move resolver now tracks registers
that are known to be free and uses one if available. If not it spills
but restores lazily when the spilled value is needed or at the end of
the algorithm.
Instead of using esi for resolving cycles and assuming it is free to
overwrite because it can be rematerialized, the gap move resolver now
resolves cycles using swaps, possibly using a free register as above.
The algorithm is also changed to be simpler: a recursive depth-first
traversal of the move dependence graph. It uses a list of moves to be
performed (because it mutates the moves themselves), but does not use
any auxiliary structure other than the control stack. It does not
build up a separate list of scheduled moves to be interpreted by the
code generate, but emits code on the fly.
Review URL: http://codereview.chromium.org/6263005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 11:25:36 +00:00
antonm@chromium.org
fae90d4f32
Make closures optimizable by Crankshaft compiler.
...
Currently only closures which only read from the context are supported.
Review URL: http://codereview.chromium.org/5753005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6340 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 08:11:03 +00:00
whesse@chromium.org
762f9cf72c
Fix typo that breaks compilation on x64.
...
Review URL: http://codereview.chromium.org/6342003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6336 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 16:15:40 +00:00
whesse@chromium.org
2810c2c044
X64 Crankshaft: Add DoParallelMove to x64
...
Review URL: http://codereview.chromium.org/6290004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6329 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 15:07:44 +00:00
lrn@chromium.org
2b4767b584
X64: Fix allocated register name table.
...
BUG=
TEST=
Review URL: http://codereview.chromium.org/6247006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6325 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 14:03:05 +00:00
lrn@chromium.org
9f5c1bfba1
X64 Crnakshaft: Added GeneratePrologue implementation.
...
Review URL: http://codereview.chromium.org/6326003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6324 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 13:16:48 +00:00
kmillikin@chromium.org
199846b786
Move class LGapResolver to the platform specific backend implementation files.
...
This change is in preparation for introducing platform-specific strategies
for resolving parallel moves.
Review URL: http://codereview.chromium.org/6324003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6321 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 12:50:03 +00:00
ricow@chromium.org
8a3bd712ad
Fix win64 build by using int instead of size_t for position in StringBuilder
...
Review URL: http://codereview.chromium.org/6353002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6313 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 11:54:38 +00:00
ricow@chromium.org
7954752479
Implement DoStackCheck in x64 crankshaft
...
Review URL: http://codereview.chromium.org/6257002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 11:35:02 +00:00
ricow@chromium.org
463d722a8b
Fix presubmit
...
Review URL: http://codereview.chromium.org/6326002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 10:33:41 +00:00
ricow@chromium.org
5e557d3624
Add implementations of some more x64 lithium methods.
...
This puts us very close to being able to compile the empty function.
This changes only has a small number of 64 bit specific assembler instructions.
The remaining changes are much more platform specific and will go in another change.
Review URL: http://codereview.chromium.org/6247005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 10:27:25 +00:00
fschneider@chromium.org
9b7525fa3e
Fix number of result operands for LThrow.
...
This instruction does not produce a result. We don't need a result
LOperand for it.
Review URL: http://codereview.chromium.org/6306001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 09:45:30 +00:00
ricow@chromium.org
4ea3e060bb
Fix the xcode build by not including x64 specific code when generating
...
32 bit code.
Review URL: http://codereview.chromium.org/6249002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6299 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 14:10:26 +00:00
lrn@chromium.org
ba023c5405
X64 Crankshaft: Ported lots of boilerplate code.
...
Small tweaks to make X64 compliant.
A few UNIMPLEMENTED left, but most empty functions call Abort to bail out.
Review URL: http://codereview.chromium.org/6201006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6297 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 10:04:02 +00:00
whesse@chromium.org
b6ebcd58c6
Crankshaft: Move LEnvironment and LPointerMap classes to platform-independent lithium.h. Move WriteTranslation method from LEnvironment class to LCodeGen class.
...
Review URL: http://codereview.chromium.org/6142011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6276 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 15:51:08 +00:00
whesse@chromium.org
5d3432b530
Add source file lithium-codegen-x64.cc. Add class declarations to lithium-codegen-x64.h.
...
Review URL: http://codereview.chromium.org/6135008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:24:18 +00:00
erik.corry@gmail.com
544d941b09
Fix lint
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6260 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:47:30 +00:00
whesse@chromium.org
14cb39e543
X64 Crankshaft: Add LTemplatedInstruction and some derived classes to lithium-x64.cc.
...
Review URL: http://codereview.chromium.org/6128008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6257 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:33:52 +00:00
whesse@chromium.org
a139094016
Crankshaft: Move LParallelMove to lithium.h, add LGap to lithium-x64.h.
...
Review URL: http://codereview.chromium.org/6132002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 11:31:21 +00:00
whesse@chromium.org
7c94bf13b9
Create platform-independent lithium files, move LGapResolver and LGapNode there
...
Review URL: http://codereview.chromium.org/6121001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6221 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 11:49:22 +00:00
sgjesse@chromium.org
426f13e084
Fix GC issue in instanceof stub
...
The the call of the builtin in InstanceofStub was not correctly protected with an internal frame leading to the return address being handled as a pointer during GC.
Marked the Instanceof stub as allowing stub calls (the RecordWriteStub was removed some days ago).
This issue was not caught by the assertion designed for this when debug mode is run with --debug-code (which out tests always does) as generating code for Abort set the allow stub calls flag to true. This has been fixed by restoring the allow stub calls flag correctly.
Review URL: http://codereview.chromium.org/6097010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6218 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 10:37:26 +00:00
whesse@chromium.org
f39ff5c679
X64 Crankshaft: Implement some methods in LInstruction, update mjsunit test expectations.
...
Review URL: http://codereview.chromium.org/6118002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6215 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 09:47:16 +00:00
fschneider@chromium.org
5fbaece14c
Use a separate marker value to allocate the arguments object on deoptimzation.
...
Before we used the hole value for this purpose, but this does not work once we
start using the hole value for other purposes in the optimizing compiler.
Review URL: http://codereview.chromium.org/6116001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6210 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 15:53:56 +00:00
kmillikin@chromium.org
dde853a4ad
Small change to stack checks in unoptimized code.
...
The stack checks include a loop nesting depth encoded in the code stream
after the call to the stack check stub. Change the code to jump around this
instruction as well as the call when the stack check is OK.
Review URL: http://codereview.chromium.org/6005014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6204 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 13:48:12 +00:00
whesse@chromium.org
2655060546
Fix errors in x64 crankshaft port, add failing tests to test expectations.
...
Review URL: http://codereview.chromium.org/6104004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 13:29:22 +00:00
whesse@chromium.org
0ba1623995
Add deoptimization support to full-codegen-x64.cc (insert PrepareForBailout in many places.)
...
Review URL: http://codereview.chromium.org/6031014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 17:09:24 +00:00
whesse@chromium.org
3055ca216d
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
2011-01-05 12:31:31 +00:00
whesse@chromium.org
7cdd2f6494
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
2011-01-05 12:28:47 +00:00
whesse@chromium.org
7fa57552fa
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
2011-01-04 09:50:35 +00:00
whesse@chromium.org
c28bde775c
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
2011-01-04 09:02:53 +00:00
whesse@chromium.org
3d7d258339
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
2011-01-03 14:59:12 +00:00
sgjesse@chromium.org
04bf6c5c61
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
2011-01-03 11:39:22 +00:00
vitalyr@chromium.org
52d2ce3b5a
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
2010-12-22 11:31:18 +00:00
lrn@chromium.org
c91f5606d0
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
2010-12-20 09:38:56 +00:00
sgjesse@chromium.org
d559d8c6c0
IA32: Optimize instanceof
...
The instanceoff stub now supports arguments in registers and checks for null,
smi and string values without going to runtime.
Needs porting to X64 and ARM.
Review URL: http://codereview.chromium.org/5828004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 08:58:42 +00:00
kmillikin@chromium.org
bccab25564
Fix compilation on x64.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/5873003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6036 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 16:37:17 +00:00
kmillikin@chromium.org
ace6290452
Fix issue 974.
...
When entering a finally block in unoptimized code, we unconditionally
save the accumulator register in the stack in case it holds a return
value or an exception. In the case of a break, continue, or falling
off the end of the try or catch block, this value is unpredictable and
not necessarily safe for GC.
Review URL: http://codereview.chromium.org/5883003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 16:14:29 +00:00
fschneider@chromium.org
b93a0f5d9a
Second attempt: Improve our type feedback by recogizining never-executed IC calls for binary operations.
...
This is an improved version of my earlier change r5970. It avoids degrading the
non-optimized code.
Initially we emit a conditional branch that is either always- or never-taken
after a smi-check (depending on whether we test for smi for for non-smi)
Since test-eax always sets the carry-flag to 0 we use jump-if-carry and
jump-if-not-carry.
The first invocation of the stub patches a jc with a jz and
jnc with a jnz-instruction so that the code looks exactly as it was
without patching. The only difference is the test- or nop-instruction
after the IC-call.
Review URL: http://codereview.chromium.org/5763004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 13:56:41 +00:00
karlklose@chromium.org
5f962f2eb2
Add array bound checks to code generated for SwapElements. This fixes a bug that lead to a segfault when an array was modified while it was sorted.
...
Review URL: http://codereview.chromium.org/5686006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6020 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 09:52:58 +00:00
vitalyr@chromium.org
57e072298f
Merge math function ids and custom call generator ids.
...
Two old id types are replaced by builtin function ids. We can use
these in the code generators to emit custom code for the selected
functions.
Review URL: http://codereview.chromium.org/5767002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6013 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-14 18:53:48 +00:00
kmillikin@chromium.org
4c02d3cd4c
Fix assignment compilation bug on ARM and x64.
...
SVN revision 5993 ported changes to the unoptimizing compiler from
ia32 to ARM and x64. A call to AstContext::Plug was moved out of
FullCodeGenerator::EmitVariableAssignment and into the callers. One
call site was missed in both ports.
Review URL: http://codereview.chromium.org/5781008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6003 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-14 09:47:28 +00:00
kmillikin@chromium.org
645ba163d3
Fix ARM and x64 compilation.
...
Fix compilation on ARM and x64 due to a change in the architecture-shared
API of the nonoptimizing code generator. Also added new PrepareForBailout
to ARM (they are not yet fully implemented on x64).
Review URL: http://codereview.chromium.org/5794002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5993 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-13 17:49:55 +00:00
whesse@chromium.org
8f89006381
Align builtins-{arch}.cc on ia32 and x64 platforms by moving functions and editing.
...
Review URL: http://codereview.chromium.org/5781004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5984 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-13 12:24:29 +00:00
fschneider@chromium.org
edba069919
Revert 5973 as well (related to previous commit)
...
TBR=lrn@chromium.org ,
Review URL: http://codereview.chromium.org/5754004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5979 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-13 10:49:00 +00:00
mikhail.naganov@gmail.com
72f5bcb3aa
Fix x64 build after r5970, the same way as for ARM.
...
TBR=fschneider@chromium.org
Review URL: http://codereview.chromium.org/5709005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5973 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-10 16:33:36 +00:00
vegorov@chromium.org
7c87f90c62
Remove NearestNextGapPos. It is not used anymore.
...
Remove uses of NearestGapPos in splitting helpers. We can split at any position.
Review URL: http://codereview.chromium.org/5605004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5937 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-07 14:51:49 +00:00
kasperl@chromium.org
90b3370374
Update V8 to version 3.0 (re-land r5920).
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5922 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-07 11:31:57 +00:00
kasperl@chromium.org
51b494d096
Revert r5920. Will re-land shortly.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5921 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-07 11:01:02 +00:00
kasperl@chromium.org
e5860bd6a8
Update V8 to version 3.0.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5920 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-07 09:11:56 +00:00
whesse@chromium.org
66836efbba
Add generated code to calculate Math.log and to search Transcendental cache for logs. Implemented on all platforms.
...
Review URL: http://codereview.chromium.org/5437002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5912 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-02 11:20:44 +00:00
vitalyr@chromium.org
b0e4479e70
Save full source position state to avoid forced positions.
...
Review URL: http://codereview.chromium.org/5277008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5908 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-30 13:17:36 +00:00
ager@chromium.org
4c6f79ecec
Fix crashes during GC caused by partially initialized objects. The
...
inline allocation code used the expected number of properties to
calculate the number of inobject properties for an object instead of
getting the actual number from the initial map.
It is safer to use the inobject property count from the initial map in
any case because that is the amount the instances will get. I think
this disconnect got introduced when adding shrinking of objects.
Unfortuntely I haven't been able to create a simple reproduction for a
test case but this fixes the webpage that exhibits the crash. I'll see
if I can create a reproduction tomorrow.
Review URL: http://codereview.chromium.org/5278003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5879 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-24 06:26:36 +00:00
ager@chromium.org
1e8413e188
Force pretenuring of closures that are immediately assigned to
...
properties. For these closures we would like to be able to use
constant functions and for that we need the closures allocated in old
space.
Review URL: http://codereview.chromium.org/5220007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-22 09:57:21 +00:00
whesse@chromium.org
1d11e32a01
Add a fast case to Array.join when all the elements and the separator are flat ascii strings.
...
Review URL: http://codereview.chromium.org/5122005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5860 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-19 09:25:46 +00:00
serya@chromium.org
bc42d95cc3
Avoiding repacking payload for v8::Arguments and v8::AccessorInfo (arm)
...
Review URL: http://codereview.chromium.org/5107002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-19 09:06:00 +00:00
sgjesse@chromium.org
010f35f478
Change the order of evaluation of sub-expressions for keyed call
...
The expression of the key is now evaluated before the arguments, so all expressions in a keyed call are evaluared from left to right.
BUG=http://code.google.com/p/v8/issues/detail?id=931
TEST=test/mjsunit/regress/regress-931.js
Review URL: http://codereview.chromium.org/5161002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5842 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-17 13:59:07 +00:00
serya@chromium.org
af7825c05f
API call code refactoring (x64).
...
Review URL: http://codereview.chromium.org/5108003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-17 10:44:16 +00:00
serya@chromium.org
ee78d11818
Port direct API function call to x64 (ia32 CL is http://codereview.chromium.org/4456002/ ).
...
Review URL: http://codereview.chromium.org/5004004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5833 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-16 16:08:57 +00:00
serya@chromium.org
3b248841da
Removing redundant stubs for API functions.
...
Review URL: http://codereview.chromium.org/4695003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5827 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-15 17:12:34 +00:00
fschneider@chromium.org
582a3bde4f
Move ComputeCallInitialize from the codegen.cc to stub-cache.cc.
...
Review URL: http://codereview.chromium.org/4760003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-11 10:33:51 +00:00
fschneider@chromium.org
8673e6497c
Move common static helpers from codegen to the macro-assembler files.
...
Review URL: http://codereview.chromium.org/4654002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-10 17:00:20 +00:00
lrn@chromium.org
8f8039574a
Split utils.h into utils.h and v8utils.h where the former is independent of V8.
...
The code in utils.h can be reused outside of v8 propert, as long as the
propert ASSERT macros are defined.
Review URL: http://codereview.chromium.org/4485001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-05 08:18:53 +00:00
vegorov@chromium.org
9b96a9d592
Fix presubmit errors introduced by r5768.
...
Review URL: http://codereview.chromium.org/4409003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-04 15:39:06 +00:00
vegorov@chromium.org
746d72420c
Improve positions recording for calls.
...
Review URL: http://codereview.chromium.org/4469002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5768 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-04 15:12:03 +00:00
lrn@chromium.org
e1458503d1
Remove regexp caching.
...
Review URL: http://codereview.chromium.org/4308001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-02 13:37:59 +00:00
ager@chromium.org
51bc9a1493
Remove invalid asserts from last commit.
...
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/4094010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5745 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-01 09:16:39 +00:00
ager@chromium.org
5f1f2adb3b
Landing for Rodolph Perfetta.
...
Reduces the number of movw/movt instructions generated in ProbeTable. It
improves code size for CompileCallMegamorphic by about 10%.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/4220004/show
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-01 08:55:40 +00:00
karlklose@chromium.org
1b0e2597e8
Fix a bug that prevents constants from overwriting function values in object literals.
...
BUG=http://code.google.com/p/v8/issues/detail?id=907
Review URL: http://codereview.chromium.org/4004006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5718 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-27 11:37:59 +00:00
ager@chromium.org
a894e78654
Clean up definitions in simulator.
...
Clean up the definition of USE_SIMULATOR and its uses.
Review URL: http://codereview.chromium.org/4044003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-25 16:40:41 +00:00
erik.corry@gmail.com
0dcaac1939
Make Failure inherit from MaybeObject instead of Object.
...
Review URL: http://codereview.chromium.org/3970005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5698 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-25 15:22:03 +00:00
serya@chromium.org
0ea6c1e09f
Optimizing HandleScope. Also fixed HandleScope destruction when API getter throws an exception.
...
Review URL: http://codereview.chromium.org/3792003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-21 14:21:00 +00:00
whesse@chromium.org
7fd5d4540c
Implement --noinline-new flag fully on x64 and ia32 platforms.
...
Review URL: http://codereview.chromium.org/3961005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-21 13:15:12 +00:00
ager@chromium.org
30959b20b9
Update x64 RecordWrite comment. When the offset is zero the index
...
should be an untagged 32-bit integer on x64. There are debug mode
asserts in the code that catch tagged integers so we get test
failures if we get it wrong.
Review URL: http://codereview.chromium.org/3928002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5668 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-20 08:52:46 +00:00
lrn@chromium.org
484b9df414
Limit end-anchored regexps to testing end of string where possible.
...
Review URL: http://codereview.chromium.org/3844006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 14:00:01 +00:00
kmillikin@chromium.org
f2789a903b
Change the StackGuard runtime function to take no arguments.
...
For some reason the StackGuard runtime function took a dummy argument
that it always ignored. Change it to take no arguments.
Review URL: http://codereview.chromium.org/3838003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 11:14:03 +00:00
lrn@chromium.org
00e23b719d
Revert revision 5657.
...
TBR: erik.corry
Review URL: http://codereview.chromium.org/3812012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5658 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 10:37:54 +00:00
lrn@chromium.org
f80da64d36
Use finite-length end-anchored regexps to reduce part of regexp that is searched.
...
Review URL: http://codereview.chromium.org/3850005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5657 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 09:42:40 +00:00
whesse@chromium.org
e08e43691a
Fix bug in comparison of two smis that differ by MIN_SMI on full compiler on all platforms.
...
Review URL: http://codereview.chromium.org/3767016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-18 14:04:28 +00:00
whesse@chromium.org
056b1f3a86
Fix compilation error on ARM with gcc 4.4. Remove NULL check of pointer to member, which was dead code (never failed).
...
Review URL: http://codereview.chromium.org/3793011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-18 10:23:45 +00:00
whesse@chromium.org
a8455f0424
Do not return the constant singleton float -0.0 from UnaryOpStub, because it may be overwritten, on X64 platform.
...
Review URL: http://codereview.chromium.org/3748007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-15 14:50:49 +00:00
whesse@chromium.org
9aec312468
Add stop-at flag implementation to full compiler on all platforms.
...
Review URL: http://codereview.chromium.org/3791009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5629 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-15 11:45:05 +00:00
kmillikin@chromium.org
92a74be6f1
Fix presubmit failure.
...
Review URL: http://codereview.chromium.org/3605008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-06 08:47:08 +00:00
vitalyr@chromium.org
d498613c9a
Make lint happy.
...
TBR=kmillikin@chromium.org
Review URL: http://codereview.chromium.org/3609008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-04 15:21:38 +00:00
kmillikin@chromium.org
ea910460bd
More refactoring of class Compiler's interface.
...
Change more functions used by the Compiler class to have a uniform
interface: they get passed as argument an input/output pointer to a
CompilationInfo that they mutate if they succeed, and they return a
flag telling whether they succeeded.
Also, remove some unnecessary timers.
Review URL: http://codereview.chromium.org/3561012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-04 14:30:43 +00:00
kmillikin@chromium.org
bef3ae07db
Begin a more aggressive refactoring of the Compiler interface.
...
The plan is to use the CompilationInfo class to communicate inputs and
outputs to compilation pipeline phases, which each return a boolean
success/failure flag.
The intent is to make it easier to compose small pieces of the
pipeline without having to grow a custom function each time, each
taking a half dozen arguments.
This change modifies the very front end (the parser).
Review URL: http://codereview.chromium.org/3586006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-04 11:35:46 +00:00
vitalyr@chromium.org
7228d867cb
Use existing global cell status as a hint when generating loads.
...
Review URL: http://codereview.chromium.org/3537003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-30 17:39:31 +00:00
antonm@chromium.org
f8b274eea8
Rename some x64 macros to be more precise about their semantics.
...
Review URL: http://codereview.chromium.org/3574002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-30 11:48:03 +00:00
antonm@chromium.org
9e618ff460
Add another check to be sure non-negative smi fits into Uint32 range.
...
Review URL: http://codereview.chromium.org/3546003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5558 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-29 18:15:36 +00:00
antonm@chromium.org
3567207741
Do not invoke indexed interceptor getters for negative indices.
...
BUG=https://bugs.webkit.org/show_bug.cgi?id=46689
Review URL: http://codereview.chromium.org/3520006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5553 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-29 15:08:38 +00:00
vitalyr@chromium.org
1982f9d257
Custom call IC for Math.abs.
...
Review URL: http://codereview.chromium.org/3446024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5538 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-27 23:41:41 +00:00
whesse@chromium.org
25f31f13fa
Fix error in x64 inlined optimized shift operators.
...
Review URL: http://codereview.chromium.org/3496007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-27 07:24:01 +00:00
kaznacheev@chromium.org
c39194e06f
Implemented missing instructions in ia32 and x64 disassembler.
...
ia32: fld(i), fldpi
x64: fld(i), fldpi, cvtsd2si, cvttsd2si
Review URL: http://codereview.chromium.org/3471011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5525 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 12:55:17 +00:00
erik.corry@gmail.com
a26a9b74ab
Revert 5520 due to compilation failure.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5521 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 09:35:19 +00:00
erik.corry@gmail.com
68ef41af29
Small tweaks to make the x64 full code generator generate
...
more compact code.
Review URL: http://codereview.chromium.org/3443022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 08:34:52 +00:00
kmillikin@chromium.org
9c503a8330
Fix some inconsistent formatting.
...
I noticed we sometimes had extra spaces before and after the "const"
keyword. Probably the result of a search and replace gone wrong.
This is a whitespace only change.
Review URL: http://codereview.chromium.org/3427021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 08:25:31 +00:00
kmillikin@chromium.org
830185b175
Clean up some messiness in Scopes.
...
For some reason, the scope's arguments and arguments shadow were
variable proxies, which resulted in all references to the arguments
shadow being shared in the AST. This makes it hard to put per-node
state on the AST nodes.
I took the opportunity to remove Variable::AsVariable which has
confused people in the past, and to rename Variable::slot to the more
accurate Variable::AsSlot.
Review URL: http://codereview.chromium.org/3432022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-24 07:53:59 +00:00
kaznacheev@chromium.org
5e572e4622
Support dec_b instruction in ia32 and x64 disassembler.
...
Review URL: http://codereview.chromium.org/3412028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-23 19:01:56 +00:00
erik.corry@gmail.com
94cf27373c
Cleanup of contexts in the full code generator.
...
Review URL: http://codereview.chromium.org/3449004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5511 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-23 09:22:45 +00:00
kaznacheev@chromium.org
06c867404b
Dynamically determine optimal instance size.
...
The number of inobject properties used to be derived from the number
of this property assignments in the constructor (and increased by 2 to
allow for properties added later). This very often leads to wasted inobject
slots.
This patch reclaims some of the unused inobject space by the following method:
- for each constructor function the first several objects are allocated using the initial
("generous) instance size estimation (this is called 'tracking phase').
- during the tracking phase map transitions are tracked and actual property counts are collected.
- at the end of the tracking phase instance sizes in the maps are decreased if necessary
(starting with the function's initial map and traversing the transition tree).
- all further allocation use more realistic instance size estimation.
Shrinking generously allocated objects without costly heap traversal is made possible
by initializing their inobject properties with one_pointer_filler_map (instead of undefined).
The initial slack for the generous allocation is increased from 2 to 6 which really helps some tests.
Review URL: http://codereview.chromium.org/3329019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-23 09:15:26 +00:00
kaznacheev@chromium.org
e69278a70c
Unuse labels when bailing out of StubCompiler methods.
...
There are 3 methods where early return happen before the
miss label is bound. This is harmless in Release mode,
in Debug an assertion fails.
Review URL: http://codereview.chromium.org/3405022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-23 08:06:19 +00:00
vitalyr@chromium.org
a6bbe9820e
Custom call IC for Math.floor.
...
Review URL: http://codereview.chromium.org/3327022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5499 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-21 12:54:12 +00:00
vitalyr@chromium.org
ceb9d79d73
Generate inline code for contextual loads.
...
Contextual load requires only a map check followed by a cell hole
check so we can generate pretty compact code for that. The fact that
we have inlined code is marked by mov ecx, offset instruction after
the IC call. Inlining is only enabled inside loops and in non-builtin
functions.
The generated code size increase is about 3%. This descreased the
pc-to-code cache hit rate in some of the benchmarks that trigger
GC. To compensate we now have 4 times as much entries in the cache.
Review URL: http://codereview.chromium.org/3402014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5497 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-20 13:50:27 +00:00
vitalyr@chromium.org
c6c55a69a9
Fix direct loading of global function prototypes:
...
We must also check the current context has not changed.
The bug reported by Florian.
Review URL: http://codereview.chromium.org/3410014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-17 09:56:47 +00:00
fschneider@chromium.org
e91a352d02
Fix a regression in character-at stub when doing a keyed load on a string.
...
Loading from out-of-range has to go to the runtime system to check if there
exists a property with that index in the prototype.
Review URL: http://codereview.chromium.org/3410011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 09:18:08 +00:00
kasperl@chromium.org
b2306a41d0
Clean up the insertion of nops (signalling non-inlined loads and
...
stores) in the full codegens.
Review URL: http://codereview.chromium.org/3431010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 09:10:34 +00:00
mikhail.naganov@gmail.com
187d249d92
Enhance SafeStackFrameIterator to avoid triggering assertions in debug mode.
...
When running profiling in debug mode, several assertions in frame
iterators that are undoubtedly useful when iterator is started from a
VM thread in a known "good" state, may fail when running over a stack
of a suspended VM thread. This patch makes SafeStackFrameIterator
to proactively check addresses and bail out from iteration early,
before an assertion will be triggered.
BUG=crbug/55565
Review URL: http://codereview.chromium.org/3436006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5467 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 08:23:34 +00:00
mikhail.naganov@gmail.com
b6c5c5b50d
Fix x64 compilation error. Patch from tfarina@chromium.org
...
http://codereview.chromium.org/3442004/show
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5466 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 08:17:46 +00:00
lrn@chromium.org
4d99cef867
X64: Templating Smi-macros to use both Label and NearLabel.
...
Added some more uses of NearLabel.
Review URL: http://codereview.chromium.org/3381005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5465 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-16 07:24:15 +00:00
ricow@chromium.org
240cee91e4
Add support for near labels.
...
This change introduces near labels in the assembler, allowing us to
uptimize forward jumps (conditional and unconditional) if we can
guarantee that the jump is witin range -128 to +127.
I changed a large fractions of the existing Labels to NearLabels, and
left out cases where it was not immediately clear if it could be used
or not (not immediately clear means labels covering a large code
block, or used in function calls which we could potentially change to
accept near labels).
Review URL: http://codereview.chromium.org/3388004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-15 11:43:12 +00:00
fschneider@chromium.org
bd6a8c1e4e
Make the CompareStub and the UnaryOpStub accept smi inputs.
...
The stubs get an additional flag for including the smi code
inside the stub. This allows us to generate more compact code
if we don't want to inline the smi case outside the stub.
Review URL: http://codereview.chromium.org/3388005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-15 10:14:25 +00:00
vitalyr@chromium.org
c3f04bf46f
Add a few missing nops to signal no inlined code was generated.
...
Review URL: http://codereview.chromium.org/3399005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-14 16:38:02 +00:00
whesse@chromium.org
fc83faa8fd
Move inlined function declarations and support from codegen.* to runtime.*.
...
Review URL: http://codereview.chromium.org/3293002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5451 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-14 14:52:53 +00:00
kasperl@chromium.org
dffb7533aa
Implement for-in cache validity checking in the full codegen on IA-32.
...
Review URL: http://codereview.chromium.org/3376003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5445 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-13 06:13:20 +00:00
ager@chromium.org
666b98fb4b
Handle both global and local variables potentially shadowed by
...
eval-introduced variables in full-codegen.
Make sure that x64 assembler records source positions for calls.
Review URL: http://codereview.chromium.org/3357022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-10 10:57:07 +00:00
vitalyr@chromium.org
624b13a804
Custom call IC for String.fromCharCode.
...
Review URL: http://codereview.chromium.org/3291015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5433 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-09 13:38:01 +00:00
ager@chromium.org
e5b63e7213
Handle global variables potentially shadowed by eval-introduced
...
variables in full-codegen.
Review URL: http://codereview.chromium.org/3295022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-09 10:44:24 +00:00
whesse@chromium.org
990992a857
Remove CodeGenerator::PatchInlineRuntimeEntry and replace its single use in test-log-stack-tracer.cc with an alternative implementation.
...
Review URL: http://codereview.chromium.org/3311002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5392 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-09-01 13:13:31 +00:00
whesse@chromium.org
a18f9d1114
Remove dependence of code-stubs on codegen, the virtual frame code generator. Move some functions used by code-stubs and full-codegen from codegen to macro-assembler.
...
Review URL: http://codereview.chromium.org/3169049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-30 11:48:07 +00:00
ricow@chromium.org
3fb62235e3
Add functionality for finding code objects from a pc that points into
...
the code object's instructions.
This allows us to find a code object using just the pc. This approach
uses a cache (PcToCodeCache) to make sure we don't continuously have
to iterate heap pages.
This change eliminates the need for cooking and uncooking of stack frames.
Review URL: http://codereview.chromium.org/3226014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-30 08:54:43 +00:00
serya@chromium.org
71548e969b
Using array index hash code for string-to-number conversion.
...
Review URL: http://codereview.chromium.org/3141022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-27 11:47:12 +00:00
sgjesse@chromium.org
cfb4a183e5
Fix presumbit errors in previous commit
...
TBR=kasperl@chromium.org
Review URL: http://codereview.chromium.org/3249001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-27 07:41:46 +00:00
sgjesse@chromium.org
be5763fc4d
Cleanup the way the debugger stores live registers when entering at a break
...
The live registers are now only stored to the expression stack with the non pointer values being stored as smis (on the 32-bit platforms these values are assumed to be 31-bit max).
This makes the CEntryStub entry/exit code much simpler, and there is no longer any need for a mode (debug or normal) on it.
Fix a missing live register when breaking at ARM keyed load.
Review URL: http://codereview.chromium.org/3141047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-27 07:08:03 +00:00
vitalyr@chromium.org
ee1dc27795
Fast string construct stub (ia32 only for now).
...
Review URL: http://codereview.chromium.org/3211002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-26 13:59:37 +00:00
kasperl@chromium.org
6d5451d685
Add inlining of binary smi operations in the full codegens on IA32
...
and x64 (on IA32 we even fold constants into the instructions for
a more compact representation) and prepare the ARM full codegen for
the doing the same there.
Review URL: http://codereview.chromium.org/3195028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-26 08:50:38 +00:00
kasperl@chromium.org
1816e05dc2
Prepare for optionally inlining smi cases in the code generated
...
by the full codegens.
Review URL: http://codereview.chromium.org/3116042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5343 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 14:22:03 +00:00
kasperl@chromium.org
3c26a55def
Start using the overwrite mode from the full codegens to generate
...
slightly better code and allow passing arguments to binary op stubs
in registers on the platforms that support it.
Review URL: http://codereview.chromium.org/3203005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 11:10:05 +00:00
whesse@chromium.org
82309445ad
Move code stub implementations from codegen-[platform].cc files to new code-stub-[platform].cc files, and declarations to new code-stub-[platform].h files.
...
Remaining work is to do the same for platform-independent code stub declarations, and to remove all dependencies on codegen header files from code stub files.
Review URL: http://codereview.chromium.org/3195022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5338 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 09:44:44 +00:00
kasperl@chromium.org
59b0bb1e2a
Improve the code generated by the full codegen by keeping
...
track of the fall-through label and avoiding silly jumps.
Review URL: http://codereview.chromium.org/3166033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5337 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 08:57:21 +00:00
kasperl@chromium.org
02a842daae
Simplify the way constructors are called and avoid pushing
...
a dummy receiver that we end up ignoring anyway.
Review URL: http://codereview.chromium.org/3136032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 07:18:32 +00:00
sgjesse@chromium.org
d7fa6b7a21
Fix a bug in the handling of debug break in CallIC
...
The change of calling convention in the CallIC was not reflected in the debug break code. Without the change to the debug break code the added test crashed.
Review URL: http://codereview.chromium.org/3167037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5333 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-25 05:57:02 +00:00
kasperl@chromium.org
a342aa03d5
Add position information for compares, binary ops, and count
...
operations.
Review URL: http://codereview.chromium.org/3120027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-24 13:51:23 +00:00
vitalyr@chromium.org
01e0e6c662
Ported string call IC-s to x64.
...
Review URL: http://codereview.chromium.org/3156045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-24 13:39:29 +00:00
kasperl@chromium.org
46c0c0f44f
Optimize 'typeof <expr> == <string literal>' in the full codegen.
...
Review URL: http://codereview.chromium.org/3110034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5326 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-24 11:41:26 +00:00
kasperl@chromium.org
7b51dc7edb
Cleanup the AST code by removing unused parts and get rid of the
...
flow graph code completely. Add new AST node for null compares
and use it to make the full codegens better at generating code
for null comparisons.
Review URL: http://codereview.chromium.org/3146037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-24 07:26:49 +00:00
lrn@chromium.org
0d12f8f4e5
Fixed remaining bugs in COW-regexp-results.
...
Review URL: http://codereview.chromium.org/3197011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5322 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-23 13:58:56 +00:00
kasperl@chromium.org
d0bdc7956e
Simplified the full codegens by removing the Expression::kTestValue
...
and Expression::kValueTest. At the same time, prepare the code for
keeping track of fall through labels to avoid unnecessary jumps.
Review URL: http://codereview.chromium.org/3152042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5320 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-23 12:55:29 +00:00
ricow@chromium.org
2f8af4f0a4
Fix bug in 64 bit codegen causing us to always go slowcase in apply.
...
After introducing the direct instruction pointer in functions the
CallApplyLazy method was changed on all platforms. The change made to
the 64 bit version was wrong, not using the right operand for the code
comparisons always forcing us into slow case.
Review URL: http://codereview.chromium.org/3104027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5317 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-23 11:21:09 +00:00
lrn@chromium.org
0210df5848
Use Copy-on-write arrays for cached regexp results.
...
Review URL: http://codereview.chromium.org/3158020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5310 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-20 09:37:22 +00:00
ricow@chromium.org
2982f5e320
Change code pointer in function objects to a pointer to the first
...
instruction.
By changing the pointer to the code object to a pointer to the first
instruction we can call directly this instruction directly instead of
looking up the address through the code object.
Review URL: http://codereview.chromium.org/3156028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5309 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-20 07:10:18 +00:00
vitalyr@chromium.org
3202df6c69
Copy-on-write arrays.
...
Object model changes
----------------------------------------
New fixed_cow_array_map is used for the elements array of a JSObject
to mark it as COW. The JSObject's map and other fields are not
affected. The JSObject's map still has the "fast elements" bit set. It
means we can do only the receiver map check in keyed loads and the
receiver and the elements map checks in keyed stores. So introducing
COW arrays doesn't hurt performance of these operations. But note that
the elements map check is necessary in all mutating operations because
the "has fast elements" bit now means "has fast elements for reading".
EnsureWritableFastElements can be used in runtime functions to perform
the necessary lazy copying.
Generated code changes
----------------------------------------
Generic keyed load is updated to only do the receiver map check (this
could have been done earlier). FastCloneShallowArrayStub now has two
modes: clone elements and use COW elements. AssertFastElements macro
is added to check the elements when necessary. The custom call IC
generators for Array.prototype.{push,pop} are updated to avoid going
to the slow case (and patching the IC) when calling the builtin should
work.
COW enablement
----------------------------------------
Currently we only put shallow and simple literal arrays in the COW
mode. This is done by the parser.
Review URL: http://codereview.chromium.org/3144002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5275 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-16 16:06:46 +00:00
sgjesse@chromium.org
e61bd7bd26
ARM: backend opt for ToBoolean: JIT code generation for ToBool
...
Upgraded the CodeGenerator::ToBoolean() function in the ARM backend to use complete JIT code generation and not make runtime calls to ToBool (when VFP is enabled).
This change also includes the vcmp VFP instruction that supports a constant 0.0 as the second operand.
Patch by Subrato K De <subratokde@codeaurora.org>
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5267 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-16 07:52:49 +00:00
peter.rybin@gmail.com
6fa44eb979
LiveEdit: implement stack manipulations for x64
...
Review URL: http://codereview.chromium.org/3120011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-13 13:54:28 +00:00
ager@chromium.org
3e936b547a
Remove experimental fast-codegen. We are no longer working on this
...
approach.
Review URL: http://codereview.chromium.org/3152016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5259 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-13 09:07:09 +00:00
sgjesse@chromium.org
8e0cd6db8a
Handle overwriting valueOf on String objects correctly when adding
...
This adds a check to the fast case string add to ensure that the String object still have the default valueOf function. The default valueOf is sitting on a hidden prototype of String.prototype.
Before using the fast case valueOf the object is checked for a local valueOf property. For slow case objects this check always reports true (the dictionary is not probed, so valueOf might be there) and for fast case objects the descriptor array is checked for the valueOf symbol (just liniar scan). After that the prototype is checked for beeing the initial value of String.prototype. If this all pass (that is the default valueOf is still in place) this result is cached on the map making the check fast the next time.
This is only implemented in the optimizing compiler, as the two usages of %_IsStringWrapperSafeForDefaultValueOf is never hit by the full compiler.
I will port to x64 and ARM when this has been reviewed for ia32.
I will remove the performance counters prior to final commit.
BUG=http://code.google.com/p/v8/issues/detail?id=760
TEST=test/mjsunit/regress/regress-760-1.js
TEST=test/mjsunit/regress/regress-760-2.js
Review URL: http://codereview.chromium.org/3117006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-12 13:43:08 +00:00
vegorov@chromium.org
28f9412cbd
Generalize virtually dispatched scavenger to virtually dispatched specialized visitors.
...
Review URL: http://codereview.chromium.org/3066044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 14:30:14 +00:00
lrn@chromium.org
fb039823ce
X64: Make SmiCompare use the Smi-register when possible.
...
Review URL: http://codereview.chromium.org/3104007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 14:23:12 +00:00
ricow@chromium.org
8402db12c9
Change lazy compilation stub to a builtin.
...
This change changes the lazy compilation stub to a builtin and
eliminates the argc (argument count for the function for which to
create a lazy stub) parameter.
Review URL: http://codereview.chromium.org/3146008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 13:48:58 +00:00
sgjesse@chromium.org
fcfe6d74d9
Minor change to for-in
...
Return (smi) 0 instead of object null from the FILTER_KEY builtin.
Add a test which tests keys being deleted during for-in.
Review URL: http://codereview.chromium.org/3170004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5243 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 13:46:10 +00:00
lrn@chromium.org
abcf1012c6
Allow compiling with strict aliasing enabled on GCC 4.4.
...
Patch by Jay Freeman.
Fixes issue 463.
Review URL: http://codereview.chromium.org/3117007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5237 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 10:52:34 +00:00
ricow@chromium.org
36e5743674
Put direct code pointers into JSFunction objects. This is a first step
...
in allowing more flexible compilation and to simplify builtins lookup.
This changes a number of places where code objects are assigned to
SharedFunctionInfo objects to also assign this code object to the
JSFunction. In addition, the code flushing is changed slightly to
accomodate this (we need to flush the code from functions pointing to
SharedFunctionInfo objects that has already been flushed).
Review URL: http://codereview.chromium.org/3120006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5233 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 08:12:53 +00:00
lrn@chromium.org
53e22e386c
Create a new RegExp object for every evaluation of a RegExp literal.
...
Changes necessary to following ES5 semantics and matching Safari - in ES3
the same RegExp object was generated by each evaluation of the RegExp literal.
Fixes bug 704.
Review URL: http://codereview.chromium.org/3034060
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5198 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-06 13:04:27 +00:00
kaznacheev@chromium.org
70d3296087
Reapplying r5174 (Avoid GC when compiling CallIC stubs).
...
I could not find a way to introduce simple yet useful assertions,
so I removed the assertions that broke tests.
The new patch just fixes the actual problem (GC triggered while raw pointers
are held in LookupResult).
Review URL: http://codereview.chromium.org/3030049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5196 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-06 08:49:59 +00:00
vegorov@chromium.org
bed254fac9
Do not apply JS_RETURN and DEBUG_BREAK_SLOT relocations on x64.
...
Improve tests for debug API to check behavior of JS_RETURN and DEBUG_BREAK_SLOT relocations.
Review URL: http://codereview.chromium.org/3058049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5180 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 13:38:27 +00:00
vegorov@chromium.org
2ba27d2201
Add RelocInfo::DEBUG_BREAK_SLOT to RelocInfo::kApplyMask on ia32/x64 to ensure that debug break slots get relocated correctly during compacting GC.
...
Review URL: http://codereview.chromium.org/3058048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5178 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 11:39:01 +00:00
vegorov@chromium.org
1920692d71
Revert r5174.
...
Review URL: http://codereview.chromium.org/2868108
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5177 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 11:19:43 +00:00
whesse@chromium.org
d25d40aa5c
Modify polymorphic keyed load IC stub to load cached properties from the property array of a fast-case JSObject.
...
Review URL: http://codereview.chromium.org/3053042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5175 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 10:45:07 +00:00
kaznacheev@chromium.org
5f78dc14c8
Avoid GC when compiling CallIC stubs.
...
In rare cases GC could be called from ComputeCallMiss function thus
breaking CallIC::LoadFunction.
Review URL: http://codereview.chromium.org/3047027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-05 08:37:12 +00:00
vegorov@chromium.org
4a2f05ce35
Fix issue 806.
...
Ensure that we are not using r12 as a receiver in inlined NamedStore code.
Review URL: http://codereview.chromium.org/3081007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-02 09:14:44 +00:00
peter.rybin@gmail.com
a9958afeee
Roll over again fixed 3029033 Fix 'step in' after live edit stack manipulation
...
Review URL: http://codereview.chromium.org/3066018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5160 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-30 11:58:43 +00:00
peter.rybin@gmail.com
84cf5ca5cb
Roll back all step-in-fix-related changes
...
Review URL: http://codereview.chromium.org/3012035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-29 21:46:19 +00:00
peter.rybin@gmail.com
16709ee695
Fix 'step in' after live edit stack manipulation
...
Review URL: http://codereview.chromium.org/3029033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5150 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-29 16:40:14 +00:00
podivilov@chromium.org
52762e4c59
Breakpoint position should be inside function body.
...
Review URL: http://codereview.chromium.org/2883042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-28 13:02:03 +00:00
antonm@chromium.org
9d6fd08276
Port faster callbacks invocation to x64.
...
It's a port of http://code.google.com/p/v8/source/detail?r=3209 to x64 platform.
That allows invocation of callbacks without going into runtime.
Review URL: http://codereview.chromium.org/2801008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-28 09:36:53 +00:00
lrn@chromium.org
cf21615bd9
X64: Fix order of operands on movq(reg, xmm).
...
Fixes bug 792, and the Transcendental cache is the only use of this operation.
Review URL: http://codereview.chromium.org/2806080
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-27 12:02:21 +00:00
ager@chromium.org
79e332010a
Fix aliasing problem in inlined stores on x64 and ia32. The receiver
...
and the value can share a register. We need to remove this aliasing
before modifying the registers.
I haven't managed to generate a stand-alon test case for this
yet. I'll do that as a separate change. This was found while loading
Wave.
Review URL: http://codereview.chromium.org/3039025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-23 11:55:03 +00:00
whesse@chromium.org
e8c0a459a9
Fix bug in r5123, Comparison(), by unusing results before unconditional jump to smi comparison JumpTarget.
...
Review URL: http://codereview.chromium.org/3026019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-23 11:20:59 +00:00
whesse@chromium.org
8bb47c1939
Use static type information when creating the inlined code for comparison operators.
...
Review URL: http://codereview.chromium.org/3017025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-23 09:05:46 +00:00
whesse@chromium.org
9deeec0b08
Change asserts to STATIC_ASSERT if they can be checked at compilation time. Just in the codegen-xxx.cc files on all platforms.
...
Review URL: http://codereview.chromium.org/3017018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5121 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-23 08:25:48 +00:00
ager@chromium.org
afa73d3907
Fix Win64 build.
...
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/3017024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-22 09:01:00 +00:00
ager@chromium.org
dc45fcb232
Port inline in-object property stores from ia32 to x64.
...
Review URL: http://codereview.chromium.org/3008017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5115 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-22 06:31:49 +00:00
whesse@chromium.org
8105e9baa3
Remove VirtualFrame::CallStoreIC(void) and CallCommonStoreIC from virtual-frame-x64.cc. Make implementations of CallStoreIC(key, is_contextual) and CallKeyedStoreIC() the same on x64 and ia32. Make ia32 and x64 implementations more alike by moving some functions and changing comments.
...
Review URL: http://codereview.chromium.org/3060002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 15:16:01 +00:00
whesse@chromium.org
9174700dca
Add EmitKeyedStore and EmitKeyedPropertyAssignment to x64. Removal of Reference class from VisitAssignment complete on all platforms.
...
Review URL: http://codereview.chromium.org/3028015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 11:52:57 +00:00
whesse@chromium.org
fe02d5e25f
Add EmitNamedStore and CallStoreIC(name, is_contextual) to x64 platform.
...
Review URL: http://codereview.chromium.org/3050008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5108 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 10:31:52 +00:00
whesse@chromium.org
6612b98dcf
Add EmitSlotAssignment to x64 platform.
...
Review URL: http://codereview.chromium.org/2878042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 08:50:57 +00:00
ager@chromium.org
c9c7f8834e
Inline in-object property stores on ia32 when in loop and not in top-level code.
...
Review URL: http://codereview.chromium.org/3046006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5105 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-21 06:59:34 +00:00
whesse@chromium.org
54f68eacbf
Stop pushing arguments onto the stack in CompareStub until just before calling runtime.
...
This is a fixed version of change 5097, which had the problem that LoadFloatOperands tried to load the arguments from the stack.
Review URL: http://codereview.chromium.org/3040010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5103 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-20 12:41:43 +00:00
whesse@chromium.org
24ca3eddd7
Revert 5097 on ia32 platform until problem is diagnosed.
...
Review URL: http://codereview.chromium.org/3018009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5098 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-19 14:26:51 +00:00
whesse@chromium.org
96a7cc4a38
Delay the pushing of arguments until just before calling runtime in CompareStub.
...
This will allow jumps to runtime that skip useless tests.
Review URL: http://codereview.chromium.org/3016004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-19 13:35:41 +00:00
ricow@chromium.org
4957326521
Refactor type checks in v8natives.js and runtime.js.
...
This includes adding a new inline IsSpecObject method to the code
generator. The old approach was somehow ineffecient since we would
call both IsObject, IsUndetectable and IsFunction to determine if
something was an object according to the spec. This change introduces
a new macro that determines if something is an object according to the
spec (and this does not include null).
This change also corrects a few places where undetectable objects was
not allowed even when they should be (priorly they would use only
IS_SPEC_OBJECT_OR_NULL, which would return false on an undetectable
object, the new IS_SPEC_OBJECT returns true on an undetectable object.
Review URL: http://codereview.chromium.org/2877018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-16 11:21:08 +00:00
whesse@chromium.org
1f85eccb24
Fix compilation errors on X64. Error from r5080 is constructor Operand(register) with too few arguments, while constructing a dummy return value in unreachable code to avoid compiler errors. Also added explicit cast from intptr_t to int in profile-generator.cc to avoid compiler warnings, introduced in r5078.
...
Review URL: http://codereview.chromium.org/3030002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5084 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-16 08:20:39 +00:00
whesse@chromium.org
5794e68f76
Remove unnecessary formatting differences between ia32 and x64 code generators. Mainly just typographical changes.
...
Review URL: http://codereview.chromium.org/3023001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5080 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-15 14:31:49 +00:00
whesse@chromium.org
dd06f4f102
Avoid a smi check when comparing an unknown to a constant smi for equality on ia32 and x64 platforms.
...
Review URL: http://codereview.chromium.org/2897013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5077 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-15 10:34:08 +00:00
serya@chromium.org
1b9391be7a
Fix GenerateNegativeLookup to work with non-symbols as a dictionary key.
...
Review URL: http://codereview.chromium.org/2928009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-15 06:17:45 +00:00
whesse@chromium.org
cb1eedd269
Fix error in x64 fast smi loops, change 4998.
...
Review URL: http://codereview.chromium.org/2925012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5069 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-14 13:22:47 +00:00
ager@chromium.org
6744793c90
Landing for Rodolph Perfetta.
...
Allow compareStub on ARM to take register in reverse order optionally.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/2850046/show
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5059 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-13 20:54:06 +00:00
kaznacheev@chromium.org
0243bc875c
Move serialized scope info from Code object to SharedFunctionInfo.
...
The scope info is now stored in a FixedArray referenced from SharedFunctionInfo.
Review URL: http://codereview.chromium.org/2918001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5056 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-13 13:06:33 +00:00
serya@chromium.org
b569e6f562
Simplifying GenerateDictionaryNegativeLookup by making the 'extra' parameter mandatory.
...
Review URL: http://codereview.chromium.org/2982001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-13 10:02:11 +00:00
whesse@chromium.org
20d4c6d52d
Fix compilation error on 64-bit MacOS V8 compilation. ASSERT_EQ macro needs unambiguous similar integer types as arguments.
...
Review URL: http://codereview.chromium.org/2982005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-13 08:55:06 +00:00
serya@chromium.org
43e28a6fea
Port prototype-call-stubs for normal objects ( http://codereview.chromium.org/2801018 ).
...
Review URL: http://codereview.chromium.org/2860049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5044 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-12 13:23:42 +00:00
whesse@chromium.org
4329a58b1c
Code cleanup: reorder functions in codegen-x64.cc to agree with the order in codegen-ia32.cc. If svn blame shows this change, run svn blame on the previous version of the file to find the actual author of the lines.
...
Review URL: http://codereview.chromium.org/2955004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-09 13:20:12 +00:00
erik.corry@gmail.com
5bc0522ad4
Second half of number alloc change accidentally omitted from
...
last change.
Review URL: http://codereview.chromium.org/2919001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5039 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-08 13:50:13 +00:00
erik.corry@gmail.com
c205ffe05c
Add number allocation call to runtime.cc instead of misusing
...
UnaryMinus.
Review URL: http://codereview.chromium.org/2899004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5038 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-08 13:16:51 +00:00
erik.corry@gmail.com
118a421067
Simplify the transitions in the Binary Op ICs. Now a single call
...
to the runtime will both patch in the more specialized binary op
stub and calculate the answer. This eliminates the need to call
both the rest of the binary op and the patching runtime call. The
runtime routines are altered to be more agressive in returning
Smis so we don't get spurious heap numbers as inputs to binary ops
while we are patching the binary op ICs.
Review URL: http://codereview.chromium.org/2843049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5026 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-06 12:56:55 +00:00
erik.corry@gmail.com
8da222b010
Specialize GenericUnaryStub so that it knows whether it needs to
...
take negative zero into account.
Review URL: http://codereview.chromium.org/2850043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5018 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-05 11:03:16 +00:00
serya@chromium.org
c56b92d65d
This change allows generating call-stubs for objects with normal (non-fast) objects in the prototype chain. StubCompiler::CheckPrototypes does ne
...
If the top level object is a normal object the stub is stored in its prototype map.
Lookup result of type NORMAL is not covered (since the normal stub currently doesn't check the prototype chain).
Review URL: http://codereview.chromium.org/2801018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-02 14:15:04 +00:00
lrn@chromium.org
04da7b90c9
X64: Added register holding Smi::FromInt(1).
...
Don't use r15 for anything any more.
Review URL: http://codereview.chromium.org/2885018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-02 14:09:35 +00:00
whesse@chromium.org
8afef876dd
Fix problem in r4998. Initialize target of break and continue in fast smi loop on X64.
...
Review URL: http://codereview.chromium.org/2830033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-01 16:00:51 +00:00
whesse@chromium.org
94ae008739
Let relational comparison operators quickly compare a string with itself.
...
Review URL: http://codereview.chromium.org/2802028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5000 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-01 15:18:07 +00:00
lrn@chromium.org
59f2b6c825
X64: Made simpler version of fast-smi-loop code.
...
It avoids the overflow check on the increment.
Review URL: http://codereview.chromium.org/2835030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4998 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-01 13:19:32 +00:00
sgjesse@chromium.org
bbb2648464
ARM: Fix GC bug with previous change
...
The change in r4990 contained a bug in Math.pow. One of the arguments for the call to runtime where clobbered if allocation of the heap number for the result failed.
Caught by a couple of Mozilla tests which does a lot of calls to Math.pow.
Fix presubmit error in x64.
Review URL: http://codereview.chromium.org/2847037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4993 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-30 13:39:03 +00:00
whesse@chromium.org
b122fbd363
Decide that different detectable objects are not equal without calling runtime, on all platforms.
...
Review URL: http://codereview.chromium.org/2805046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4992 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-30 13:24:47 +00:00
ager@chromium.org
6044b33766
Implement IC for storing to dictionary case objects.
...
The IC stub is completely generic, so there will only be one such stub
in the system.
Added a new overloaded version of the macro assembler RecordWrite
method for cases where we have the address we store to computed up
front.
Review URL: http://codereview.chromium.org/2804029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4991 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-30 12:27:49 +00:00
lrn@chromium.org
ade53c4282
X64: Make the ToBoolean inline code do even less if the value is known to be a smi.
...
Review URL: http://codereview.chromium.org/2834028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4978 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-29 14:15:34 +00:00
lrn@chromium.org
d539095bcb
X64: A number of small tweaks.
...
Fix bug in disassembler output (using non-generic registers for memory operands in some cases).
Fix bug in movsxbq and make REX optional in movzx?q.
Review URL: http://codereview.chromium.org/2834027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4977 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-29 14:03:11 +00:00
whesse@chromium.org
363060ca23
Ensure that ToPrimitive is called on all objects involved in comparisons <, <=, >, >=. Ensures that ToPrimitive is called when comparing an object to undefined. Fixes bugs on all platforms.
...
Review URL: http://codereview.chromium.org/2834022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4971 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-29 06:47:19 +00:00
whesse@chromium.org
8fda0670ef
Remove not-both-smis optimization on FloatingPointHelper::LoadNumbersAsIntegers on X64 platform.
...
Review URL: http://codereview.chromium.org/2861031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4960 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-28 10:54:07 +00:00
lrn@chromium.org
49c4718443
Fix bug in CheckBothPositiveSmi macro.
...
Fix lint.
Review URL: http://codereview.chromium.org/2826021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4952 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-25 12:31:49 +00:00
lrn@chromium.org
f0529878d1
Add special case of taking a substring that is the entire string to stub.
...
Review URL: http://codereview.chromium.org/2800027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4951 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-25 11:24:41 +00:00
whesse@chromium.org
667c5e84a1
Port optimization of comparison with a trivial LHS from ia32 to x64.
...
Review URL: http://codereview.chromium.org/2868028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 14:22:25 +00:00
whesse@chromium.org
d0a9f76261
Fix error in for-in on x64 platform using full compiler with keyed store IC.
...
BUG=v8:748
http://code.google.com/p/v8/issues/detail?id=748
Review URL: http://codereview.chromium.org/2810027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 14:02:36 +00:00
vitalyr@chromium.org
8ab6832203
Add "has fast elements" bit to maps and use it in inlined keyed loads.
...
A potential issue with this change is creating lots of maps when
objects flip between fast/slow elements modes. We could add special
transitions to avoid this. Yet testing this on our benchmarks, gmail,
and wave seems to indicate that this is not a real problem.
Review URL: http://codereview.chromium.org/2870018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4941 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 13:56:35 +00:00
lrn@chromium.org
40d86c616c
X64: Remove more fpu code. Unroll more local initialization loops.
...
Review URL: http://codereview.chromium.org/2815028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 09:03:49 +00:00
lrn@chromium.org
0dee9a7942
X64: Change some fpu operations to use XMM registers.
...
Review URL: http://codereview.chromium.org/2827022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4930 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 14:05:18 +00:00
lrn@chromium.org
a2fc244de2
X64: A bunch of small fixes.
...
Make push/pop use emit_optional_rex32.
Fix bug in disassembler (swapped name of comisd/ucomisd).
Use fstp in FCmp macro.
Review URL: http://codereview.chromium.org/2818026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4928 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 11:48:30 +00:00
whesse@chromium.org
132fea7980
Use SSE2 registers when comparing identical heap numbers on X64.
...
Review URL: http://codereview.chromium.org/2850018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4927 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 09:21:32 +00:00
kaznacheev@chromium.org
927750571c
Remove redundant checks in and around GenerateDictionaryLoad.
...
Similar or duplicate checks are scattered around the code before doing the dictionary load.
Also the entire branch in GenerateCallNormal that handles global/builtin receiver is
guaranteed to bail out from GenerateDictionaryLoad, so there is no point in generating it at all.
The purpose of the patch is:
- making C++ code more compact and transparent,
- not generating dead code.
There is a tiny performance gain. The patch is ia32 only for now.
Please tell me if I am missing anything.
Review URL: http://codereview.chromium.org/2801007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4926 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 09:10:21 +00:00
lrn@chromium.org
2bd8d3323b
X64: Change strategy for spilling to match ia32. It's just better.
...
Align deferred code blocks to 16-byte address boundaries.
Review URL: http://codereview.chromium.org/2855018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-22 10:07:57 +00:00
lrn@chromium.org
324a6df321
X64: Fix bug in LoadSSE2NumberOperands. It can be called with two smis!
...
Remove some unused labels.
Review URL: http://codereview.chromium.org/2861011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4906 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 12:39:37 +00:00
lrn@chromium.org
ed55948864
X64: Reapply fix for allocating HeapNumber results for >>>.
...
Also skip case where both number arguments are smis.
Review URL: http://codereview.chromium.org/2814021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4905 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 11:21:36 +00:00
whesse@chromium.org
48f2458bd9
Avoid redundant smi check in x64 loading of floats into SSE2 registers.
...
Review URL: http://codereview.chromium.org/2862004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4903 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 09:04:44 +00:00
lrn@chromium.org
c94c39a667
X64: Load HeapNumberMap once in BinaryOpStub, and reuse it.
...
Review URL: http://codereview.chromium.org/2819012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 08:51:44 +00:00
lrn@chromium.org
d8bc7a9436
X64: Make more computations happen on 32-bit values instead of on smis.
...
Review URL: http://codereview.chromium.org/2816014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-18 12:55:04 +00:00
vitalyr@chromium.org
3cafa65462
Track ascii-ness of data in externalized strings.
...
If a two-byte string only contains ascii characters, then we can save
memory when flattening a cons string containing it. Similarly we can
use this in Array.prototype.join implementation. To track this a new
bit is added to instance type. This bit is used as a hint in generated
code and in runtime functions.
To enable testing a new V8 extension is added controlled by
--expose-externalize-string flag.
Review URL: http://codereview.chromium.org/2762008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4894 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 16:19:28 +00:00
lrn@chromium.org
26e692af2f
X64: Change some smi operations to work on untagged integers instead.
...
Use direct reading and writing of integers from Smi fields.
Change RecordWrite with 0 offset to take untagged index instead of
smi tagged index.
Review URL: http://codereview.chromium.org/2872005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4893 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 15:48:43 +00:00
ager@chromium.org
6702ace935
Move definition of NegateConditon from assembler*-inl.h files to
...
assembler*.h files to make clang happy. There was no reason for having
the definition in the -inl.h files in the first place.
Review URL: http://codereview.chromium.org/2825008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 08:41:48 +00:00
ager@chromium.org
2043956c54
Remove the comisd instruction from the ia32 and x64 assemblers. We
...
should always use ucomisd.
Add missing pop from floating-point stack in case of allocation failure.
Review URL: http://codereview.chromium.org/2831009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4878 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 12:32:34 +00:00
lrn@chromium.org
14b216bd61
X64: Change overflow checks to only jump on overflow.
...
Costs an extra move because the result is calculated in a scratch register
and only moved to destination on non-overflow in order to preserve source
registers in case of overflow.
Review URL: http://codereview.chromium.org/2823004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 12:11:22 +00:00
kaznacheev@chromium.org
b251f14782
Port KeyedCallIC implementation to x64 and ARM.
...
Also edited ic-ia32.cc for clarity and better formatting.
Review URL: http://codereview.chromium.org/2853003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4873 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 10:03:47 +00:00
ager@chromium.org
ed0fc41723
Change hash computation for transcendental cache to use arithmetic
...
shifts. Leads to fewer collisions.
Review URL: http://codereview.chromium.org/2809012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4872 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 08:29:25 +00:00
ager@chromium.org
6b474bc1d8
Another x64 build fix. Actually builds now.
...
KExponentBits -> kExponentBits.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/2835001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:55:37 +00:00
ager@chromium.org
1dbf2db4b6
Fix build by fixing a typo in codegen-x64.cc.
...
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/2824002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4858 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:43:00 +00:00
ager@chromium.org
9a34337066
Remove direct reference from builtins code to global object. Load the
...
global object through the context instead.
Review URL: http://codereview.chromium.org/2822003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:08:39 +00:00
whesse@chromium.org
317dcabe84
Change tests for string type in RegExpExecStub on all platforms.
...
Review URL: http://codereview.chromium.org/2772004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4854 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 10:21:24 +00:00
ager@chromium.org
89ffd6c2f2
Implement transcendental cache probing in generated code on ARM.
...
Fixed hash code computation on ia32 and x64 to match the runtime
system (change arithmetic shift right to logical shift right).
Review URL: http://codereview.chromium.org/2731007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-11 10:18:44 +00:00
whesse@chromium.org
ab65809a62
Use static type information in ConstantIntBinaryOperation on x64.
...
Review URL: http://codereview.chromium.org/2754004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-10 14:37:49 +00:00
sgjesse@chromium.org
e045ca6898
Better handling of stepping out of a function
...
With the change in r4820 all return statements are now breakable like any statement, so stepping will stop before the return statement actually returning from a function. With this change the position when breaking in the function return (after executing the return statement) will be the actual end of the function. At this point the return value is available as it saved to the stack by the debug break at return handling. Added information on the actual value returned from the function to the debugger.
Review URL: http://codereview.chromium.org/2783002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4835 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-10 09:02:16 +00:00
whesse@chromium.org
e1e4d985f9
Use static type information on x64 in LikelySmiBinaryOperation.
...
Refactor check for smi operands, using type information, on ia32 and x64.
Review URL: http://codereview.chromium.org/2771001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-09 11:15:54 +00:00
sgjesse@chromium.org
8227208d34
x64: Fix code to return from debug break slot
...
On x64 the return from debug break slot did not pop off the return address.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2731002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-08 12:50:42 +00:00
sgjesse@chromium.org
baf100fc48
Add parenthesis around '&&' within '||'
...
Warning by some gcc versions. Adding the parenthesis made the condition correct.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2725003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4821 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-08 12:20:24 +00:00
sgjesse@chromium.org
634fb9152c
More precise break points and stepping when debugging
...
Added support for more precise break points when debugging and stepping. To achieve that additional nop instructions are inserted where breaking would otherwise be impossible. The number of nop instructions inserted are sufficient to make place for patching with a call to a debug break code stub. On Intel that is 5 nop's for 32-bit and 13 for 64-bit. Om ARM 3 nop instructions (12 bytes) are required.
In order to avoid inserting nop's in to many places a simple ast checker have been added to check whether there are breakable code in a statement or expression. If it is possible to break in an expression no additional break enabeling code is inserted.
Added break locations to the true and false part of a conditional expression.
Added stepping tests to cover more constructs.
These changes are only in the full compiler.
Changed the default value for the option --debugger in teh d8 shell from true to false. The reason for this is that with --debugger turned on the full compiler will be used for all code in when running d8, which can be unexpeceted.
Review URL: http://codereview.chromium.org/2693002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4820 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-08 12:04:49 +00:00
vegorov@chromium.org
53923e9233
Revert r4782. Fix issues 728, 732.
...
Review URL: http://codereview.chromium.org/2701003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4806 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-07 09:36:30 +00:00
kaznacheev@chromium.org
ff61618c4b
Extend CallIC to support non-constant names.
...
This speeds up constructs like this:
var zz='replace'; '123'[zz]('3','4');
Review URL: http://codereview.chromium.org/2280007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4804 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-07 08:27:32 +00:00
ager@chromium.org
a40569e5a0
Port fast eval calls to x64 and ARM. For global variables that can
...
only be shadowed by eval-introduced variables we usually do not need
to do a context lookup in the runtime system.
Review URL: http://codereview.chromium.org/2672001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4803 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-07 07:12:00 +00:00
vitalyr@chromium.org
8689b3bcea
Direct load of global function prototype.
...
As most of call IC code is tied to a context anyway we can save a few dependent loads by having a direct reference to an initial map of a global function.
Review URL: http://codereview.chromium.org/2239009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-04 16:20:34 +00:00
whesse@chromium.org
0fc3dca698
Add test_b(Operand, immediate) to ia32 assembler, and use it where possible. Improve comparison to a constant one-character string. Use CmpInstanceType in more places on ia32. Add IsObjectJSObjectType and IsInstanceJSObjectType to ia32 macro assembler, using a single branch for a range test.
...
Review URL: http://codereview.chromium.org/2586001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4795 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-04 10:46:04 +00:00
whesse@chromium.org
ebc21fc958
Change keyed load IC interface on x64 to pass arguments in registers.
...
Review URL: http://codereview.chromium.org/2470001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-02 14:37:47 +00:00
sgjesse@chromium.org
33973b7d13
ARM: Add more logic to the generic keyed load stub
...
The generic keyed load stub was missing converting string keys to numberign keys and lookup in the keyed lookup cache. This is now added together with an additional counter on all platforms.
Review URL: http://codereview.chromium.org/2441002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-01 21:11:38 +00:00
vitalyr@chromium.org
26be30912d
Fix generated code for String.charCodeAt.
...
Review URL: http://codereview.chromium.org/2468001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-01 14:08:19 +00:00
whesse@chromium.org
019b8c4511
Change the interface of LoadIC on the x64 platform to take its arguments in registers.
...
Review URL: http://codereview.chromium.org/2330003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4759 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-31 13:26:12 +00:00
lrn@chromium.org
1be589d844
X64: Fix issue 678. Bug in some Win64 C calls from generated code.
...
Win 64 C call ABI implementation requires space allocated on stack for four
argument registers, even when passing fewer arguments in registers.
Review URL: http://codereview.chromium.org/2365001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4748 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-28 08:37:44 +00:00
whesse@chromium.org
527c7972c7
Refactor GenerateLoadInterceptor, removing LoadInterceptorCompiler class and CompileLoadInterceptor static function.
...
All platforms (x64, ia32, and ARM) changed.
Review URL: http://codereview.chromium.org/2251003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4747 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 14:14:46 +00:00
vegorov@chromium.org
fc7c5f789a
Cardmarking writebarrier.
...
Reapply r4715 with fixes reviewed in http://codereview.chromium.org/2276002 .
Review URL: http://codereview.chromium.org/2255004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4743 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 12:30:45 +00:00
lrn@chromium.org
19dc4f4fd9
Revert try-commit.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 12:23:46 +00:00
lrn@chromium.org
72f192296d
To be reverted.
...
Add extra checks for bad stack content in X64 RE-macro-assembler,
to check for crash that is only reproducible with the buildbot and
only in release mode.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4741 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 12:22:23 +00:00
antonm@chromium.org
0dd031aa01
Move assertions to not take case to check that it's safe to omit CheckPrototypes in this case.
...
Review URL: http://codereview.chromium.org/2279005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4740 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 11:16:04 +00:00
lrn@chromium.org
7bfe569088
X64: Many small tweaks and more usages of "load smi as int32".
...
Review URL: http://codereview.chromium.org/2266003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4739 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 10:25:33 +00:00
vitalyr@chromium.org
64bc39a726
Fix: make string indexing work with Infinity.
...
NumberToUint32 that I was trying to use maps -0 to +0 (as desired) but
also maps +/-Infinity to +0, which made +/-Infinity a valid string
index. I fixed it by introducing a new runtime function with the right
semantics.
TEST=LayoutTests/fast/js/char-at.html,mjsunit/string-charat.js
Review URL: http://codereview.chromium.org/2223003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 16:11:30 +00:00
vitalyr@chromium.org
ad0e38909f
Custom call IC-s for String.prototype.{charAt,charCodeAt}.
...
These string methods can be composed from two basic blocks: charCodeAt
and fromCharCode, both of which have fast cases for certain types of
inputs. In this patch these two blocks are refactored to allow
generating the fast cases without having to jump around the slow
cases. In the slow cases since they can now be invoked both from
inline runtime functions and from IC stubs we either have to
save/restore state of the current frame or enter/leave a new internal
frame. This is handled by new RuntimeCallHelper interface. Its
implementation for virtual frame is based on FrameRegisterState class
extracted from DeferredCode class.
Review URL: http://codereview.chromium.org/2087009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 14:23:19 +00:00
antonm@chromium.org
3e88d0d2af
Various refactorings in interceptor calling and loading.
...
1) do not push receiver early---that simplifies tail call preparation
on ia32/x64 and renders special cleanup unnecessary;
2) do not do second map check if interceptor's and cached holder
are the same;
3) do not push/pop receiver if receiver and holder registers are the same
(means that receiver is interceptor's holder);
4) do batch pushes on arm;
5) minor cosmetic improvements.
Review URL: http://codereview.chromium.org/2282001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 14:04:37 +00:00
whesse@chromium.org
fcc3d19321
Refactor x64 named loads to agree with ia32 implementation. Remove dead code and flag is_global from x64 keyed loads.
...
Review URL: http://codereview.chromium.org/2121022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 11:38:33 +00:00
lrn@chromium.org
4afc3d3c4f
X64: Make smi memory operations work directly on the embedded value.
...
Adds Operand-relative Operand constructor.
Review URL: http://codereview.chromium.org/2242002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4725 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 10:02:07 +00:00
vegorov@chromium.org
e268fbdaba
Revert r4715.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2274001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 09:24:44 +00:00
erik.corry@gmail.com
e66f276e46
The way reloc entries are visited by the ObjectVisitor is architecture
...
dependent, so we push it down to the architecture dependent files.
Currently all architectures visit in almost the same way, but this is
about to change on ARM with movw/movt.
Review URL: http://codereview.chromium.org/2218002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4721 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 08:34:07 +00:00
antonm@chromium.org
f6ec1b4f26
Comment the code for loading and calling with interceptor.
...
Review URL: http://codereview.chromium.org/2124021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 14:59:11 +00:00
sgjesse@chromium.org
22e4847fde
ARM: Update the full compiler to handle all code
...
The full compiler is now complete on ARM as well. The syntax checker is still used to determine whether to use it for top level code or not during normal execution. When debugging is enabled all code will be compiled with the full compiler.
This change removes the temporary flag --force-full-compiler and now the flag --always-full-compiler enables the full compiler for all code on all platforms.
This also fixes building on Intel platform without debugger support (ENABLE_DEBUGGER_SUPPORT not defined) and adds full check for the full compiler for lazily compiled code.
Review URL: http://codereview.chromium.org/2163006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4716 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 14:08:17 +00:00
vegorov@chromium.org
675e711f1c
Cardmarking writebarrier.
...
- New сardmarking write barrier handles large objects and normal objects in a similar fashion (no more additional space for pointer tracking is required, no conditional branches in WB code).
- Changes to enable oldspaces iteration without maps decoding:
-- layout change for FixedArrays: length is stored as a smis (initial patch by
Kevin Millikin)
-- layout change for SharedFunctionInfo: integer fields are stored as smi on
arm, ia32 and rearranged on x64.
-- layout change for String: meaning of LSB bit is fliped (1 now means hash not
computed); on x64 padding is added.
-- layout of maps is _not_ changed. Map space is currently iterated in a special
way.
Review URL: http://codereview.chromium.org/2144006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 13:15:16 +00:00
vegorov@chromium.org
2241d2af45
Reverting r4703.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2073018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 17:37:47 +00:00
vegorov@chromium.org
8879691793
Cardmarking writebarrier.
...
Reapplication of r4685 (reviewed http://codereview.chromium.org/2101002 ) with minor modifications:
- Fix compilation problems on Win64.
- Improve heap verification pass: search for garbage pointers to new space not only in dirty regions but in all regions.
Review URL: http://codereview.chromium.org/2114015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 15:52:38 +00:00
lrn@chromium.org
74c01fdc50
X64: Added inline conversion of double to smi for LikelySmiBinaryOp shifts.
...
Review URL: http://codereview.chromium.org/2078028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 09:08:14 +00:00
whesse@chromium.org
ac60f498d2
Change keyed store IC interface on x64 to take value, key, and receiver in registers rather than on the stack.
...
Review URL: http://codereview.chromium.org/2111011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4692 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 15:09:21 +00:00
whesse@chromium.org
c5859a09dd
Fix formatting in last change, file x64/full-codegen-x64.cc.
...
Review URL: http://codereview.chromium.org/2081014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:56:49 +00:00
ager@chromium.org
1d5eb6517f
Reapply r4686: Complete version of full codegen for x64.
...
Already reviewed at: http://codereview.chromium.org/2078022/show
TBR=vegorov@chromium.org
Review URL: http://codereview.chromium.org/2137008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:33:02 +00:00
vegorov@chromium.org
955828e437
Reverting r4685, r4686, r4687
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2071020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:02:51 +00:00
erik.corry@gmail.com
52cef3f0e1
Orthogonalize the byte codes used for the snapshot so that
...
the issue of how the pointee is found and how the pointer
is encoded are separated out. This will make it simpler to
support various pointers from and to code in the future.
Review URL: http://codereview.chromium.org/2069013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:54:31 +00:00
ager@chromium.org
355d3166e1
Complete the full codegenerator on x64.
...
Review URL: http://codereview.chromium.org/2078022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:50:09 +00:00
vegorov@chromium.org
b38a0a719a
- Changes to enable oldspaces iteration without maps decoding:
...
-- layout change for FixedArrays: length is stored as a smis (initial patch by Kevin Millikin)
-- layout change for SharedFunctionInfo: integer fields are stored as smi on arm, ia32 and rearranged on x64.
-- layout change for String: meaning of LSB bit is fliped (1 now means hash not computed); on x64 padding is added.
-- layout of maps is _not_ changed. Map space is currently iterated in a special way.
- Cardmarking write barrier. New barrier handles large objects and normal objects in a similar fashion (no more additional space for pointer tracking is required, no conditional branches in WB code).
Review URL: http://codereview.chromium.org/2101002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:10:38 +00:00
lrn@chromium.org
7410865adb
X64: Make all arithmetic ops, and a few other, try to avoid rsp and r12 as base register.
...
Using rsp or r12 as the "base" register of the ModR/M byte forces a SIB byte,
even with no index register. Some operations can avoid this by using another,
equivalent, encoding that swaps the meaning of the base and register parts.
Review URL: http://codereview.chromium.org/2075010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-19 08:16:52 +00:00
sgjesse@chromium.org
19d98493fc
Add complete implementation of full compiler for the ia32 architecture
...
This makes the full compiler handle all constructs on ia32. However the syntax checker for the full compiler is still the same so for both normal operation and with the flag --always-full-compiler the coverage of the full compiler will be the same.
This is on preparation for improving the debugger break point experience where the plan is to only use code from full code generator when debugging JavaScript.
Runs all tests on all three platforms in release and debug mode. The tests also run with both the following flags to the test runner
--special-command="@ --nofull-compiler"
--special-command="@ --always-full-compiler"
The changes to the x64 and ARM architectures are mainly structural due to the change to EmitVariableAssignment to handle initialization of const variables.
Review URL: http://codereview.chromium.org/1989012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4676 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-19 07:32:32 +00:00
whesse@chromium.org
cd6afbc617
Spill arguments for a function call from the virtual frame as they are produced.
...
Review URL: http://codereview.chromium.org/2103007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 11:19:34 +00:00
fschneider@chromium.org
b46757a4e1
Eliminate smi check using type information in x64 count operation.
...
Also simplify the assertion code for type information in the macro assembler.
Review URL: http://codereview.chromium.org/2130003/show
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 08:43:08 +00:00
mark@chromium.org
e9b5d7855b
Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac
...
Chromium build.
v8.gyp no longer sets any V8_TARGET_ARCH_* macro on the Mac. Instead, the
proper V8_TARGET_ARCH_* macro will be set by src/globals.h in the same way as
the V8_HOST_ARCH_* macro when it detects that no target macro is currently
defined. The Mac build will attempt to compile all ia32 and x86_64 .cc files.
#ifdef guards in each of these target-specific source files prevent their
compilation when the associated target is not selected. For completeness,
these #ifdef guards are also provided for the arm and mips .cc files.
BUG=706
TEST=x86_64 Mac GYP/Xcode-based Chromium build (still depends on other changes)
Review URL: http://codereview.chromium.org/2133003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 15:41:35 +00:00
lrn@chromium.org
44fb6cc8d3
X64: Made bit-fiddling fallback for double-to-int32 conversion.
...
Review URL: http://codereview.chromium.org/2048007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4648 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-12 11:16:35 +00:00
ager@chromium.org
75cd61a912
Refactor the fast-case code for loading local/global variables and
...
arguments in the presence of eval to avoid code duplication. Almost
the same code was duplicated for loading properties and calling
properties.
Review URL: http://codereview.chromium.org/2053003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-12 09:12:23 +00:00
whesse@chromium.org
596adcf675
Optimize loading the global object for a named load on x64.
...
This is a port of r3911 to x64.
Review URL: http://codereview.chromium.org/1983005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4642 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-11 08:32:13 +00:00
lrn@chromium.org
764dc66556
Made format string match arguments for GenericBinaryOpStub::GetName.
...
Review URL: http://codereview.chromium.org/2014010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4640 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-11 08:07:42 +00:00
lrn@chromium.org
e867e63281
RegExp: Remove use of 16-bit immediates on ia32/x64.
...
Also check more than one character at a time.
16-bit immediates requires a prefix that changes the length of the instruction.
This causes predecoder mispredictions and subsequent pipeline stalls.
Also removed redundant "atStart" local variable which is equivalent to startIndex == 0.
Review URL: http://codereview.chromium.org/1988009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-11 07:29:10 +00:00
ager@chromium.org
f54b7767c6
Implement fast load and call of arguments in the presence of eval.
...
Load the arguments object from the context if there are no extensions
objects on the way. Then load the argument with a keyed load ic.
Review URL: http://codereview.chromium.org/2033004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4633 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-10 12:20:06 +00:00
lrn@chromium.org
9f859fef26
Make X64 double-to-int32 conversion use the 64-bit version of cvttsd2si.
...
Use type info to allow ia32 to use the 32-bit versions in some cases.
Remove sse3-specific code from X64 GenericBinaryOpStub.
Review URL: http://codereview.chromium.org/1992011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4632 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-10 11:38:58 +00:00
erik.corry@gmail.com
fa7c92eaf5
First step towards making JumpTarget work on ARM. Instead
...
of having a list of virtual frame pointers in the jump
target we have one virtual frame, which is the frame that
all have to merge to to branch to that frame. The virtual
frame in the JumpTarget is inside the JumpTarget, rather than
being an allocated object that is pointed to. Unfortunately
this means that the JumpTarget class has to be able to see
the size of a VirtualFrame object to compile, which in turn
lead to a major reorganization of related .h files. The
actual change of functionality in this change is intended
to be minimal (we now assert that the virtual frames match
when using JumpTarget instead of just assuming that they do).
Review URL: http://codereview.chromium.org/1961004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-10 11:32:25 +00:00
erik.corry@gmail.com
429f0065fe
Mark a function in assembler-x64-inl.h inline.
...
Without this annotation, it can be multiply-defined when it is
included in multiple source files. This is a commit for
evanm@chromium.org . See http://codereview.chromium.org/2044004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 20:31:24 +00:00
sgjesse@chromium.org
ae4cc3c287
Add a flag to the ARM version of new space allocation in generated code
...
The flag SIZE_IN_WORDS indicate that the requested size is in words and not in bytes, The default is to specify the size in bytes.
Review URL: http://codereview.chromium.org/2047002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4617 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 14:06:55 +00:00
antonm@chromium.org
a83a88cd58
Moving more code to lookup an item from the native cache into code generator.
...
To bypass expensive invocation of JS functions from C++ and omit runtime
call overhead for searching the cache, more elaborate deferred code is generated.
Review URL: http://codereview.chromium.org/1695007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4616 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 12:48:18 +00:00
lrn@chromium.org
876c3e06b5
Synchronizing Comparison codegen between X64 and ia32.
...
Review URL: http://codereview.chromium.org/2010007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4612 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 11:25:29 +00:00
antonm@chromium.org
5ce4f8059b
Turn {mov,add}q into {mov,add}l.
...
All the cases fixed are safe as registers hold 32-bit value, but that looks
safer to operate on proper sizes.
Review URL: http://codereview.chromium.org/2017002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 10:56:22 +00:00
ager@chromium.org
856135af42
Implement fast calls of functions in the presence of eval (if the eval
...
calls do not introduce new bindings).
The infrastructure is already in place for fast loads from context
slots in the presence of eval. This change simply uses that
infrastructure for calls as well as loads.
Review URL: http://codereview.chromium.org/2027002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4609 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 10:25:11 +00:00
vitalyr@chromium.org
4724826f4a
Refactored custom call IC generators:
...
* All generators are listed in a single place.
* Generators are installed as a separate pass in the bootstrapper.
* Replaced pointers to generator functions with integer ids.
Review URL: http://codereview.chromium.org/1981002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 13:21:53 +00:00
whesse@chromium.org
fc41b41fc2
Allocate the right number of fast context slots on X64 and ARM. Port from ia32.
...
This is ported from change 3505 on ia32.
Review URL: http://codereview.chromium.org/1992003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4603 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 11:59:10 +00:00
lrn@chromium.org
23064a1b28
X64: Skip smi-test on GenericBinaryOpStub if static type test says we have smis.
...
Review URL: http://codereview.chromium.org/2032001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4600 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 10:31:34 +00:00
erik.corry@gmail.com
d18b73c2fe
Add a single-element global positive and negative cache to
...
the implementation of instanceof.
Review URL: http://codereview.chromium.org/1765012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4599 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 09:35:18 +00:00
whesse@chromium.org
1f13b58b97
Correct bug with left shift on X64 platform from change 4571 ( http://code.google.com/p/v8/source/detail?r=4571 ). Speed up left shift with a constant left hand side on X64 platform. Add unit test for this bug. Remove unused failure target argument from MacroAssembler::SmiShiftLeft and MacroAssembler::SmiShiftLeftConstant.
...
Review URL: http://codereview.chromium.org/1934004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4598 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 08:15:15 +00:00
whesse@chromium.org
cbcec49cd7
Make sure that type info of results is correctly recorded when results are moved to registers by generated code.
...
Review URL: http://codereview.chromium.org/1905002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-05 08:56:16 +00:00
serya@chromium.org
16d3811d50
Changing string length field type from int to SMI. It will make it be a regular field. Code generated in EmitNamedLoad could be patched for faster access to string.length.
...
Review URL: http://codereview.chromium.org/1706013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 14:49:50 +00:00
lrn@chromium.org
4fdf57ace0
X64: Faster push/pop implementation.
...
Also snuck in an intended optimization for fast api call preparation and a few indentation fixes.
Review URL: http://codereview.chromium.org/1689010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 13:23:58 +00:00
lrn@chromium.org
001f020d04
X64: Minor change of control flow in inline transcendental cache.
...
Move NaN-handling away from main code path.
Review URL: http://codereview.chromium.org/1851002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4577 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 12:05:55 +00:00
whesse@chromium.org
852cebb1cb
Improve static type information in (constant SHL smi) computation.
...
Review URL: http://codereview.chromium.org/1910002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4576 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 11:17:45 +00:00
ager@chromium.org
6230f5397d
Port inline swapping of elements for the sort function in array.js
...
from ia32 to arm.
Original change: http://codereview.chromium.org/1709008
Review URL: http://codereview.chromium.org/1944001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4575 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 11:06:59 +00:00
podivilov@chromium.org
d9587ab8d6
Port string keyed load IC improvements (r4444) to ARM.
...
Review URL: http://codereview.chromium.org/1769014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4573 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 09:32:07 +00:00
whesse@chromium.org
1f9fef3d51
Add inlined code for (constant SHL smi), ported from ia32 to x64. Improve type information on ia32 version of code.
...
Review URL: http://codereview.chromium.org/1869001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4571 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 08:10:05 +00:00
ager@chromium.org
cf54120a58
Port inlined version of swap primitive for sorting from ia32 to x64.
...
Original code review for ia32 version: http://codereview.chromium.org/1709008
Review URL: http://codereview.chromium.org/1858002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 18:18:25 +00:00
whesse@chromium.org
130d6adf78
Change calling convention of BinaryOperation code generation functions on x64 platform to match ia32 platform.
...
Review URL: http://codereview.chromium.org/1844002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 10:53:03 +00:00
lrn@chromium.org
1790c3534a
X64: Port inline transcendental cache to X64.
...
Review URL: http://codereview.chromium.org/1860001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 10:43:49 +00:00
lrn@chromium.org
289b245d2b
X64: Use allocation with no scratch registers to avoid push/pop.
...
Minor prettifications.
Review URL: http://codereview.chromium.org/1862001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4562 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 09:54:48 +00:00
erik.corry@gmail.com
3906e2b109
No implicit conversion between a Foo** and a Handle<Foo>.
...
Review URL: http://codereview.chromium.org/1861001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4561 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 09:53:47 +00:00
ager@chromium.org
b83486c5f6
Port handling of heap numbers in deferred code for binary ops from
...
ia32 to x64.
Review URL: http://codereview.chromium.org/1692015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 08:46:23 +00:00
lrn@chromium.org
c815de4f52
X64: Update allocation to work with no scratch registers at all.
...
Review URL: http://codereview.chromium.org/1856001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4559 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 07:44:55 +00:00
whesse@chromium.org
e7a3875bb4
Cut-and-paste port from ia32 to x64: Delay load of trivial left operand of binary operation until after right operand loaded.
...
Review URL: http://codereview.chromium.org/1736023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4552 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-30 08:40:31 +00:00
antonm@chromium.org
55e32d2f3b
Introduce faster swapping primitives.
...
Keyed store stub sits high in sorting profiles.
Swapping allows to save us additional type checks as we could both read and
write elmenets (on fast path) without them.
Review URL: http://codereview.chromium.org/1709008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4551 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-29 15:14:39 +00:00
antonm@chromium.org
6cff35044d
Add ability to bail out from custom call generators to x64 and ARM platforms.
...
http://code.google.com/p/v8/source/detail?r=4503 added this functionality to ia32.
Review URL: http://codereview.chromium.org/1694018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4549 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-29 13:58:39 +00:00
sgjesse@chromium.org
0b4c1efd18
Improve the success rate for inline keyed store on x64
...
Added a simple new space check on the elements fixed array which can allow
updating with other values than smis without updating the remembered set.
Also combined the positive smi and range check so that a separate smi check can be avoided when the key is known to be a smi.
This is a port of r4543.
Review URL: http://codereview.chromium.org/1702013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-29 12:52:09 +00:00
whesse@chromium.org
3e689b5283
Add inline floating point comparisons for comparison operators to x64 platform.
...
Review URL: http://codereview.chromium.org/1703019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-29 11:44:17 +00:00
podivilov@chromium.org
1872574f4d
Port string keyed load IC improvements (r4444) to x64.
...
http://compute1.aar:9013/golem/r4502-v8-podivilov-string-char-at2-x64-vs-4502-v8-x64.html
Review URL: http://codereview.chromium.org/1750017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-28 17:16:51 +00:00
ager@chromium.org
62e8d5a789
Port inline version of Math.sqrt and Math.pow from ia32 to x64.
...
Review URL: http://codereview.chromium.org/1774010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4541 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-28 14:43:51 +00:00
podivilov@chromium.org
c973f99ce4
Port inlining of type checks in call ICs for API functions to x64 and arm (issue 602, r3825).
...
Review URL: http://codereview.chromium.org/1650011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-28 14:06:35 +00:00
whesse@chromium.org
f0f62a06d4
Fix logical error in change 4515.
...
Review URL: http://codereview.chromium.org/1769011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-27 15:02:22 +00:00
podivilov@chromium.org
5a999d8b18
Port number string cache lookup for heap numbers in generatred code to x64 and ARM.
...
Review URL: http://codereview.chromium.org/1575047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-27 14:56:56 +00:00
whesse@chromium.org
52a5ebc70f
Port improved ia32 CompareStub to x64. Add framework for inlined floating point compares, to be implemented in next change.
...
Review URL: http://codereview.chromium.org/1687014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-27 14:02:24 +00:00
vitalyr@chromium.org
559ba2ccf0
Don't share function result caches between contexts.
...
A reference to the caches array was embedded directly into the builtin
code and this allowed sharing objects between contexts.
Unfortunately, clearing the cache on GC won't prevent sharing so we
either have to have per-context builtin code or load the cache
indirectly from the current context. This change implements the second
approach. The first approach may be interesting to consider in the
future for some perfomance critical functions, and the current
approach can still be improved by putting the caches directly into the
global context (or even global objects).
Review URL: http://codereview.chromium.org/1731002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-25 10:31:52 +00:00
whesse@chromium.org
07f68ec357
Compute static type information for remaining expression types on x64 platform.
...
Review URL: http://codereview.chromium.org/1751008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-23 08:05:13 +00:00
whesse@chromium.org
5db2af4873
Fix error in static type information computation for bitwise shift.
...
Review URL: http://codereview.chromium.org/1756007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-22 09:02:10 +00:00
sgjesse@chromium.org
49d685684a
Minor formatting changes.
...
Review URL: http://codereview.chromium.org/1766005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-22 07:35:43 +00:00
whesse@chromium.org
9cf54367e9
Port inlined quick equality check for non-NaN to x64.
...
Review URL: http://codereview.chromium.org/1756002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4463 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-21 13:33:36 +00:00
ager@chromium.org
c678e44805
Add missing smi check in IC for nonexistent properties.
...
Add regression test.
BUG=v8:681
Review URL: http://codereview.chromium.org/1673005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4446 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-20 10:20:39 +00:00
erik.corry@gmail.com
e1b3b92a2c
Make not sucking at regexp the default
...
(remove V8_NATIVE_REGEXP flag, add
V8_INTERPRETED_REGEXP flag).
Review URL: http://codereview.chromium.org/1635001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4443 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-19 19:30:11 +00:00
ager@chromium.org
07db17ce1b
Remove some remaining references to boilerplate functions.
...
Review URL: http://codereview.chromium.org/1605037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4440 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-19 12:39:07 +00:00
vegorov@chromium.org
ab6394b274
Fix constant offset check for inlined write barrier to work in cases when offset is given from tagged object pointer.
...
Review URL: http://codereview.chromium.org/1646008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4431 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 14:43:32 +00:00
sgjesse@chromium.org
88fc8f1fb5
Add tracking of loop nesting to ARM code.
...
Review URL: http://codereview.chromium.org/1645008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4429 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 14:06:57 +00:00
sgjesse@chromium.org
f6cce43255
Add stack alignment check to ia32 and x64
...
The stack is now checked for proper alignment before calling into C code when the flag --debug-code is turned on.
Review URL: http://codereview.chromium.org/1637015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 12:41:30 +00:00
ager@chromium.org
afc15bb48f
Reapply load ICs for nonexistent properties.
...
We need to be careful to check global property cells for the property
encountered during lookup. Therefore, the ICs have to be specific to
the name of the property if global objects are involved. In
principle, this means that we could get a large number of monomorphic
ICs for the same map if there is a global object in the prototype
chain. However, since this is only done for normal load ICs and not
for keyed load ICs I do not expect this to be a problem. I will
experiment with it once this goes in.
BUG=675
Review URL: http://codereview.chromium.org/1559033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4426 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 11:25:41 +00:00
sgjesse@chromium.org
09aa20da08
Ensure stack alignment in ARM port
...
In the CEntryStub keep track of the actual skew from the correct alignment to ensure proper alignment before calling the runtime. Add checks to test the expected skew when running on hardware.
Use the PrepareCallCFunction/CallCFunction in a few other places.
Add check to the ARM simulator for correct alignment.
Add option --sim-stack-alignment to set the stack alignment in the simulator. Currntly only values 4 and 8 makes sense. 8 is the default to make snapshots generated with the simulator work on hardware requiring 8 byte stack alignment.
Review URL: http://codereview.chromium.org/1530043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 09:34:47 +00:00
vitalyr@chromium.org
1d8ec1e47b
One less dependent load in InvokeBuiltin.
...
Review URL: http://codereview.chromium.org/1638006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 20:16:19 +00:00
antonm@chromium.org
a713b27428
Introduce fast native caches and use it in String.search.
...
Review URL: http://codereview.chromium.org/1563005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4418 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 14:46:15 +00:00
whesse@chromium.org
518481d5e6
Revert change 4401.
...
Review URL: http://codereview.chromium.org/1589035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4416 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 11:45:03 +00:00
ricow@chromium.org
7214ddb0bf
Move const declarations out of if in assembler-x64.cc (correcting linux64 bit compile error)
...
Review URL: http://codereview.chromium.org/1595028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4414 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 10:38:03 +00:00
sgjesse@chromium.org
d74a8a8014
Port direct call to native RegExp from JavaScript to ARM
...
The ia32 version was implemented in r3542 and r3543. The x64 was implementeed in r3740, r3741 and r3742.
Minor tweaks to the is32 and x64 code as well.
Review URL: http://codereview.chromium.org/1575035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4409 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 09:25:33 +00:00
ricow@chromium.org
4e3fc71786
Create const ints for int8_t and int32_t in jmp assembler (making win64 build happy)
...
Review URL: http://codereview.chromium.org/1637009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4408 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 08:54:08 +00:00
ager@chromium.org
aa8818560d
Add inline caches for loading non-existing properties.
...
Review URL: http://codereview.chromium.org/1539034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4401 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 06:25:11 +00:00
whesse@chromium.org
f720592ac3
Port optimized comparison of a string to a constant single character string to X64 platform. Fix small mistake on ia32 platform.
...
Review URL: http://codereview.chromium.org/1627014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-13 13:42:45 +00:00
lrn@chromium.org
7bca61c11d
Fix build problems on Windows 64-bit by casting.
...
Gave the root register a name for reference.
Review URL: http://codereview.chromium.org/1539033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4397 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-13 11:59:37 +00:00
lrn@chromium.org
2716660dab
X64: Add smi-type to loop variable of simple smi for-loops.
...
Review URL: http://codereview.chromium.org/1642003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-13 11:34:14 +00:00
lrn@chromium.org
285d5bc48a
Native construction of RegExp result objects, with in-object index and input.
...
Avoid cloning using CloneRegExpResult for results that are just arrays.
Made a more direct path for string.match with string argument.
Review URL: http://codereview.chromium.org/1645001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4395 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-13 09:31:03 +00:00
whesse@chromium.org
a8e817161a
Optimize the assembly code generated for Math.random()
...
Review URL: http://codereview.chromium.org/1631008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-12 10:07:50 +00:00
antonm@chromium.org
400b1be449
Faster invocation of custom comparator function.
...
Review URL: http://codereview.chromium.org/1623004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-12 07:05:24 +00:00
kaznacheev@chromium.org
d265cc8e9b
Removing BinaryOpIC::Clear. This method relied on some less-than-obvious hack,
...
and there was zero (or small negative) performance advantage.
Review URL: http://codereview.chromium.org/1623005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-08 13:41:11 +00:00
whesse@chromium.org
c33886c9b7
Change Math.random() to return 32 bits of random goodness, instead of 30 random bits. Math.random now allocates a HeapNumber inline, and calls a C funciton directly to put the random bits into it.
...
Review URL: http://codereview.chromium.org/1599019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4354 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-07 08:18:51 +00:00
peter.rybin@gmail.com
be5bb26e38
LiveEdit: implement frame dropping
...
Review URL: http://codereview.chromium.org/1118007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-06 17:58:28 +00:00
vitalyr@chromium.org
9b54227cc7
Land patch by Pavel Podivilov (podivilov@chromium.org).
...
Port string stub for keyed loads to x64 and ARM.
BUG=566
TBR=ager@chromium.org
TEST=test/mjsunit/string-index.js
Original code review: http://codereview.chromium.org/1628003
Review URL: http://codereview.chromium.org/1567024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-06 14:16:39 +00:00
mikhail.naganov@gmail.com
889f6cce74
C++ profiles processor: wire up to VM.
...
If 'shell' is compiled with 'cppprofilesprocessor=on' and run
with '--prof' flag, top-down and bottom-up call trees are printed
on shell exit.
Review URL: http://codereview.chromium.org/1582004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4343 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-06 10:36:38 +00:00
vitalyr@chromium.org
f1a47d2bbd
Inline %_ArgumentsLength.
...
This makes usage of cmov unnecessary.
Review URL: http://codereview.chromium.org/1533004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-30 13:55:03 +00:00
vitalyr@chromium.org
30efbb0622
Call binary op stub instead of runtime in count operations.
...
Review URL: http://codereview.chromium.org/1560001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-29 14:10:49 +00:00
vitalyr@chromium.org
3f2083286e
Start using String type info:
...
* Improved string concatenation.
* Fixed type inference in prefix/postfix count operations.
Review URL: http://codereview.chromium.org/1520001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-29 11:48:57 +00:00
ager@chromium.org
2bcc49740c
Port number dictionary probing in generated code to ARM.
...
Fix bug in ARM pixel array load code and a typo in the x64 number
dictionary load code.
Fix bug in string dictionary probing where we did not bail out if the
object has an interceptor.
BUG=640
Review URL: http://codereview.chromium.org/1332003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4292 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-26 09:05:22 +00:00
ricow@chromium.org
65e099e277
Land http://codereview.chromium.org/1311003/diff/8001/9001 to allows us to push to trunk. Corrected the ASSERT from the review.
...
Review URL: http://codereview.chromium.org/1404001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-26 07:55:38 +00:00
vitalyr@chromium.org
6fbad6e230
Simplify passing of AccessorInfo to interceptors:
...
* Use slots on the native stack when possible instead of Relocatable.
* Got rid of a gap in AccessorInfo fields.
* Added test for non-cacheable post-interceptor lookup.
Review URL: http://codereview.chromium.org/1327002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4288 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 17:08:22 +00:00
erik.corry@gmail.com
f5523ecc6a
Split the virtual frame into heavy and light versions.
...
The heavy version is for x86 and x64. The light version
is for ARM and MIPS. Remove the elements_ array from the
virtual frame in the light version. More simplifications
to come, followed by light register allocation.
Review URL: http://codereview.chromium.org/1164002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4272 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 13:18:00 +00:00
fschneider@chromium.org
0737ec8dcb
Rename NumberInfo to TypeInfo.
...
Since we add more type (StringType, PrimitiveType) the name
NumberInfo does not make sense anymore.
Review URL: http://codereview.chromium.org/1207006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 12:44:15 +00:00
sgjesse@chromium.org
6a63910650
Re-apply "Inline floating point compare"
...
This re-applies r4220 and r4233, which was reverted in r4254 due to a bug. This bug has now been fixed, with the only change being line 2884 changed from
__ SmiTag(left_side->reg());
to
__ SmiTag(operand->reg());
Added a regression test.
BUG=http://crbug.com/39160
TEST=test/mjsunit/regress/regress-crbug-39160.js
Review URL: http://codereview.chromium.org/1251009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4261 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 12:04:34 +00:00
fschneider@chromium.org
51495beb78
Store type information with constants.
...
Instead of testing the value of a constant frame element to determine
the type we compute its type information at construction time.
This speeds up querying the type information during code generation.
This change also adds support for Integer32 constants and sets
the type information accordingly.
Review URL: http://codereview.chromium.org/1277001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4256 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-24 15:29:41 +00:00
kmillikin@chromium.org
c0c1ebcaa4
Revert "Inline floating point compare"
...
This reverts svn revisons r4220 and r4233.
Review URL: http://codereview.chromium.org/1279001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4254 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-24 14:26:14 +00:00
sgjesse@chromium.org
0c6a3f4864
Fix GetName and Print for CompareStub
...
Review URL: http://codereview.chromium.org/1108006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4233 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-23 14:59:36 +00:00