- 25 Feb, 2016 20 commits
-
-
ahaas authored
Comparison operators are lowered using to a lexicographic ordering, e.g. (a,b) <= (c,d) <<>> (a < c) | (a == c) & (b <= d). R=titzer@chromium.org Review URL: https://codereview.chromium.org/1729263002 Cr-Commit-Position: refs/heads/master@{#34287}
-
mstarzinger authored
R=bmeurer@chromium.org BUG=v8:3956 LOG=n Review URL: https://codereview.chromium.org/1736963002 Cr-Commit-Position: refs/heads/master@{#34286}
-
ssanfilippo authored
Bytecode expectations have been moved to external (.golden) files, one per test. Each test in the suite builds a representation of the the compiled bytecode using BytecodeExpectationsPrinter. The output is then compared to the golden file. If the comparision fails, a textual diff can be used to identify the discrepancies. Only the test snippets are left in the cc file, which also allows to make it more compact and meaningful. Leaving the snippets in the cc file was a deliberate choice to allow keeping the "truth" about the tests in the cc file, which will rarely change, as opposed to golden files. Golden files can be generated and kept up to date using generate-bytecode-expectations, which also means that the test suite can be batch updated whenever the bytecode or golden format changes. The golden format has been slightly amended (no more comments about `void*`, add size of the bytecode array) following the consideration made while converting the tests. There is also a fix: BytecodeExpectationsPrinter::top_level_ was left uninitialized, leading to undefined behaviour. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1717293002 Cr-Commit-Position: refs/heads/master@{#34285}
-
yangguo authored
This is to help debugging missing break locations. R=vogelheim@chromium.org Review URL: https://codereview.chromium.org/1732253002 Cr-Commit-Position: refs/heads/master@{#34284}
-
bmeurer authored
We already have a code stub that implements Typeof, so we don't need a special runtime entry here to implement the TypeOf handler. R=rmcilroy@chromium.org Review URL: https://codereview.chromium.org/1732273002 Cr-Commit-Position: refs/heads/master@{#34283}
-
mythria authored
Handles stack overflow in interpreter. 1. When visiting function literal, if the shared function info cannot be found we should return a stack overflow. 2. When visiting the ast graph, if stack overflow happens then all the ast nodes are not visited, so we need to have appropriate handling in the AccumulatorResultScope and RegisterResultScope. 3. MakeBytecode should not return a suceess unconditionally. If there is a stack overflow, it should return false, so RangeError can be thrown. BUG=v8:4280,v8:4680 LOG=N Review URL: https://codereview.chromium.org/1721983005 Cr-Commit-Position: refs/heads/master@{#34282}
-
machenbach authored
Follow up after: https://codereview.chromium.org/1713993002/ BUG=chromium:535160 LOG=n TBR=tandrii@chromium.org, jkummerow@chromium.org Review URL: https://codereview.chromium.org/1733273002 Cr-Commit-Position: refs/heads/master@{#34281}
-
machenbach authored
BUG=v8:4779 LOG=n NOTRY=true TBR=bmeurer@chromium.org, ulan@chromium.org Review URL: https://codereview.chromium.org/1729263006 Cr-Commit-Position: refs/heads/master@{#34280}
-
ahaas authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/1724193003 Cr-Commit-Position: refs/heads/master@{#34279}
-
ahaas authored
I turn the test off for now. The problem is that mips does not deal with signalling NaNs as expected. @v8-mips-ports: Could it be that the mips simulator deals differently with signalling NaNs than the actual hardware? The implementation that is tested in these tests assumes that sNaN * 1.0 = qNaN, where the bits of sNaN and qNaN are equal except for the most significant mantissa bit. This assumption holds for the simulator, but seems not to hold for actual mips hardware. Do you know more about that? R=mstarzinger@chromium.org, titzer@chromium.org, v8-mips-ports@googlegroups.com Review URL: https://codereview.chromium.org/1735673003 Cr-Commit-Position: refs/heads/master@{#34278}
-
zhengxing.li authored
port ee8108b7 (r34246) original commit message: This implements proper handling of local control flow (i.e. break and continue) that spans the boundary of a do-expression. We can no longer determine the number of operands to be dropped from the nesting of statements alone, instead we use the new precise operand stack depth tracking. BUG= Review URL: https://codereview.chromium.org/1735853002 Cr-Commit-Position: refs/heads/master@{#34277}
-
machenbach authored
This filters test and third_party files to get a speed-up when running tests and when collecting profile data. BUG=chromium:568949 LOG=n Committed: https://crrev.com/761ee31be5ab4fde05c294e5d632608fbaea8ad4 Cr-Commit-Position: refs/heads/master@{#34216} Committed: https://crrev.com/906db7448702a6ac9fab2a445c57cc85f6dd1b1a Cr-Commit-Position: refs/heads/master@{#34253} Committed: https://crrev.com/fe38ad573ee737e06a74b7fcd73f557ac0f1135a Cr-Commit-Position: refs/heads/master@{#34272} Review URL: https://codereview.chromium.org/1730543002 Cr-Commit-Position: refs/heads/master@{#34276}
-
machenbach authored
Revert of [coverage] Filter some files from instrumentation. (patchset #4 id:60001 of https://codereview.chromium.org/1730543002/ ) Reason for revert: Prevents using goma with make. Original issue's description: > [coverage] Filter some files from instrumentation. > > This filters test and third_party files to get a speed-up > when running tests and when collecting profile data. > > BUG=chromium:568949 > LOG=n > > Committed: https://crrev.com/761ee31be5ab4fde05c294e5d632608fbaea8ad4 > Cr-Commit-Position: refs/heads/master@{#34216} > > Committed: https://crrev.com/906db7448702a6ac9fab2a445c57cc85f6dd1b1a > Cr-Commit-Position: refs/heads/master@{#34253} > > Committed: https://crrev.com/fe38ad573ee737e06a74b7fcd73f557ac0f1135a > Cr-Commit-Position: refs/heads/master@{#34272} TBR=tandrii@chromium.org,kjellander@chromium.org,jfb@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:568949 Review URL: https://codereview.chromium.org/1733213002 Cr-Commit-Position: refs/heads/master@{#34275}
-
bmeurer authored
Migrate Math.imul, Math.fround, Math.acos, Math.asin and Math.atan to C++ builtins, as these ones call into C++ anyway and so there's no need to have this extra wrapper around it. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1731543004 Cr-Commit-Position: refs/heads/master@{#34274}
-
ishell authored
This optimization does not give us much (see perf try bot results associated with this CL) but complicates things a lot. The main motivation is to avoid additional complexity in tail call optimization. There are some pieces left in the deoptimizer, but I'll address this in a separate CL. Review URL: https://codereview.chromium.org/1731273003 Cr-Commit-Position: refs/heads/master@{#34273}
-
machenbach authored
This filters test and third_party files to get a speed-up when running tests and when collecting profile data. BUG=chromium:568949 LOG=n Committed: https://crrev.com/761ee31be5ab4fde05c294e5d632608fbaea8ad4 Cr-Commit-Position: refs/heads/master@{#34216} Committed: https://crrev.com/906db7448702a6ac9fab2a445c57cc85f6dd1b1a Cr-Commit-Position: refs/heads/master@{#34253} Review URL: https://codereview.chromium.org/1730543002 Cr-Commit-Position: refs/heads/master@{#34272}
-
mtrofin authored
BUG= Review URL: https://codereview.chromium.org/1740543002 Cr-Commit-Position: refs/heads/master@{#34271}
-
zhengxing.li authored
port 666aec03 (r34237) original commit message: Since both null and undefined are also marked as undetectable now, we can just test that bit instead of having the CompareNilIC try to collect feedback to speed up the general case (without the undetectable bit being used). Drive-by-fix: Update the type system to match the new handling of undetectable in the runtime. BUG= Review URL: https://codereview.chromium.org/1731383003 Cr-Commit-Position: refs/heads/master@{#34270}
-
jkummerow authored
When there is no receiver object, plain function calls are a few percent faster than %_Call(). This patch also fixes the HAS_INDEX macro used in a bunch of Array.prototype functions to properly check for elements inherited from prototypes. Review URL: https://codereview.chromium.org/1706213002 Cr-Commit-Position: refs/heads/master@{#34269}
-
jkummerow authored
Mostly by avoiding unnecessary Handle/HandleScope creation, "length" property lookups, and length conversions. This yields about 60% speedup on the microbenchmark I tested with. Note that the C++ builtin is the middle performance tier of three, so not every Array.push use case will be affected by this patch. Review URL: https://codereview.chromium.org/1716833002 Cr-Commit-Position: refs/heads/master@{#34268}
-
- 24 Feb, 2016 20 commits
-
-
mbrandy authored
Port c129aa4d Original commit message: These macro operators represent a conditional eager deoptimization exit without explicit branching, which greatly reduces overhead of both scheduling and register allocation, and thereby greatly reduces overall compilation time, esp. when there are a lot of eager deoptimization exits. R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com BUG= Review URL: https://codereview.chromium.org/1730383002 Cr-Commit-Position: refs/heads/master@{#34267}
-
mbrandy authored
Port 666aec03 Original commit message: Since both null and undefined are also marked as undetectable now, we can just test that bit instead of having the CompareNilIC try to collect feedback to speed up the general case (without the undetectable bit being used). Drive-by-fix: Update the type system to match the new handling of undetectable in the runtime. R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com BUG= Review URL: https://codereview.chromium.org/1733663003 Cr-Commit-Position: refs/heads/master@{#34266}
-
v8-autoroll authored
Rolling v8/tools/clang to 8598a726360f2722f4db0eab732a5f6b4cb41eb9 Rolling v8/tools/swarming_client to 71c61c858bb2c2deda83781978fe65e94171f58f TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org Review URL: https://codereview.chromium.org/1729263004 Cr-Commit-Position: refs/heads/master@{#34265}
-
mbrandy authored
Port ee8108b7 Original commit message: This implements proper handling of local control flow (i.e. break and continue) that spans the boundary of a do-expression. We can no longer determine the number of operands to be dropped from the nesting of statements alone, instead we use the new precise operand stack depth tracking. R=mstarzinger@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com TEST=mjsunit/harmony/do-expressions-control BUG=v8:4488 LOG=n Review URL: https://codereview.chromium.org/1735623002 Cr-Commit-Position: refs/heads/master@{#34264}
-
mstarzinger authored
This makes the aforementioned emitting function independent of the target architecture by leveraging existing abstractions. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1730243002 Cr-Commit-Position: refs/heads/master@{#34263}
-
littledan authored
There was a bug in for-of loops without newly declared variables: If, in performing the assignment, an exception were thrown, then IteratorClose would not be called. The problem was that the assignment is done as part of assign_each, which happens before the loop is put back in the state which is recognized to be breaking/throwing/returning early. This patch modifies the for-of desugaring by setting the loop state before, rather than after, evaluating the assign_each portion, which is responsible for evaluating the assignment in for-of loops which do not have a declaration. This patch, together with https://codereview.chromium.org/1728973002 , allow all test262 iterator return-related tests to pass. R=rossberg BUG=v8:4776 LOG=Y Review URL: https://codereview.chromium.org/1731773003 Cr-Commit-Position: refs/heads/master@{#34262}
-
littledan authored
In the for-of desugaring, IteratorClose is a subtle thing to get right. When return exists, the logic for which exception to throw is as follows: 1. Get the 'return' property and property any exception that might come from the property read 2. Call return, not yet propagating an exception if it's thrown. 3. If we are closing the iterator due to an exception, propagate that error. 4. If return threw, propagate that error. 5. Check if return's return value was not an object, and throw if so Previously, we were effectively doing step 5 even if an exception "had already been thrown" by step 3. Because this took place in a finally block, the exception "won the race" and was the one propagated to the user. The fix is a simple change to the desugaring to do step 5 only if step 3 didn't happen. R=rossberg BUG=v8:4775 LOG=Y Review URL: https://codereview.chromium.org/1728973002 Cr-Commit-Position: refs/heads/master@{#34261}
-
akos.palfi authored
Per MIPS O32 ABI the first four arguments must be passed via the a0-a3 registers and they must be on the stack as well. TEST=cctest/test-run-wasm/* BUG= Review URL: https://codereview.chromium.org/1730763002 Cr-Commit-Position: refs/heads/master@{#34260}
-
mstarzinger authored
This makes the FullCodeGenerator::EmitNamedPropertyLoad be architecture independent by adding MacroAssembler::Move helpers. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1734643002 Cr-Commit-Position: refs/heads/master@{#34259}
-
jfb authored
Revert of [coverage] Filter some files from instrumentation. (patchset #3 id:40001 of https://codereview.chromium.org/1730543002/ ) Reason for revert: This breaks `gclient sync` because v8_target_arch isn't defined. gyp: name 'v8_target_arch' is not defined while evaluating condition '(OS=="linux" or OS=="mac") and (target_arch=="ia32" or target_arch=="x64") and (v8_target_arch!="x87" and v8_target_arch!="x32") and coverage==0' in /media/jfb/ssd/v8/v8/build/all.gyp Error: Command '/usr/bin/python v8/build/gyp_v8' returned non-zero exit status 1 in /media/jfb/ssd/v8 Original issue's description: > [coverage] Filter some files from instrumentation. > > This filters test and third_party files to get a speed-up > when running tests and when collecting profile data. > > BUG=chromium:568949 > LOG=n > > Committed: https://crrev.com/761ee31be5ab4fde05c294e5d632608fbaea8ad4 > Cr-Commit-Position: refs/heads/master@{#34216} > > Committed: https://crrev.com/906db7448702a6ac9fab2a445c57cc85f6dd1b1a > Cr-Commit-Position: refs/heads/master@{#34253} TBR=tandrii@chromium.org,kjellander@chromium.org,machenbach@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:568949 Review URL: https://codereview.chromium.org/1737433002 Cr-Commit-Position: refs/heads/master@{#34258}
-
ishell authored
Everything that HCallFunction does can be easily done using more general HCallWithDescriptor, so there's no need to have this dedicated instruction around. Review URL: https://codereview.chromium.org/1731303002 Cr-Commit-Position: refs/heads/master@{#34257}
-
vogelheim authored
This reduces the memory consumption of SourcePositionTable by ca. 2/3. Over Octane, this reduces the source position table memory consumption from ~370kB to ~115kB, which makes it ca. 10% of the total bytecode size (~1.1MB) ---------------- Reland CL in order to relive the glory days, and also fix memory leak w/ ENABLE_SLOW_CHECKS. SourcePositionTableBuilder used to have a no destructor since everything was zone allocated. But if ENABLE_SLOW_CHECKS, it has a heap allocated member and thus needs a proper constructor. ASAN thankfully notices this, and V8 no longer builds since this is called during mksnapshot. Breakge example: http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20ASAN%20arm64%20-%20debug%20builder/builds/4829 R=jochen@chromium.org, yangguo@chromium.org, rmcilroy@chromium.org BUG=v8:4690 LOG=y Committed: https://crrev.com/a6f41f7b8226555c5900440f6e3092b3545ee0f6 Cr-Commit-Position: refs/heads/master@{#34250} patch from issue 1704943002 at patchset 200001 (http://crrev.com/1704943002#ps200001) Review URL: https://codereview.chromium.org/1731883003 Cr-Commit-Position: refs/heads/master@{#34256}
-
mstarzinger authored
This fixes a corner case that triggered an assert in full-codegens operand stack depth tracking. We stop pushing operands if we overflow the C-stack while iterating the AST. This makes the tracking go out of sync before we fully returned from the tree traversal, at which point the thrown RangeError will abort compilation. R=ishell@chromium.org TEST=mjsunit/regress/regress-crbug-589472 BUG=chromium:589472 LOG=n Review URL: https://codereview.chromium.org/1732903002 Cr-Commit-Position: refs/heads/master@{#34255}
-
littledan authored
This patch moves for-of closing to staging. There are a couple of minor semantics bugs remaining in finalization along edge cases, but we don't know of any stability issues. BUG=v8:3566 R=rossberg LOG=Y Review URL: https://codereview.chromium.org/1725203002 Cr-Commit-Position: refs/heads/master@{#34254}
-
machenbach authored
This filters test and third_party files to get a speed-up when running tests and when collecting profile data. BUG=chromium:568949 LOG=n Committed: https://crrev.com/761ee31be5ab4fde05c294e5d632608fbaea8ad4 Cr-Commit-Position: refs/heads/master@{#34216} Review URL: https://codereview.chromium.org/1730543002 Cr-Commit-Position: refs/heads/master@{#34253}
-
mythria authored
Revert of [Interpreter] Implements calls through CallICStub in the interpreter. (patchset #15 id:270001 of https://codereview.chromium.org/1688283003/ ) Reason for revert: It is not a good idea to call CallICStub from the builtin. It might be sensitive to the frame structure. Constructing a internal frame might cause problems. It is much better to inline the code related to the type feedback vector into the builtin. Original issue's description: > [Interpreter] Implements calls through CallICStub in the interpreter. > > Calls are implemented through CallICStub to collect type feedback. Adds > a new builtin called InterpreterPushArgsAndCallIC that pushes the > arguments onto stack and calls CallICStub. > > Also adds two new bytecodes CallIC and CallICWide to indicate calls have to > go through CallICStub. > > MIPS port contributed by balazs.kilvady. > > BUG=v8:4280, v8:4680 > LOG=N > > Committed: https://crrev.com/20362a2214c11a0f2ea5141b6a79e09458939cec > Cr-Commit-Position: refs/heads/master@{#34244} TBR=rmcilroy@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4280, v8:4680 Review URL: https://codereview.chromium.org/1731253003 Cr-Commit-Position: refs/heads/master@{#34252}
-
vogelheim authored
Revert of Encode interpreter::SourcePositionTable as variable-length ints. (patchset #10 id:200001 of https://codereview.chromium.org/1704943002/ ) Reason for revert: Build failure on Linux64 arm64 ASAN: http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20ASAN%20arm64%20-%20debug%20builder/builds/4829 (Leaks memory, somehow.) Original issue's description: > Encode interpreter::SourcePositionTable as variable-length ints. > > This reduces the memory consumption of SourcePositionTable by ca. 2/3. > Over Octane, this reduces the source position table memory consumption > from ~370kB to ~115kB, which makes it ca. 10% of the total bytecode size > (~1.1MB) > > BUG= > > Committed: https://crrev.com/a6f41f7b8226555c5900440f6e3092b3545ee0f6 > Cr-Commit-Position: refs/heads/master@{#34250} TBR=jochen@chromium.org,rmcilroy@chromium.org,yangguo@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1728193003 Cr-Commit-Position: refs/heads/master@{#34251}
-
vogelheim authored
This reduces the memory consumption of SourcePositionTable by ca. 2/3. Over Octane, this reduces the source position table memory consumption from ~370kB to ~115kB, which makes it ca. 10% of the total bytecode size (~1.1MB) BUG= Review URL: https://codereview.chromium.org/1704943002 Cr-Commit-Position: refs/heads/master@{#34250}
-
ahaas authored
(a EQ b) is lowered to ((low(a) XOR low(b)) OR (high(a) XOR high(b))) EQ 0 R=titzer@chromium.org Review URL: https://codereview.chromium.org/1729493002 Cr-Commit-Position: refs/heads/master@{#34249}
-
bmeurer authored
There was an eval inside the array_natives_test() which prevented Crankshaft, even tho it's unrelated, and so we always went to TurboFan now, which both decreased test coverage and increased time for stress opt runs. R=machenbach@chromium.org Review URL: https://codereview.chromium.org/1725383002 Cr-Commit-Position: refs/heads/master@{#34248}
-