- 12 May, 2014 1 commit
-
-
danno@chromium.org authored
- Don't bake in length/capacity into full codegen calls of stubs, allowing boilerplates to increase their capacity without regenerating code. - Unify all variants of the clone stub into a single, length-independent version. - Various tweaks to make sure that the clone stub doesn't spill and therefore need an eager stack frame. - Handle all lengths of array literals in the fast case. R=mvstanton@chromium.org Committed: https://code.google.com/p/v8/source/detail?r=21230 Review URL: https://codereview.chromium.org/272513004 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21253 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 May, 2014 2 commits
-
-
verwaest@chromium.org authored
This breaks nosnap. BUG= R=ishell@chromium.org Review URL: https://codereview.chromium.org/272243002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
danno@chromium.org authored
- Don't bake in length/capacity into full codegen calls of stubs, allowing boilerplates to increase their capacity without regenerating code. - Unify all variants of the clone stub into a single, length-independent version. - Various tweaks to make sure that the clone stub doesn't spill and therefore need an eager stack frame. - Handle all lengths of array literals in the fast case. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/272513004 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21230 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 May, 2014 1 commit
-
-
baptiste.afsa@arm.com authored
R=ulan@chromium.org Review URL: https://codereview.chromium.org/261933002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21168 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 May, 2014 1 commit
-
-
bmeurer@chromium.org authored
Instead of adding code dependencies on stable during graph creation, we now add them during code generation for those HCheckMaps that survived dead code elimination. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/264973013 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 May, 2014 1 commit
-
-
bmeurer@chromium.org authored
R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/256303007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21110 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Apr, 2014 1 commit
-
-
bmeurer@chromium.org authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/259183002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Apr, 2014 1 commit
-
-
svenpanne@chromium.org authored
Removed some temporary marker comments on the way. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/218403006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Mar, 2014 1 commit
-
-
jochen@chromium.org authored
BUG=354405 R=ulan@chromium.org, rodolph.perfetta@arm.com LOG=y Review URL: https://codereview.chromium.org/207823003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Mar, 2014 1 commit
-
-
ulan@chromium.org authored
This fixes assertion failure in destructor of Assembler. BUG=352659 LOG=N R=jochen@chromium.org Review URL: https://codereview.chromium.org/206213002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20100 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Mar, 2014 1 commit
-
-
haitao.feng@intel.com authored
R=verwaest@chromium.org Review URL: https://codereview.chromium.org/186543002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19775 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Mar, 2014 1 commit
-
-
jarin@chromium.org authored
HPushArgument should never be used in a simulation environment because the slot addresses for the arguments can be off (e.g., due to on-stack arguments object of an inlined caller). R=mstarzinger@chromium.org BUG=v8:3183 LOG=N Review URL: https://codereview.chromium.org/178193026 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19675 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Feb, 2014 1 commit
-
-
ulan@chromium.org authored
BUG=v8:3113 LOG=Y R=jochen@chromium.org, rmcilroy@chromium.org, rodolph.perfetta@arm.com Review URL: https://codereview.chromium.org/148293020 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jan, 2014 1 commit
-
-
jarin@chromium.org authored
version is passing all the existing test + a bunch of new tests (packaged in the change list, too). The patch extends the SlotRef object to describe captured and duplicated objects. Since the SlotRefs are not independent of each other anymore, there is a new SlotRefValueBuilder class that stores the SlotRefs and later materializes the objects from the SlotRefs. Note that unlike the previous implementation of SlotRefs, we now build the SlotRef entries for the entire frame, not just the particular function. This is because duplicate objects might refer to previous captured objects (that might live inside other inlined function's part of the frame). We also need to store the materialized objects between other potential invocations of the same arguments object so that we materialize each captured object at most once. The materialized objects of frames live in the new MaterielizedObjectStore object (contained in Isolate), indexed by the frame's FP address. Each argument materialization (and deoptimization) tries to lookup its captured objects in the store before building new ones. Deoptimization also removes the materialized objects from the store. We also schedule a lazy deopt to be sure that we always get rid of the materialized objects and that the optmized function adopts the materialized objects (instead of happily computing with its captured representations). Concerns: - Is the FP address the right key for a frame? (Note that deoptimizer's representation of frame is different from the argument object materializer's one - it is not easy to find common ground.) - Performance is suboptimal in several places, but a quick local run of benchmarks does not seem to show a perf hit. Examples of possible improvements: smarter generation of SlotRefs (build other functions' SlotRefs only for captured objects and only if necessary), smarter lookup of stored materialized objects. - Ideally, we would like to share the code for argument materialization with deoptimizer's materializer. However, the supporting data structures (mainly the frame descriptor) are quite different in each case, so it looks more like a separate project. Thanks for any feedback. R=danno@chromium.org, mstarzinger@chromium.org LOG=N BUG= Committed: https://code.google.com/p/v8/source/detail?r=18918 Review URL: https://codereview.chromium.org/103243005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18936 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Jan, 2014 2 commits
-
-
jarin@chromium.org authored
R=jarin@chromium.org Review URL: https://codereview.chromium.org/130803009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18923 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
jarin@chromium.org authored
mostly to make sure that it is going in the right direction. The current version is passing all the existing test + a bunch of new tests (packaged in the change list, too). The patch extends the SlotRef object to describe captured and duplicated objects. Since the SlotRefs are not independent of each other anymore, there is a new SlotRefValueBuilder class that stores the SlotRefs and later materializes the objects from the SlotRefs. Note that unlike the previous implementation of SlotRefs, we now build the SlotRef entries for the entire frame, not just the particular function. This is because duplicate objects might refer to previous captured objects (that might live inside other inlined function's part of the frame). We also need to store the materialized objects between other potential invocations of the same arguments object so that we materialize each captured object at most once. The materialized objects of frames live in the new MaterielizedObjectStore object (contained in Isolate), indexed by the frame's FP address. Each argument materialization (and deoptimization) tries to lookup its captured objects in the store before building new ones. Deoptimization also removes the materialized objects from the store. We also schedule a lazy deopt to be sure that we always get rid of the materialized objects and that the optmized function adopts the materialized objects (instead of happily computing with its captured representations). Concerns: - Is there a simpler/more correct way to store the already-materialized objects? (At the moment there is a custom root reference to JSArray containing frames' FixedArrays with their captured objects.) - Is the FP address the right key for a frame? (Note that deoptimizer's representation of frame is different from the argument object materializer's one - it is not easy to find common ground.) - Performance is suboptimal in several places, but a quick local run of benchmarks does not seem to show a perf hit. Examples of possible improvements: smarter generation of SlotRefs (build other functions' SlotRefs only for captured objects and only if necessary), smarter lookup of stored materialized objects. - Ideally, we would like to share the code for argument materialization with deoptimizer's materializer. However, the supporting data structures (mainly the frame descriptor) are quite different in each case, so it looks more like a separate project. Thanks for any feedback. R=mstarzinger@chromium.org, danno@chromium.org LOG=N BUG= Review URL: https://codereview.chromium.org/103243005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Jan, 2014 1 commit
-
-
jarin@chromium.org authored
by escape analysis). Added several tests that expose the bug. Summary: LCodegen::AddToTranslation assumes that Lithium environments are generated by depth-first traversal, but LChunkBuilder::CreateEnvironment was generating them in breadth-first fashion. This fixes the CreateEnvironment to traverse the captured objects depth-first. Note: It might be worth considering representing LEnvironment by a list with the same order as the serialized translation representation rather than having two lists with a subtle relationship between them (and then serialize in a slightly different order again). R=titzer@chromium.org, mstarzinger@chromium.org LOG=N BUG= Review URL: https://codereview.chromium.org/93803003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Nov, 2013 1 commit
-
-
rmcilroy@chromium.org authored
R=ulan@chromium.org Review URL: https://codereview.chromium.org/60763006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17925 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Nov, 2013 2 commits
-
-
jkummerow@chromium.org authored
LOG=Y BUG=chromium:319835,chromium:319860 R=dslomov@chromium.org Review URL: https://codereview.chromium.org/74113002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17801 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
verwaest@chromium.org authored
BUG= R=danno@chromium.org Review URL: https://chromiumcodereview.appspot.com/71783003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17782 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Nov, 2013 2 commits
-
-
machenbach@chromium.org authored
This reverts commit r17746 for breaking layout tests. TBR=verwaest@chromium.org BUG= Review URL: https://codereview.chromium.org/72753002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17751 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
verwaest@chromium.org authored
R=danno@chromium.org Review URL: https://chromiumcodereview.appspot.com/23537067 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Nov, 2013 1 commit
-
-
ulan@chromium.org authored
Lithium uses indexes after the maximium value ID in the HGraph as indexes of virtual registers and assumes that the maximum value ID does not change. The IsStandardConstant and GetConstantXX functions could add constants to HGraph, which aliased virtual registers with real values. This could confuse the register allocator to think that a value in a virtual register is tagged and to incorrectly set it in the pointer map. BUG=298269 TEST=mjsunit/regress/regress-298269.js R=verwaest@chromium.org Review URL: https://chromiumcodereview.appspot.com/66693002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17599 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Oct, 2013 1 commit
-
-
danno@chromium.org authored
In the process: - Add a command-line flag --opt-code-positions to track source position information throughout optimized code. - Add a subclass of the hydrogen graph builder to ensure that the source position is properly set on the graph builder for all generated hydrogen code. - Overhaul handling of source positions in hydrogen to ensure they are passed through to generated code consistently and in most cases transparently. Originally reviewed in this CL: https://codereview.chromium.org/24957003/ Review URL: https://codereview.chromium.org/29123008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17295 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Oct, 2013 1 commit
-
-
danno@chromium.org authored
- Detect unreachable basic blocks of code either following an unconditional deopt or after a provably untaken branch of HBranch or HCompareObjectEqAndBranch instructions. - Emit dummy uses in unreachable blocks during Hydrogen -> Lithium translation. BUG=chromium:258519 R=jkummerow@chromium.org, mstarzinger@chromium.org Review URL: https://codereview.chromium.org/22876009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Aug, 2013 1 commit
-
-
mstarzinger@chromium.org authored
R=yangguo@chromium.org Review URL: https://codereview.chromium.org/22840002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16209 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Aug, 2013 1 commit
-
-
loislo@chromium.org authored
I'd like to propagate bailout reason to cpu profiler. So I need to save it into heap object SharedFunctionInfo. But: 1) all bailout reason strings spread across all the sources. 2) they are native strings and if I convert them into String then I may have a performance issue. 3) one byte is enough for 184 bailout reasons. Otherwise we need 8 bytes for the pointer. Also I think it would be nice to have error strings collected in one place. In that case we will get additional benefits: It allows us to keep this set of messages under control. It gives us a chance to internationalize them. It slightly reduces the binary footprint. From the other hand the developers have to add new strings into that enum. BUG= R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/20843012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16024 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Jul, 2013 3 commits
-
-
haitao.feng@intel.com authored
BUG=None R=danno@chromium.org Review URL: https://codereview.chromium.org/19802002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15829 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
haitao.feng@intel.com authored
Revert "Addressed danno's comments" and "Introduce kRegisterSize, kPCOnStackSize and kFPOnStackSize constants" BUG=None R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/19483007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
haitao.feng@intel.com authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15822 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Jul, 2013 1 commit
-
-
yangguo@chromium.org authored
R=yangguo@chromium.org Review URL: https://codereview.chromium.org/18509003 Patch from Haitao Feng <haitao.feng@intel.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Jun, 2013 1 commit
-
-
bmeurer@chromium.org authored
Add new base class CompilationPhase, which is the base for both HPhase, LPhase and LAllocatorPhase. HPhase is now for Hydrogen passes only, LPhase is for Lithium passes and LAllocatorPhase is for LAllocator phases. R=svenpanne@chromium.org BUG= Review URL: https://codereview.chromium.org/17572011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15321 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 03 Jun, 2013 1 commit
-
-
yangguo@chromium.org authored
R=svenpanne@chromium.org BUG= Review URL: https://chromiumcodereview.appspot.com/15691017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14919 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 May, 2013 1 commit
-
-
svenpanne@chromium.org authored
R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/15941004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14796 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 May, 2013 1 commit
-
-
mstarzinger@chromium.org authored
This is a preparation which allows us to bump the virtual register width from 15 to 18 bit without sacrificing width for other fields inside an unallocated lithium operand. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/14639008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Apr, 2013 2 commits
-
-
danno@chromium.org authored
R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/14367018 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
Review URL: https://codereview.chromium.org/14286005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Apr, 2013 1 commit
-
-
svenpanne@chromium.org authored
* All Lithium instructions have an associated Hydrogen instruction now, simplifying things. * Consistently print <Lithium instruction number,Hydrogen value id> prefixes. * Do not print uninteresting Lithium instructions like empty gaps, jumps to the next instruction, etc. * Removed special handling of HChange-like instructions, it is totally unclear why they had this special treatment. If we really want to print more information about Lithium instructions, we should do it in a totally way, anyway (e.g. by unifying things with the generation of hydrogen*.cfg files). * Made deferred code and the jump table stand out a little bit more. * Print info about special blocks like loop headers and OSR entries. Review URL: https://codereview.chromium.org/14371005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Apr, 2013 1 commit
-
-
danno@chromium.org authored
Review URL: https://codereview.chromium.org/14307006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Feb, 2013 1 commit
-
-
svenpanne@chromium.org authored
Unified parameter order of CreateHandle with the rest of v8 on the way. A few Isolate::Current()s had to be introduced, which is not nice, and not every place will win a beauty contest, but we can clean this up later easily in smaller steps. Review URL: https://codereview.chromium.org/12300018 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-