- 25 Aug, 2016 17 commits
-
-
jacob.bramley authored
Existing uses are correct but the return type was misleading. Also clarify some related comments to make the difference between Bits and BitField more obvious. BUG= Review-Url: https://codereview.chromium.org/2275973002 Cr-Commit-Position: refs/heads/master@{#38894}
-
bmeurer authored
Revert of [turbofan] Insert dummy values when changing from None type. (patchset #5 id:80001 of https://codereview.chromium.org/2266823002/ ) Reason for revert: Octane/Mandreel aborts with an exception now: TypeError: __FUNCTION_TABLE__[(r2 >> 2)] is not a function Original issue's description: > [turbofan] Insert dummy values when changing from None type. > > Currently we choose the MachineRepresentation::kNone representation for > values of Type::None, and when converting values from the kNone representation > we use "impossible" conversions that will crash at runtime. This > assumes that the impossible conversions should never be hit (the only > way to produce the impossible values is to perform an always-failing > runtime check on a value, such as Smi-checking a string). Note that > this assumes that the runtime check is executed before the impossible > convesrion. > > Introducing BitwiseOr type feedback broke this in two ways: > > - we always pick Word32 representation for bitwise-or, so the > impossible conversion does not trigger (it only triggers with > None representation), and we could end up with unsupported > conversions from Word32. > > - even if we inserted impossible conversions, they are pure conversions. > Since untagging, bitwise-or operations are also pure, we could hoist > all these before the smi check of the inputs and we could hit the > impossible conversions before we get to the smi check. > > This CL addresses this by just providing dummy values for conversions > from the Type::None type. It also removes the impossible-to-* conversions. > > BUG=chromium:638132 > > Committed: https://crrev.com/c83b21ab755f1420b6da85b3ff43d7e96ead9bbe > Cr-Commit-Position: refs/heads/master@{#38883} TBR=mstarzinger@chromium.org,jarin@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:638132 Review-Url: https://codereview.chromium.org/2280613002 Cr-Commit-Position: refs/heads/master@{#38893}
-
nikolaos authored
This patch moves the following methods from the traits objects to the (pre)parser implementation objects: - AddFormalParameter - AddParameterInitializationBlock - DeclareFormalParameter - ExpressionListToExpression - GetNonPatternList - GetReportedErrorList - IsTaggedTemplate - MaterializeUnspreadArgumentsLiterals - NoTemplateTag - ParseArrowFunctionFormalParameterList - ReindexLiterals - SetFunctionNameFromIdentifierRef - SetFunctionNameFromPropertyName It moves the Void method from the preparser traits object to the preparser implementation object. It also removes the traits zone method and replaces it with that of ParserBase, which it turns to public. After all this, the traits objects contain just typedefs and the delegate methods are no more necessary. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2277843002 Cr-Commit-Position: refs/heads/master@{#38892}
-
heimbuef authored
Used a BitField to for Variable fields instead of relying on the compiler, saving some memory probably. This reduces sizeof(Variable) from 64 to 40 on x64 BUG=v8:5209 Review-Url: https://codereview.chromium.org/2257493002 Cr-Commit-Position: refs/heads/master@{#38891}
-
nikolaos authored
This patch moves the following methods from the traits objects to the (pre)parser implementation objects: - ExpressionFromIdentifier - ExpressionFromLiteral - ExpressionFromString - FunctionSentExpression - GetNextSymbol - GetNumberAsSymbol - GetSymbol - NewExpressionList - NewPropertyList - NewStatementList - NewSuperCallReference - NewSuperPropertyReference - NewTargetExpression - ThisExpression Also, the method GetIterator is specific only to the parser and is removed from the preparser's implementation. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2274113002 Cr-Commit-Position: refs/heads/master@{#38890}
-
neis authored
BUG=v8:1569 Review-Url: https://codereview.chromium.org/2273013002 Cr-Commit-Position: refs/heads/master@{#38889}
-
vogelheim authored
Review-Url: https://codereview.chromium.org/2272013002 Cr-Commit-Position: refs/heads/master@{#38888}
-
mstarzinger authored
R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2272653002 Cr-Commit-Position: refs/heads/master@{#38887}
-
baptiste.afsa authored
Some instruction selection tests rely on the instructions to be emitted in a specific order. R=jarin@chromium.org, bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2276003002 Cr-Commit-Position: refs/heads/master@{#38886}
-
neis authored
R=verwaest@chromium.org, bmeurer@chromium.org BUG= Review-Url: https://codereview.chromium.org/2269403003 Cr-Commit-Position: refs/heads/master@{#38885}
-
bmeurer authored
There's no point in running the LoadElimination on asm.js functions and it would take serious amount of effort to actually make it correct for the deprecated parts of the pipeline. R=jarin@chromium.org BUG=v8:5308 Review-Url: https://codereview.chromium.org/2276273002 Cr-Commit-Position: refs/heads/master@{#38884}
-
jarin authored
Currently we choose the MachineRepresentation::kNone representation for values of Type::None, and when converting values from the kNone representation we use "impossible" conversions that will crash at runtime. This assumes that the impossible conversions should never be hit (the only way to produce the impossible values is to perform an always-failing runtime check on a value, such as Smi-checking a string). Note that this assumes that the runtime check is executed before the impossible convesrion. Introducing BitwiseOr type feedback broke this in two ways: - we always pick Word32 representation for bitwise-or, so the impossible conversion does not trigger (it only triggers with None representation), and we could end up with unsupported conversions from Word32. - even if we inserted impossible conversions, they are pure conversions. Since untagging, bitwise-or operations are also pure, we could hoist all these before the smi check of the inputs and we could hit the impossible conversions before we get to the smi check. This CL addresses this by just providing dummy values for conversions from the Type::None type. It also removes the impossible-to-* conversions. BUG=chromium:638132 Review-Url: https://codereview.chromium.org/2266823002 Cr-Commit-Position: refs/heads/master@{#38883}
-
bmeurer authored
For concurrent recompilation we created the CompilationHandleScope after the CanonicalHandleScope, which basically disabled the canonicalization because the deferred handle creation doesn't pay attention to the canonicalization mode then. This meant that we did not canonicalize handles properly as soon as concurrent recompilation was enabled. R=jarin@chromium.org BUG=v8:5267 Review-Url: https://codereview.chromium.org/2276953004 Cr-Commit-Position: refs/heads/master@{#38882}
-
bmeurer authored
This introduces appropriate unit tests to ensure that merging of elements/fields information is correct for diamonds. BUG=chromium:639210,v8:5266 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2278043002 Cr-Commit-Position: refs/heads/master@{#38881}
-
franzih authored
According to our style guide on Copyable and Movable Types, copy/move operators should be disabled using = delete in the public: section. Use consistent style for disabling new and delete. BUG= Review-Url: https://codereview.chromium.org/2276063002 Cr-Commit-Position: refs/heads/master@{#38880}
-
franzih authored
According to our style guide on Copyable and Movable Types, copy/move operators should be disabled using = delete in the public: section, not in the private: section. BUG= Review-Url: https://codereview.chromium.org/2272063002 Cr-Commit-Position: refs/heads/master@{#38879}
-
franzih authored
According to our style guide on Copyable and Movable Types, copy/move operators should be disabled in the public: section, not in the private: section. If disabled with a macro such as DISALLOW_COPY_AND_ASSIGN, it should be at the end of the private: section, and should be the last thing in the class. BUG= Review-Url: https://codereview.chromium.org/2271043003 Cr-Commit-Position: refs/heads/master@{#38878}
-
- 24 Aug, 2016 23 commits
-
-
mlippautz authored
https://developer.apple.com/library/mac/documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html#//apple_ref/doc/uid/20001880-SW3 R=jochen@chromium.org Review-Url: https://codereview.chromium.org/2278473002 Cr-Commit-Position: refs/heads/master@{#38877}
-
littledan authored
This patch fixes up one last case of redundant ExceptionEvents being triggered in the debugger for Promises--it makes the default reject handler for Promises (e.g., if the second argument for Promise.prototype.then is missing) appear to the debugger as a rethrow. R=adamk@chromium.org,jgruber@chromium.org BUG=v8:5167 Review-Url: https://codereview.chromium.org/2278643002 Cr-Commit-Position: refs/heads/master@{#38876}
-
rodolph.perfetta authored
Mark deopt's input alive till the end of the deopt instruction so they cannot be reused as output. BUG=v8:5158 Review-Url: https://codereview.chromium.org/2247303007 Cr-Commit-Position: refs/heads/master@{#38875}
-
jarin authored
Unfortunately, I was unable to produce a repro without asm.js. In normal JavaScript, the bounds check renaming saves us. I have not done anything about the index variable aliasing and handling of differently sized elements yet! BUG=chromium:639210, v8:5266 Review-Url: https://codereview.chromium.org/2270793004 Cr-Commit-Position: refs/heads/master@{#38874}
-
jyan authored
The generated FastAccessorAssembler uses IntPtr Load Op to load from &flags. Therefore, flags should be a pointer type. This fixes big endian issue. R=peterssen@google.com, vogelheim@chromium.org BUG= Review-Url: https://codereview.chromium.org/2266403004 Cr-Commit-Position: refs/heads/master@{#38873}
-
franzih authored
According to our style guide on Copyable and Movable Types, copy/move operators should be disabled in the public: section, not in the private: section. BUG= Review-Url: https://codereview.chromium.org/2278573002 Cr-Commit-Position: refs/heads/master@{#38872}
-
jbroman authored
BUG=chromium:148757 Review-Url: https://codereview.chromium.org/2269923004 Cr-Commit-Position: refs/heads/master@{#38871}
-
jgruber authored
This makes some information passed implicitly (e.g. the ForceConstructor flag used to be a special symbol passed as the receiver) explicit. BUG= Review-Url: https://codereview.chromium.org/2274823002 Cr-Commit-Position: refs/heads/master@{#38870}
-
ofrobots authored
The mkpeephole step was failing on Windows (only) for Node.js [1]. It seems that gyp was not creating the dependency graph correctly for Windows. Work-around the problem by exposing the dependency directly (as opposed to exposing it in the action), similar to how `mksnapshot` works. [1]: https://ci.nodejs.org/job/node-compile-windows/3798/label=win-vcbt2015/console R=oth@chromium.org, rmcilroy@chromium.org BUG= Review-Url: https://codereview.chromium.org/2276733002 Cr-Commit-Position: refs/heads/master@{#38869}
-
neis authored
The value returned via the int* argument was actually never used. Also remove has_rest_parameter() in favor of returning nullptr from rest_parameter(). This is in line with similar accessors and simplifies my changes. BUG= Review-Url: https://codereview.chromium.org/2276923002 Cr-Commit-Position: refs/heads/master@{#38868}
-
jochen authored
It's an empty header. R=verwaest@chromium.org BUG= Review-Url: https://codereview.chromium.org/2278513002 Cr-Commit-Position: refs/heads/master@{#38867}
-
mstarzinger authored
This preserves the original shared code of the underlying function when bytecode is provided. The method in question should only ensure bytecode is present, but should avoid switching compilation tiers of the given function. It might be that the function was fast-tracked to baseline by inlining without going through the interpreted tier first. R=rmcilroy@chromium.org TEST=mjsunit/regress/regress-crbug-635923 BUG=chromium:635923 Review-Url: https://codereview.chromium.org/2278543002 Cr-Commit-Position: refs/heads/master@{#38866}
-
verwaest authored
BUG=v8:5209 Review-Url: https://codereview.chromium.org/2275773002 Cr-Commit-Position: refs/heads/master@{#38865}
-
bmeurer authored
Don't bother using %_IsJSReceiver, which immediately gets lowered to ObjectIsReceiver anyways (by the JSIntrinsicLowering), but requires some complicated rewiring of effect/control chains. R=mstarzinger@chromium.org BUG=chromium:640369 Review-Url: https://codereview.chromium.org/2271973003 Cr-Commit-Position: refs/heads/master@{#38864}
-
zhengxing.li authored
The CL #38858 (https://codereview.chromium.org/2269293004) removed the parameter assignment code in rest_parameter(int* index) function in Class DeclarationScope. This caused the Gcc compilation fail at the following code in src/compiler/ast-graph-builder.cc, line 576. int rest_index; Variable* rest_parameter = scope->rest_parameter(&rest_index); BuildRestArgumentsArray(rest_parameter, rest_index); The error message was: ../src/compiler/ast-graph-builder.cc: In member function ‘void v8::internal::compiler::AstGraphBuilder::CreateGraphBody(bool)’: ../src/compiler/ast-graph-builder.cc:578:54: error: ‘rest_index’ may be used uninitialized in this function [-Werror=maybe-uninitialized] BuildRestArgumentsArray(rest_parameter, rest_index); ^ This CL fixed this issue by intializing rest_index to 0. BUG= Review-Url: https://codereview.chromium.org/2270363003 Cr-Commit-Position: refs/heads/master@{#38863}
-
nikolaos authored
This patch moves the following methods from the traits objects to the (pre)parser implementation objects: - BuildIteratorResult - BuildUnaryExpression - EmptyExpression - EmptyFunctionLiteral - EmptyIdentifier - EmptyIdentifierString - EmptyLiteral - EmptyObjectLiteralProperty - GetLiteralTheHole - NewThrowReferenceError - NewThrowSyntaxError - NewThrowTypeError - NullExpressionList - ReportMessageAt R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2268413002 Cr-Commit-Position: refs/heads/master@{#38862}
-
nikolaos authored
This patch moves the following methods from the traits objects to the (pre)parser implementation objects: - AsIdentifier - CheckAssigningFunctionLiteralToProperty - GetPropertyValue - InferFunctionName - IsArguments - IsArrayIndex - IsBoilerplateProperty - IsConstructor - IsDirectEvalCall - IsEval - IsEvalOrArguments - IsFutureStrictReserved - IsIdentifier - IsPrototype - IsThisProperty - IsUndefined - MarkExpressionAsAssigned - PushLiteralName - PushPropertyName - ShortcutNumericLiteralBinaryExpression R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2273693002 Cr-Commit-Position: refs/heads/master@{#38861}
-
bmeurer authored
For O instanceof C, we only need to check the instance type while iterating the prototypes of O instead of checking both the instance type and the access check bit of the map. This is because we have the explicit range of "special object types", which include both JSProxy as well as the global object and proxy and all API objects that might have access checks or interceptors. Also restructure the loop exits somewhat to ensure that the branch cloning gets a chance to actually eliminate the bit materialization for the results. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2263273003 Cr-Commit-Position: refs/heads/master@{#38860}
-
marja authored
With scopes: Don't call the ctor which wants a ScopeInfo if we don't want to pass it, instead call a ctor which doesn't need it. In addition, remove inner_scope from ctors and adjust it explicitly afterwards. It's confusing that some ctors get passed inner scopes and some outer scopes. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2270743002 Cr-Commit-Position: refs/heads/master@{#38859}
-
verwaest authored
rest_index_ is implicitly params_.length() - 1, since it can only be the last. Add dchecks that no parameters are added after the rest parameter. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2269293004 Cr-Commit-Position: refs/heads/master@{#38858}
-
zhengxing.li authored
port 2027b0be (r38784) original commit message: The new operators are implemented similar to the Float64(Max|Min) which already exist. The purpose of the new operators is the implementation of the F32Max and F32Min instructions in WebAssembly. BUG= Review-Url: https://codereview.chromium.org/2270193003 Cr-Commit-Position: refs/heads/master@{#38857}
-
zhengxing.li authored
port 4598d913 (r38747) original commit message: This fixes the self-healing mechanism for closures in the interpreter entry trampoline not that bytecode can be preserved even when baseline code is already available. BUG= Review-Url: https://codereview.chromium.org/2273503003 Cr-Commit-Position: refs/heads/master@{#38856}
-
verwaest authored
Now that ordered_variables_ is used to find non-dynamic variables, and NonLocals are always stored in the scope that introduces them, we can rely on variables_ to also cache non-locals. This has 2 advantages: 1) we don't need DynamicScopePart anymore, reducing all scopes by a pointer 2) upon second lookup of a non-local we don't need to walk the entire chain anymore. The cached value will immediately be found. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2276483003 Cr-Commit-Position: refs/heads/master@{#38855}
-