- 22 Aug, 2011 1 commit
-
-
vitalyr@chromium.org authored
Some AST nodes (Property, Call, etc.) store either a list of receiver types or a monomorphic receiver type. This patch merges the two fields using a small pointer list. GetMonomorphicReceiverType() is now a purely convenience function returning the first and only recorded type. This saves about 500K (of about 39M) on average when compiling V8 benchmark as measured by a simple patch adding a zone allocation counter (https://gist.github.com/1149397). R=kmillikin@chromium.org Review URL: http://codereview.chromium.org/7655017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8993 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 Aug, 2011 1 commit
-
-
vitalyr@chromium.org authored
R=kmillikin@chromium.org BUG=v8:1592 TEST=mjsunit/regress/regress-1592.js Review URL: http://codereview.chromium.org/7497067 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8884 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Aug, 2011 1 commit
-
-
vegorov@chromium.org authored
HGraphBuilder::TryArgumentsAccess does not emit any uses for receiver and will generate incorrect code when receiver for a property access is defined by a phi that returns either arguments object or something else. BUG=v8:1582 TEST=test/mjsunit/regress/regress-1582.js Review URL: http://codereview.chromium.org/7553006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8774 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Jul, 2011 1 commit
-
-
http://codereview.chromium.org/7514005/fschneider@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Jul, 2011 1 commit
-
-
svenpanne@chromium.org authored
Record ToBoolean's type information in Hydrogen's HBranch instruction, so we can use it in LCodeGen::DoBranch later. Review URL: http://codereview.chromium.org/7491043 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8736 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Jul, 2011 1 commit
-
-
sgjesse@chromium.org authored
The debugger can be entered from the deferred stack check in optimized code. This can cause both lazy deoptimization and debugger deoptimization (setting the first break point and inspecting the stack for optimized code respectively). This required deoptimization support from the deferred stack check. The lazy deoptimiztion call is inserted when the deferred code is done including restoring the registers. The bailout to the full code is the begining of the loop body as that is where the stack check is sitting in the optimized code. The bailout is not to the stack check in the full code as that is sitting at the end of the loop. R=kmillikin@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7212025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8535 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 1 commit
-
-
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 2 commits
-
-
kmillikin@chromium.org authored
Where it's simple to do so (keyed calls, calls to unknown global variables, calls to local variables and non-property/non-variable expressions), end the live range of argument subexpressions immediately after the last use of the expression rather than at the call. R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7274020 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8445 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
-
- 24 Jun, 2011 1 commit
-
-
keuchel@chromium.org authored
Detect the pattern in both, the full compiler and crankshaft and generate direct pointer comparisons. Along the way I cleaned up 'typeof <expression> == <string literal>' comparisons as well by lifting platform independent code and checking the symmetric case. BUG=v8:1440 TEST=cctest/test-api.cc Review URL: http://codereview.chromium.org/7216008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Jun, 2011 1 commit
-
-
ager@chromium.org authored
* src/hydrogen.h: * src/hydrogen.cc (HBasicBlock::CreateSimulate): Rename "id" arg to "ast_id". BUG= TEST= Review URL: http://codereview.chromium.org/7234010 Patch from Andy Wingo <wingo@igalia.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8385 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
-
- 16 Jun, 2011 1 commit
-
-
karlklose@chromium.org authored
This reverts commit ceb31498b9d69edca3260820fb4047045891ce6d. TBR=kmillikin@chromium.org Review URL: http://codereview.chromium.org/7172030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Jun, 2011 1 commit
-
-
karlklose@chromium.org authored
Review URL: http://codereview.chromium.org/7167006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Jun, 2011 1 commit
-
-
svenpanne@chromium.org authored
* AST Expression nodes get a separate testing ID to record type info in ToBooleanStub later. This is necessary to avoid clashes with other uses of already existing IDs. * In order to avoid threading the condition expression through tons of places, TestContexts carry it now with them. Note that we will probably only need the testing ID of the expression, but having the whole thing at hand makes debugging easier. Probably we will change this later... Review URL: http://codereview.chromium.org/7046073 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8274 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 3 commits
-
-
fschneider@chromium.org authored
Allow HChange instructions to be hoisted out of loops. To avoid unnecessary code motion we don't hoist instructions from blocks that have been marked containing an unconditional deoptimization. Review URL: http://codereview.chromium.org/7003087 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
whesse@chromium.org authored
This is needed so that HCompare, optimized for double inputs, works correctly on undefined inputs. BUG=v8:1434 TEST=mjsunit/bugs/bug-1434.js Review URL: http://codereview.chromium.org/7044049 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8237 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
This fixes a bug where an array load was incorrectly hoisted by GVN. BUG=85177 TEST=mjsunit/regress/regress-85177.js Review URL: http://codereview.chromium.org/7003054 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8230 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Jun, 2011 1 commit
-
-
mikhail.naganov@gmail.com authored
Mainly, there were errors concerning blank lines before and after class access control sections [whitespace/blank_line]. BEFORE an access control section (e.g. public:, private:) there should be a blank line (except for the section right after the class declaration). AFTER an access control section there should be no blank line. TBR=ager@chromium.org git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8193 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Jun, 2011 1 commit
-
-
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
-
- 01 Jun, 2011 3 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
-
svenpanne@chromium.org authored
TBR=danno@chromium.org Review URL: http://codereview.chromium.org/7105014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8132 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 May, 2011 1 commit
-
-
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
-
- 24 May, 2011 1 commit
-
-
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
-
- 19 May, 2011 2 commits
-
-
kmillikin@chromium.org authored
Also, refactor disabling of optimization to make it easier to ensure that both SharedFunctionInfo and Code get disabled. R=whesse@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7033020 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7963 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
whesse@chromium.org authored
Fix TraceInline. BUG= TEST= Review URL: http://codereview.chromium.org/7049005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7961 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 May, 2011 1 commit
-
-
vitalyr@chromium.org authored
When descending the dominator tree we used to collect side effects from all blocks between the dominator and the dominated blocks in the block ordering. This could include blocks that do not appear on paths from the dominator to the dominated and unnecessarily removed available values from the GVN map. Review URL: http://codereview.chromium.org/7036010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 May, 2011 1 commit
-
-
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
-
- 13 May, 2011 1 commit
-
-
svenpanne@chromium.org authored
Review URL: http://codereview.chromium.org/7013045 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7885 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 May, 2011 2 commits
-
-
fschneider@chromium.org authored
If a HDeoptimize does not cut away parts of the control-flow-graph we don't need to insert uses to correctly elimiate dead phis since the full function is visible to the optimizing compiler. This is a small improvement of the change r7221 which fixed a problem when deoptimizing on never executed case-clauses. Review URL: http://codereview.chromium.org/7012010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
centralized its handling. Review URL: http://codereview.chromium.org/6969034 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7874 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 May, 2011 2 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
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
-
-
svenpanne@chromium.org authored
onto a sinlge 30" screen. A lot of times, the AST visitor stops a bit too early, so we have to do the rest of the dispatch by hand. This is caused by the fact that the kind of the AST nodes are a bit too coarse for some traversals (e.g. a single node type for all binary ops), perhaps one could try to refine this a little bit more. Review URL: http://codereview.chromium.org/6963008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 May, 2011 1 commit
-
-
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
-