- 28 Jul, 2011 2 commits
-
-
svenpanne@chromium.org authored
Review URL: http://codereview.chromium.org/7524025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8760 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
To do this, the Branch instruction needs to carry around a temporary register, but only when the crankshafted code will make a map access. When the crankshafted code sees an object of a type it hasn't encountered before, it will always trigger a deopt. Another option in theses cases would be calling a ToBooleanStub which can handle all types, but then one has to be careful to *not* trigger a GC (which is currently a bit tricky to achieve). Const-corrected ToBoolean::Types. Moved the NeedsMap logic into ToBoolean::Types itself, where it belongs. This patch improves a lot of benchmarks, crypto-orig even by 16.7%, but slows down others. The slowdown has to be investigated, but I'd like to get this patch out first to fix the flakiness problems we currently have due to the previous crankshafted ToBoolean. Review URL: http://codereview.chromium.org/7461107 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Jul, 2011 1 commit
-
-
danno@chromium.org authored
BUG=none TEST=unboxed-double-arrays.js Review URL: http://codereview.chromium.org/7350021 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8682 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 04 Jul, 2011 1 commit
-
-
whesse@chromium.org authored
As part of allowing different contexts for inlined functions, eliminate most explicit reads of the context from the stack frame in ia32 crankshaft codegen. Eliminates the enum flag RESTORE_CONTEXT and CONTEXT_ADJUSTED, and adds a context HValue and LOperand to many hydrogen and lithium instructions. Context is still used from the stack from in CallKnownFunction (this seems safe), and in CallRuntimeFromDeferred in lithium-codegen-ia32.cc, which needs to be fixed. BUG= TEST= Review URL: http://codereview.chromium.org/7132002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jun, 2011 2 commits
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/7290006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8501 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Instead of generating two instructions and combining them at lithium translation using the EmitAtUses predicate, we generate the correct branch instruction right from the start. Review URL: http://codereview.chromium.org/7237024 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Jun, 2011 3 commits
-
-
fschneider@chromium.org authored
The new approach uses one temp register instead of two on IA32. The ARM instructions are modified so the input can be UseAtStart again. Review URL: http://codereview.chromium.org/7274025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8451 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Make sure that input and temp registers don't overlap. Review URL: http://codereview.chromium.org/7273026 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8443 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ager@chromium.org authored
* src/hydrogen.cc (HEnvironment::CopyForInlining): As the code for both the ::HYDROGEN and ::LITHIUM compilation phases is the same, just use one code path and remove the arg. * src/hydrogen.h (HEnvironment): Remove now-unused CompilationPhase enum type and arg to CopyForInlining. * src/arm/lithium-arm.cc (LChunkBuilder::DoEnterInlined): * src/ia32/lithium-ia32.cc (LChunkBuilder::DoEnterInlined): * src/x64/lithium-x64.cc (LChunkBuilder::DoEnterInlined): Adapt callers. * AUTHORS: Add Igalia. BUG= TEST=I ran tools/test.py. Review URL: http://codereview.chromium.org/7272002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Jun, 2011 1 commit
-
-
sgjesse@chromium.org authored
The hydrogen stack check instruction is now added to each loop and the stack check handling on the back edge has been removed. This change causes regression on small tight loops as the stack check is now at the top of the loop instead of at the bottom, and that requires one additional unconditional jump per loop iteration. However the reason for this change is to avoid worse regressions for upcoming changes to correctly support debugger break in optimized code. R=fschneider@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7216009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Jun, 2011 2 commits
-
-
whesse@chromium.org authored
The improvement is included in the port of r8367 to earlier versions of V8. Review URL: http://codereview.chromium.org/7229011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
whesse@chromium.org authored
BUG=v8:1407 TEST= Review URL: http://codereview.chromium.org/7231008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Jun, 2011 1 commit
-
-
fschneider@chromium.org authored
We had two instructions HCompareJsObjectEq and HCompareSymbolEq that behave exactly the same. I removed one and renamed the remaining instruction into HCompareObjectEq. Review URL: http://codereview.chromium.org/7206040 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8349 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Jun, 2011 1 commit
-
-
jkummerow@chromium.org authored
Review URL: http://codereview.chromium.org/7170012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8325 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 Jun, 2011 1 commit
-
-
fschneider@chromium.org authored
This change makes the number of successors of a control instruction configurable with a template parameter and changes the existing instructions to use it. To iterate over all successors I added an iterator instead of always calling First- and SecondSuccessor. Review URL: http://codereview.chromium.org/7114004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8262 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Jun, 2011 1 commit
-
-
danno@chromium.org authored
Dispatch on ElementsKind rather than ExternalArrayType when generating ICs and Crankshaft code for many element operations. This is preparation to be able to share more code in the various element accessor implementations. Merge logic to maintain external array and fast element stub caches. BUG=none TEST=none Review URL: http://codereview.chromium.org/7112010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Jun, 2011 1 commit
-
-
fschneider@chromium.org authored
Instructions that have side effects can never have EmitAtUses() true. These instructions (CmpTAndBranch, InstanceOfAndBranch) are therefore never generated and can therefor be safely removed. Review URL: http://codereview.chromium.org/7031074 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8220 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Jun, 2011 2 commits
-
-
fschneider@chromium.org authored
Original cl: http://codereview.chromium.org/7105015 I'm removing the test GlobalLoadICGC test that was introduced for testing inlined global cell loads (in the classic backend) and has an invalid assumption about the number of global objects referenced from a v8 context. We don't have this feature with Crankshaft anymore. Review URL: http://codereview.chromium.org/7112032 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8185 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
The Advance() function of the class responsible for iterating environment uses didn't always advance as far as it could (relying on the HasNext predicate to finish advancing). This is brittle. The HasNext predicate also didn't advance as far as it could when it was at the end of an environment level. This is a bug. R=jkummerow@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/6993023 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8181 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 01 Jun, 2011 2 commits
-
-
fschneider@chromium.org authored
It breaks test when running with nosnapshot. TBR=ager@chromium.org Review URL: http://codereview.chromium.org/7027029 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
If type-feedback indicates that an expression was never executed in the non-optimized code, we insert a forced deoptimization right away to enable re-optimization if we ever hit this path. With this change we still continue to build the graph. As a next step, we should remove the dead code after the deoptimize. I had to remove one assert about the optimization status in a test since we now immediately deoptimize after exiting the loop that triggers OSR. Also remove a restriction that control-flow from an inlined function in a test context always reaches both true- and false-target. Review URL: http://codereview.chromium.org/7105015 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8140 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 31 May, 2011 1 commit
-
-
kmillikin@chromium.org authored
Introduce a Hydrogen value for the value denoted by the function name. R=fschneider@chromium.org,mnaganov@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7083024 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8121 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 May, 2011 2 commits
-
-
fschneider@chromium.org authored
The approach is to handle the common case in the optimizing compiler and to bailout for the rare corner cases. This is done by initializing all local const-variables with the hole value and disallowing any use of the hole value statically. Review URL: http://codereview.chromium.org/6026006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ricow@chromium.org authored
Review URL: http://codereview.chromium.org/7083021 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 May, 2011 1 commit
-
-
danno@chromium.org authored
Implement truncation of double and tagged values when assigning to an element of a typed arrays in order to avoid depots. BUG=1313 TEST=test/mjsunit/external-array.js Review URL: http://codereview.chromium.org/6961019 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8077 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 May, 2011 2 commits
-
-
whesse@chromium.org authored
BUG=v8:1406 TEST=fast/canvas/canvas-putImageData.html Review URL: http://codereview.chromium.org/7067028 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ager@chromium.org authored
Only IA32 version for now. I'll start porting. Strict mode functions are to get 'undefined' as the receiver when called with an implicit receiver. Modes are bad! It forces us to have checks on all function calls. This change attempts to limit the cost by passing information about whether or not a call is with an implicit or explicit receiver in ecx as part of the calling convention. The cost is setting ecx on all calls and checking ecx on entry to strict mode functions. Implicit/explicit receiver state has to be maintained by ICs. Various stubs have to not clobber ecx or save and restore it. CallFunction stub needs to check if the receiver is implicit when it doesn't know from the context. Review URL: http://codereview.chromium.org/7039036 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 May, 2011 1 commit
-
-
svenpanne@chromium.org authored
Review URL: http://codereview.chromium.org/7055006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7968 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 May, 2011 1 commit
-
-
vitalyr@chromium.org authored
Review URL: http://codereview.chromium.org/7042006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7924 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 May, 2011 2 commits
-
-
whesse@chromium.org authored
Add HForceRepresentation, to represent the implicit ToNumber applied to the input of a count operation. BUG=v8:1389 TEST= Review URL: http://codereview.chromium.org/7033008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7913 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
danno@chromium.org authored
TBR=kmillikin@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org/7019008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7903 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 May, 2011 1 commit
-
-
danno@chromium.org authored
BUG=1313 TEST=test/mjsunit/external-array.js Review URL: http://codereview.chromium.org/7014033 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7901 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 May, 2011 4 commits
-
-
vitalyr@chromium.org authored
Review URL: http://codereview.chromium.org/7000021 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7865 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
whesse@chromium.org authored
BUG= TEST= Review URL: http://codereview.chromium.org/6982023 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7860 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
vitalyr@chromium.org authored
Review URL: http://codereview.chromium.org/6995046 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7856 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
whesse@chromium.org authored
This reverts r7810, thus recommitting 7807. BUG= TEST= Review URL: http://codereview.chromium.org/6963009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7851 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 May, 2011 1 commit
-
-
jkummerow@chromium.org authored
This CL is based on and obsoletes CL 6879037. TEST=mjsunit/external-array.js Review URL: http://codereview.chromium.org/6902112 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7844 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 May, 2011 2 commits
-
-
whesse@chromium.org authored
This reverts commit r7807. TBR=kmillikin@chromium.org. BUG= TEST= Review URL: http://codereview.chromium.org/6928061 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7810 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
whesse@chromium.org authored
Use a special slot for HContext, and fetch the value from there each time it is used. Allocate space for special slots in every HEnvironment. Fill them with constant undefined. Do not copy them to LEnvironment. BUG= TEST= Review URL: http://codereview.chromium.org/6929066 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 04 May, 2011 1 commit
-
-
whesse@chromium.org authored
Tiny refactoring - change compilation phase parameter for CopyForInlining from a boolean to an enum. BUG= TEST= Review URL: http://codereview.chromium.org/6913021 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7782 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-