- 18 Aug, 2015 1 commit
-
-
danno authored
Previously, it was not possible to specify StackSlotOperands for all slots in both the caller and callee stacks. Specifically, the region of the callee's stack including the saved return address, frame pointer, function pointer and context pointer could not be addressed by the register allocator/gap resolver. In preparation for better tail call support, which will use the gap resolver to reconcile outgoing parameters, this change makes it possible to address all slots on the stack, because slots in the previously inaccessible dead zone may become parameter slots for outgoing tail calls. All caller stack slots are accessible as they were before, with slot -1 corresponding to the last stack parameter. Stack slot indices >= 0 access the callee stack, with slot 0 corresponding to the callee's saved return address, 1 corresponding to the saved frame pointer, 2 corresponding to the current function context, 3 corresponding to the frame marker/JSFunction, and slots 4 and above corresponding to spill slots. The following changes were specifically needed: * Frame has been changed to explicitly manage three areas of the callee frame, the fixed header, the spill slot area, and the callee-saved register area. * Conversions from stack slot indices to fp offsets all now go through a common bottleneck: OptimizedFrame::StackSlotOffsetRelativeToFp * The generation of deoptimization translation tables has been changed to support the new stack slot indexing scheme. Crankshaft, which doesn't support the new slot numbering in its register allocator, must adapt the indexes when creating translation tables. * Callee-saved parameters are now kept below spill slots, not above, to support saving only the optimal set of used registers, which is only known after register allocation is finished and spill slots have been allocated. Review URL: https://codereview.chromium.org/1261923007 Cr-Commit-Position: refs/heads/master@{#30224}
-
- 17 Aug, 2015 1 commit
-
-
titzer authored
R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/1291113003 Cr-Commit-Position: refs/heads/master@{#30203}
-
- 11 Aug, 2015 2 commits
-
-
titzer authored
Reland: [turbofan] Various fixes to allow unboxed doubles as arguments in registers and on the stack. OCL: https://codereview.chromium.org/1263033004/ R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1284893002 Cr-Commit-Position: refs/heads/master@{#30115}
-
yangguo authored
Revert of [turbofan] Various fixes to allow unboxed doubles as arguments in registers and on the stack. (patchset #7 id:120001 of https://codereview.chromium.org/1263033004/ ) Reason for revert: This CL breaks MIPS (roll blocker). https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20mipsel%20-%20sim/builds/2061/steps/Check/logs/Run_Int32_Select_1 Original issue's description: > [turbofan] Various fixes to allow unboxed doubles as arguments in registers and on the stack. > > R=jarin@chromium.org > BUG= > > Committed: https://crrev.com/71409be5395f867bbca0f6998bf6caa175cd8192 > Cr-Commit-Position: refs/heads/master@{#30091} TBR=jarin@chromium.org,titzer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1284853002 Cr-Commit-Position: refs/heads/master@{#30101}
-
- 10 Aug, 2015 1 commit
-
-
titzer authored
R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/1263033004 Cr-Commit-Position: refs/heads/master@{#30091}
-
- 07 Aug, 2015 2 commits
-
-
titzer authored
Rationale: The {kind} of a call descriptor describes what the {target} being called is--i.e. a JSFunction, code object, or address. That kind materially dictates the instruction(s) generated for an outgoing call. The other flags on a call descriptor should describe specific properties (like whether a roots register is valid or not) so that backend logic doesn't have to switch over the kind, but is informed directly of what it wants to know. R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1268273003 Cr-Commit-Position: refs/heads/master@{#30065}
-
titzer authored
[turbofan] Remove architecture-specific linkage files and LinkageTraits. Use macro-assembler-defined constants. R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1272883003 Cr-Commit-Position: refs/heads/master@{#30063}
-
- 31 Jul, 2015 1 commit
-
-
titzer authored
R=danno@chromium.org BUG= Review URL: https://codereview.chromium.org/1269913002 Cr-Commit-Position: refs/heads/master@{#29957}
-
- 30 Jul, 2015 3 commits
-
-
titzer authored
This is the first step in cutting the Gordian linkage/linkage-impl knot. This basically changes the axis along which we organize call descriptor building logic from having platform-specific files dedicated to all call descriptor types to having call-descriptor-type-specific files that have The next step is to factor the JS, code stub, and runtime call descriptors similarly, dumping them into: compiler/js-linkage.cc compiler/runtime-linkage.cc compiler/code-stub-linkage.cc or, alternatively, all of them just into compiler/js-linkage.cc. This also anticipates a wasm-linkage.cc file in the future. R=bmeurer@chromium.org,danno@chromium.org BUG= Review URL: https://codereview.chromium.org/1266603002 Cr-Commit-Position: refs/heads/master@{#29931}
-
rmcilroy authored
Adds interpreter entry and exit trampoline builtins. Also implements the Return bytecode handler and fixes a few bugs in InterpreterAssembler highlighted by running on other architectures. MIPS and MIPS64 port contributed by Paul Lind (paul.lind@imgtec.com) BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1245133002 Cr-Commit-Position: refs/heads/master@{#29929}
-
rmcilroy authored
Changes the interpreter to use a BytecodeArray pointer and an offset to avoid having an inner pointer to a BytecodeArray object in registers during dispatch. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1254293006 Cr-Commit-Position: refs/heads/master@{#29910}
-
- 23 Jul, 2015 1 commit
-
-
rmcilroy authored
Adds basic support for generation of interpreter bytecode handler code snippets. The InterpreterAssembler class exposes a set of low level, interpreter specific operations which can be used to build a Turbofan graph. The Interpreter class generates a bytecode handler snippet for each bytecode by assembling operations using an InterpreterAssembler. Currently only two simple bytecodes are supported: LoadLiteral0 and Return. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1239793002 Cr-Commit-Position: refs/heads/master@{#29814}
-
- 17 Jul, 2015 1 commit
-
-
dusan.milosavljevic authored
TEST=mjsunit/asm/embenchen/zlib BUG= Review URL: https://codereview.chromium.org/1232313007 Cr-Commit-Position: refs/heads/master@{#29735}
-
- 13 Jul, 2015 2 commits
-
-
dusan.milosavljevic authored
TEST=mjsunit/asm/embenchen/box2d BUG= Review URL: https://codereview.chromium.org/1234533004 Cr-Commit-Position: refs/heads/master@{#29608}
-
rmcilroy authored
BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1234443004 Cr-Commit-Position: refs/heads/master@{#29591}
-
- 08 Jul, 2015 1 commit
-
-
bmeurer authored
We actually need round to zero truncation to implement the counterpart of LDoubleToI in TurboFan, which tries to convert a double to an integer as required for keyed load/store optimizations. Drive-by-cleanup: Reduce some code duplication in the InstructionSelector implementations. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1225993002 Cr-Commit-Position: refs/heads/master@{#29527}
-
- 02 Jul, 2015 1 commit
-
-
danno authored
This involves: - Enabling the tail call optimization reducer in all cases. - Adding an addition flag to CallFunctionParameters to mark call sites that can be tail-called enabled. - Only set the tail-call flag for %_CallFunction. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1216933011 Cr-Commit-Position: refs/heads/master@{#29436}
-
- 01 Jul, 2015 1 commit
-
-
akos.palfi authored
Fixes debug mode assertions. TEST=cctest/test-run-machops/RunChangeUint32ToFloat64_B BUG= Review URL: https://codereview.chromium.org/1211143003 Cr-Commit-Position: refs/heads/master@{#29420}
-
- 30 Jun, 2015 1 commit
-
-
akos.palfi authored
This change makes possible to save and restore the FP registers in the Prologue and Return parts for the CallAddress kind functions. TEST=test-simplified-lowering/RunNumberDivide_2_TruncatingToUint32, test-simplified-lowering/RunNumberMultiply_TruncatingToUint32 Review URL: https://codereview.chromium.org/1191513003 Cr-Commit-Position: refs/heads/master@{#29378}
-
- 26 Jun, 2015 1 commit
-
-
bmeurer authored
This optimization is already implemented in fullcodegen, and basically makes sure that we do not unecessarily blow up the code with duplicated return sequences everywhere. R=danno@chromium.org Review URL: https://codereview.chromium.org/1211373002 Cr-Commit-Position: refs/heads/master@{#29315}
-
- 25 Jun, 2015 2 commits
-
-
balazs.kilvady authored
Port d783b763 Original commit message: ARM64's `fmin` and `fmax` instructions don't have the same behaviour as TurboFan's Float(32|64)(Min|Max) functions. BUG=4206 LOG=N Review URL: https://codereview.chromium.org/1204903004 Cr-Commit-Position: refs/heads/master@{#29305}
-
Benedikt Meurer authored
This introduces some initial building blocks for calling out to C/C++ functions directly from TurboFan generated code objects. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1205023002. Cr-Commit-Position: refs/heads/master@{#29279}
-
- 17 Jun, 2015 1 commit
-
-
mstarzinger authored
This fixes CodeGenerator::EnsureSpaceForLazyDeopt to no longer be treated as a lazy deopt site in itself. Calls mark themselves as lazy bailout sites in CodeGenerator::RecordCallPosition, which suffices. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1186353003 Cr-Commit-Position: refs/heads/master@{#29069}
-
- 05 Jun, 2015 1 commit
-
-
danno authored
Only optimized for TF R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1146963002 Cr-Commit-Position: refs/heads/master@{#28812}
-
- 28 May, 2015 1 commit
-
-
mstarzinger authored
This introduces a conservative prediction for each exception handler whether it will locally catch an exception or re-throw it to outside the code bondaries. It will allow for a more intuitive prediction of whether an exception is considered "caught" or "uncaught". R=bmeurer@chromium.org,yangguo@chromium.org BUG=chromium:492522 LOG=N Review URL: https://codereview.chromium.org/1158563008 Cr-Commit-Position: refs/heads/master@{#28681}
-
- 21 May, 2015 1 commit
-
-
svenpanne authored
Currently the stub simply calls out to the runtime, this will be improved in a later CLs. The current state at least avoids bit-rot and later merging horror. Fixes frame construction logic for stubs, too, and contains quite a few tiny cleanups in stub-land. Review URL: https://codereview.chromium.org/1150673002 Cr-Commit-Position: refs/heads/master@{#28555}
-
- 19 May, 2015 1 commit
-
-
balazs.kilvady authored
MIPS64r6 and MIPS32r6 support for min and max and Float64Max machine operators. BUG= Review URL: https://codereview.chromium.org/1027193002 Cr-Commit-Position: refs/heads/master@{#28471}
-
- 08 May, 2015 2 commits
-
-
dusan.milosavljevic authored
TEST= BUG= Review URL: https://codereview.chromium.org/1124023005 Cr-Commit-Position: refs/heads/master@{#28315}
-
bmeurer authored
The Float32Abs and Float64Abs operators are supported by all TurboFan backends, so we no longer need the flags for them. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1132033002 Cr-Commit-Position: refs/heads/master@{#28310}
-
- 05 May, 2015 1 commit
-
-
bmeurer authored
Tail calls are matched on the graph, with a dedicated tail call optimization that is actually testable. The instruction selection can still fall back to a regular if the platform constraints don't allow to emit a tail call (i.e. the return locations of caller and callee differ or the callee takes non-register parameters, which is a restriction that will be removed in the future). Also explicitly limit tail call optimization to stubs for now and drop the global flag. BUG=v8:4076 LOG=n Review URL: https://codereview.chromium.org/1114163005 Cr-Commit-Position: refs/heads/master@{#28219}
-
- 04 May, 2015 1 commit
-
-
akos.palfi authored
These instructions have unpredictable result when the processor is in fp32 mode. BUG= TEST=mjsunit/math-floor-global,math-floor-local,math-floor-part1 Review URL: https://codereview.chromium.org/1116073002 Cr-Commit-Position: refs/heads/master@{#28194}
-
- 30 Apr, 2015 2 commits
-
-
balazs.kilvady authored
4b122b75 BUG= Review URL: https://codereview.chromium.org/1116913002 Cr-Commit-Position: refs/heads/master@{#28183}
-
svenpanne authored
This CL contains the first steps towards tail call optimization: * Structurally detect tail calls during instruction selection, looking for special return/call combinations. * Added new architecture-specific instructions for tail calls which jump instead of call and take care of frame adjustment. * Moved some code around. Currently we restrict tail calls to callees which only use registers for arguments/return value and to call sites which are explicitly marked as being OK for tail calls. This excludes, among other things, call sites in sloppy JS functions and our IC machinery (both need in general to be able to access the caller's frame). All this is behind a flag --turbo-tail-calls, which is currently off by default, so it can easily be toggled. Review URL: https://codereview.chromium.org/1108563002 Cr-Commit-Position: refs/heads/master@{#28150}
-
- 20 Apr, 2015 2 commits
-
-
svenpanne authored
Review URL: https://codereview.chromium.org/1098863003 Cr-Commit-Position: refs/heads/master@{#27947}
-
Ross McIlroy authored
R=jochen@chromium.org Review URL: https://codereview.chromium.org/1088993003 Cr-Commit-Position: refs/heads/master@{#27937}
-
- 14 Apr, 2015 1 commit
-
-
paul.lind authored
Port 5d2de78a BUG= Review URL: https://codereview.chromium.org/1085693003 Cr-Commit-Position: refs/heads/master@{#27825}
-
- 09 Apr, 2015 2 commits
-
-
balazs.kilvady authored
Port 725cdc53 Original commit message: This reduces the overhead of recursive calls when context specialization is enabled. Based on this it might be possible to further reduce the overhead by also specializing the call itself. As a drive-by-fix, port the fast context materialization optimization to arm and arm64, that was previously only supported on x64 and ia32. BUG= Review URL: https://codereview.chromium.org/1074743002 Cr-Commit-Position: refs/heads/master@{#27700}
-
dcarney authored
- ConstantOperand was using a too-small field too store its virtual register - drop ConvertTo, replace it with simple copy - split AllocatedOperand off from Immediate and Constant to make assignment clearer, also paving the way for small Immediates - put zone first in *Operand::New - driveby: drop delayed ssa deconstruction experiment R=titzer@chromium.org BUG= Review URL: https://codereview.chromium.org/1050803002 Cr-Commit-Position: refs/heads/master@{#27692}
-
- 08 Apr, 2015 2 commits
-
-
balazs.kilvady authored
Port 9af9f1d0 Original commit message: These operators compute the absolute floating point value of some arbitrary input, and are implemented without any branches (i.e. using vabs on arm, and andps/andpd on x86). BUG= Review URL: https://codereview.chromium.org/1073463003 Cr-Commit-Position: refs/heads/master@{#27679}
-
Benedikt Meurer authored
These operators compute the absolute floating point value of some arbitrary input, and are implemented without any branches (i.e. using vabs on arm, and andps/andpd on x86). R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1066393002 Cr-Commit-Position: refs/heads/master@{#27662}
-