- 18 Aug, 2015 2 commits
-
-
rmcilroy authored
Adds implementations and tests for the following bytecodes: - LdaZero - LdaSmi8 - LdaUndefined - LdaNull - LdaTheHole - LdaTrue - LdaFalse - LdaLdar - LdaStar Also adds Smi tagging / untagging and OperandType typed BytecodeOperand operations to InterpreterAssembler. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1294793002 Cr-Commit-Position: refs/heads/master@{#30226}
-
rmcilroy authored
Makes the following modifications to the interpreter builtins and InterpreterAssembler: - Adds an accumulator register and initializes it to undefined() - Adds a register file pointer register and use it instead of FramePointer to access registers - Modifies builtin to support functions with 0 regiters in the register file - Modifies builtin to Call rather than TailCall to first bytecode handler. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1289863003 Cr-Commit-Position: refs/heads/master@{#30219}
-
- 13 Aug, 2015 2 commits
-
-
bmeurer authored
Revert of [runtime] Remove useless IN builtin. (patchset #2 id:20001 of https://codereview.chromium.org/1295433002/ ) Reason for revert: Breaks win32 nosnap Original issue's description: > [runtime] Remove useless IN builtin. > > Similar to DELETE, the IN builtin is just a thin wrapper for %HasElement > and %HasProperty anyway, and cannot be optimized, plus it had a weird > special fast case (which also involved at least one LOAD_IC plus some > intrinsic magic). > > R=yangguo@chromium.org,jarin@chromium.org > > Committed: https://crrev.com/72d60a1e80e81e2e68ca402665e2acbc46c5e471 > Cr-Commit-Position: refs/heads/master@{#30154} TBR=yangguo@chromium.org,jarin@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1288923002 Cr-Commit-Position: refs/heads/master@{#30155}
-
bmeurer authored
Similar to DELETE, the IN builtin is just a thin wrapper for %HasElement and %HasProperty anyway, and cannot be optimized, plus it had a weird special fast case (which also involved at least one LOAD_IC plus some intrinsic magic). R=yangguo@chromium.org,jarin@chromium.org Review URL: https://codereview.chromium.org/1295433002 Cr-Commit-Position: refs/heads/master@{#30154}
-
- 10 Aug, 2015 1 commit
-
-
bmeurer authored
TurboFan is now a requirement and supported by all backends, so we don't need those macros (plus all the machinery on top) anymore. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1282763002 Cr-Commit-Position: refs/heads/master@{#30082}
-
- 07 Aug, 2015 1 commit
-
-
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}
-
- 06 Aug, 2015 1 commit
-
-
mtrofin authored
BUG= Review URL: https://codereview.chromium.org/1271703002 Cr-Commit-Position: refs/heads/master@{#30050}
-
- 31 Jul, 2015 1 commit
-
-
martyn.capewell authored
Improve code generated for flag materialization. Review URL: https://codereview.chromium.org/1260733003 Cr-Commit-Position: refs/heads/master@{#29954}
-
- 30 Jul, 2015 4 commits
-
-
danno authored
Add factory methods for different types of LinkageLocations, and ensure that accesses to the underlying data in the location are classified by type and funneled through explicit accessors. Also change the representation of LinkageLocation to use a BitField rather than using a reserved section of the integer range. Review URL: https://codereview.chromium.org/1262343002 Cr-Commit-Position: refs/heads/master@{#29938}
-
oth authored
BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1257543003 Cr-Commit-Position: refs/heads/master@{#29934}
-
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}
-
- 27 Jul, 2015 1 commit
-
-
mbrandy authored
R=michael_dawson@ca.ibm.com, danno@chromium.org, yangguo@chromium.org BUG= Review URL: https://codereview.chromium.org/1255953003 Cr-Commit-Position: refs/heads/master@{#29884}
-
- 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}
-
- 22 Jul, 2015 2 commits
-
-
danno authored
Review URL: https://codereview.chromium.org/1245523002 Cr-Commit-Position: refs/heads/master@{#29791}
-
mtrofin authored
Unit tests for the live range conflict detection mechanism (CoalescedLiveRanges) in the Greedy Allocator. Consolidated conflict detection and traversal logic in CoalescedLiveRanges to avoid duplication in both code and testing. In addition, this change achieves better separation between CoalescedLiveRanges and other register allocator components, improving testability and maintainability. BUG= Review URL: https://codereview.chromium.org/1219063017 Cr-Commit-Position: refs/heads/master@{#29783}
-
- 21 Jul, 2015 1 commit
-
-
rmcilroy authored
The InterpreterAssembler needs to specify a specific CallDescriptor type instead of using the SimplifiedCDescriptor type. This CL makes it possible to specify the CallDescriptor used by the RawMachineAssembler instead of specifying a MachineSignature. Also removes instruction-selector-tester.h which was erroneously resurrected at some point. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1235313002 Cr-Commit-Position: refs/heads/master@{#29777}
-
- 20 Jul, 2015 1 commit
-
-
danno authored
In many cases, the context that TurboFan's ASTGraphBuilder or subsequent reduction operations attaches to nodes does not need to be that exact context, but rather only needs to be one with the same native context, because it is used internally only to fetch the native context, e.g. for creating and throwing exceptions. This reducer recognizes common cases where the context that is specified for a node can be relaxed to a canonical, less specific one. This relaxed context can either be the enclosing function's context or a specific Module or Script context that is explicitly created within the function. This optimization is especially important for TurboFan-generated code stubs which use context specialization and inlining to generate optimal code. Without context relaxation, many extraneous moves are generated to pass exactly the right context to internal functions like ToNumber and AllocateHeapNumber, which only need the native context. By turning context relaxation on, these moves disappear because all these common internal context uses are unified to the context passed into the stub function, which is typically already in the correct context register and remains there for short stubs. It also eliminates the explicit use of a specialized context constant in the code stub in these cases, which could cause memory leaks. Review URL: https://codereview.chromium.org/1244583003 Cr-Commit-Position: refs/heads/master@{#29763}
-
- 13 Jul, 2015 5 commits
-
-
ishell authored
NON_CONTEXTUAL ~> INSIDE_TYPEOF CONTEXTUAL ~> NOT_INSIDE_TYPEOF Review URL: https://codereview.chromium.org/1227893005 Cr-Commit-Position: refs/heads/master@{#29611}
-
rmcilroy authored
Review URL: https://codereview.chromium.org/1221433021 Cr-Commit-Position: refs/heads/master@{#29604}
-
ishell authored
Loads and stores to global vars are now made via property cell shortcuts installed into parent script context. This CL also adds hydrogen stubs for global loads and global stores, full-codegen and TurboFan now uses this machinery. Review URL: https://codereview.chromium.org/1224793002 Cr-Commit-Position: refs/heads/master@{#29592}
-
bmeurer authored
Optimize string "length" property access based on static type information if possible, but also optimistically optimize the access based on type feedback from the LoadIC. R=jarin@chromium.org Committed: https://crrev.com/17add22ff4b9c5ca638502e7708f0d9d99baca40 Cr-Commit-Position: refs/heads/master@{#29543} Review URL: https://codereview.chromium.org/1216593003 Cr-Commit-Position: refs/heads/master@{#29588}
-
martyn.capewell authored
Reduce Float64 comparison to Float32 when both inputs are conversions from Float32. Review URL: https://codereview.chromium.org/1235663002 Cr-Commit-Position: refs/heads/master@{#29586}
-
- 08 Jul, 2015 3 commits
-
-
adamk authored
Revert of [turbofan] Optimize string "length" property access based on types. (patchset #2 id:20001 of https://codereview.chromium.org/1216593003/) Reason for revert: Causes crash when running benchmarks/octane/regexp.js on ARM: http://build.chromium.org/p/client.v8/builders/V8%20Arm/builds/2492/steps/Benchmarks/logs/regexp Original issue's description: > [turbofan] Optimize string "length" property access based on types. > > Optimize string "length" property access based on static type > information if possible, but also optimistically optimize the access > based on type feedback from the LoadIC. > > R=jarin@chromium.org > > Committed: https://crrev.com/17add22ff4b9c5ca638502e7708f0d9d99baca40 > Cr-Commit-Position: refs/heads/master@{#29543} TBR=mstarzinger@chromium.org,jarin@chromium.org,bmeurer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1224083002 Cr-Commit-Position: refs/heads/master@{#29544}
-
bmeurer authored
Optimize string "length" property access based on static type information if possible, but also optimistically optimize the access based on type feedback from the LoadIC. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1216593003 Cr-Commit-Position: refs/heads/master@{#29543}
-
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}
-
- 07 Jul, 2015 1 commit
-
-
rmcilroy authored
The RawMachineAssembler will be used to build the interpreter, so it needs to move back to src/compiler. This reverts commit b5b00cc0. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1221303014 Cr-Commit-Position: refs/heads/master@{#29519}
-
- 03 Jul, 2015 2 commits
-
-
bmeurer authored
Currently we lower shifts directly to machine operators, and add an appropriate Word32And to implement the & 0x1F operation on the right hand side required by the specification. However for Word32And we assume Int32 in simplified lowering, which is basically changes the right hand side bit interpretation for the shifts from Uint32 to Int32, which is obviously wrong. So now we represent that explicitly by proper simplified operators for the shifts, which are lowered to machine in simplified lowering. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1213803008 Cr-Commit-Position: refs/heads/master@{#29465}
-
titzer authored
Also add control inputs to 64-bit integer divide and modulus operations. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1223613002 Cr-Commit-Position: refs/heads/master@{#29460}
-
- 02 Jul, 2015 1 commit
-
-
martyn.capewell authored
Support 32-bit cmp with shift/extend by reusing the existing add/sub shift and extend code. Review URL: https://codereview.chromium.org/1218103005 Cr-Commit-Position: refs/heads/master@{#29435}
-
- 30 Jun, 2015 4 commits
-
-
conradw authored
Revert "Revert relanded strong property access CL" Regression issues should be solved. Initial patchset is the original, subsequent patchsets are the fixing modifications. This reverts commit 4ac7be56. BUG=v8:3956 LOG=N Review URL: https://codereview.chromium.org/1199983002 Cr-Commit-Position: refs/heads/master@{#29384}
-
martyn.capewell authored
Move the arithmetic shift from Int32MulHigh to a following Int32Add on ARM64. This graph is commonly generated on reduction of signed integer division. Review URL: https://codereview.chromium.org/1209413008 Cr-Commit-Position: refs/heads/master@{#29380}
-
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}
-
bmeurer authored
This optimization never triggers currently, and is inherently native context dependent for no real reason (for example it will not properly detect those constructors in the case of cross native context inlining), plus it is slow and awkward. In case we really need this functionality at some point, we should find a way to make it work with the builtin function id mechanism that is already in place to match other builtins. R=jarin@chromium.org,rossberg@chromium.org Review URL: https://codereview.chromium.org/1221683006 Cr-Commit-Position: refs/heads/master@{#29365}
-
- 26 Jun, 2015 2 commits
-
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1218443002 Cr-Commit-Position: refs/heads/master@{#29324}
-
bmeurer authored
This will enable tail call optimization even across inlining. Plus it might enable some other interesting optimizations as well. In order to avoid blowing up the generated code, we can still canonicalize the epilogue in the CodeGenerator, similar to what fullcodegen does. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1215623002 Cr-Commit-Position: refs/heads/master@{#29311}
-
- 25 Jun, 2015 3 commits
-
-
bmeurer authored
Also remove the weird work-around for this missing optimization in CHECK_DATE in macros.py. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1205353002 Cr-Commit-Position: refs/heads/master@{#29288}
-
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}
-
bmeurer authored
This partially reverts https://codereview.chromium.org/1162563002 because we might actually be able to optimize certain combinations now due to dead code elimination. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1202263006 Cr-Commit-Position: refs/heads/master@{#29277}
-
- 24 Jun, 2015 1 commit
-
-
danno authored
- Thread Type::FunctionType through stubs and the TF pipeline. - Augment Typer to decorate parameter nodes with types from a Type::FunctionType associated with interface descriptors. - Factor interface descriptors into platform-specific and platform-independent components so that all descriptors share a common Type::FunctionType for all platforms. Review URL: https://codereview.chromium.org/1197703002 Cr-Commit-Position: refs/heads/master@{#29248}
-