- 11 Nov, 2016 6 commits
-
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2481013010 Cr-Commit-Position: refs/heads/master@{#40927}
-
franzih authored
ToName conversion, i.e., ToPropertykey() is the identify for strings and symbols. BUG=v8:5623 Review-Url: https://codereview.chromium.org/2494073002 Cr-Commit-Position: refs/heads/master@{#40924}
-
bmeurer authored
This adds a new ExternalPointer type, which is an Internal type that is used for ExternalReferences and other pointer values, like the pointers into the asm.js heap. It also adds a PointerConstant operator, which we use to represents these raw constants (we can probably remove that particular operator again once WebAssembly ships with the validator). R=mvstanton@chromium.org BUG=v8:5267,v8:5270 Review-Url: https://codereview.chromium.org/2494753003 Cr-Commit-Position: refs/heads/master@{#40923}
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2493183002 Cr-Commit-Position: refs/heads/master@{#40918}
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2493173002 Cr-Commit-Position: refs/heads/master@{#40916}
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2492793005 Cr-Commit-Position: refs/heads/master@{#40914}
-
- 10 Nov, 2016 5 commits
-
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2493553002 Cr-Commit-Position: refs/heads/master@{#40892}
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2487673004 Cr-Commit-Position: refs/heads/master@{#40891}
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2492553003 Cr-Commit-Position: refs/heads/master@{#40886}
-
rmcilroy authored
We seem to get some small wins from avoiding the Ldr bytecodes, probably due to reduced icache pressure since there are less bytecode handlers. Replace the Ldr bytecodes with Star lookahead inlined into the Lda versions. Also fixes IsAccumulatorLoadWithoutEffects to include LdaContextSlot and LdaCurrentContextSlot BUG=v8:4280 Review-Url: https://codereview.chromium.org/2489513005 Cr-Commit-Position: refs/heads/master@{#40883}
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2489933002 Cr-Commit-Position: refs/heads/master@{#40880}
-
- 09 Nov, 2016 5 commits
-
-
ahaas authored
R=titzer@chromium.org TEST=unittests/WasmModuleVerifyTest.DataSegmentWithImmutableGlobal, unittests/WasmModuleVerifyTest.DataSegmentWithMutableImportedGlobal, unittests/WasmModuleVerifyTest.DataSegmentWithImmutableImportedGlobal Review-Url: https://codereview.chromium.org/2493433002 Cr-Commit-Position: refs/heads/master@{#40865}
-
ivica.bogosavljevic authored
Test InstructionSequenceTest has been initialized with a testing RegisterConfiguration instance defined in instruction-sequence-unittest.h, whereas class ExplicitOperand which is being tested used RegisterConfiguration from instruction.cc. In case these two instances are different, the tests would fail. The issue is fixed by using the same instance of RegisterConfiguration both for test code and code under test. Additionally, the tests in register-allocator-unittest.cc use hardcoded values for register and begin failing is the hardcoded register is not available for allocation. Fix by forcing the use of allocatable registers only. TEST=unittests.MoveOptimizerTest.RemovesRedundantExplicit,unittests.RegisterAllocatorTest.SpillPhi BUG= Review-Url: https://codereview.chromium.org/2433093002 Cr-Commit-Position: refs/heads/master@{#40862}
-
rmcilroy authored
The Ldr[Named/Keyed]Property bytecodes are problematic for the deoptimizer when inlining accessors in TurboFan. Remove them and replace with a Star lookahead in the bytecode handlers for Lda[Named/Keyed]Property. BUG=v8:4280 Review-Url: https://codereview.chromium.org/2485383002 Cr-Commit-Position: refs/heads/master@{#40860}
-
ahaas authored
Another spec issue. R=titzer@chromium.org, rossberg@chromium.org TEST=unittests/WasmModuleVerifyTest.DataWithoutMemory Review-Url: https://codereview.chromium.org/2486973003 Cr-Commit-Position: refs/heads/master@{#40855}
-
ahaas authored
The spec defines that indirect calls in WebAssembly code should cause a validation error if no function table exists. The CL contains the following changes: 1) Throw a validation error for indirect calls if the function table not exist. 2) Do not create TF nodes to throw a runtime error for indirect calls if the function table does not exist. 3) Fix existing unit tests by creating a dummy function table. 4) Add new a new test which tests that indirect calls without function table cause a validation error. R=rossberg@chromium.org CC=titzer@chromium.org TEST=unittests/AstDecoderTest.IndirectCallsWithoutTableCrash Review-Url: https://codereview.chromium.org/2484623002 Cr-Commit-Position: refs/heads/master@{#40852}
-
- 08 Nov, 2016 3 commits
-
-
ahaas authored
R=titzer@chromium.org, rossberg@chromium.org TEST=unittests/WasmModuleVerifyTest.ExportMutableGlobal Review-Url: https://codereview.chromium.org/2481263003 Cr-Commit-Position: refs/heads/master@{#40838}
-
ahaas authored
This fixes another spec tests. R=rossberg@chromium.org, titzer@chromium.org TEST=WasmModuleVerifyTest.ImportTable_mutable_global Review-Url: https://codereview.chromium.org/2484803002 Cr-Commit-Position: refs/heads/master@{#40831}
-
neis authored
This introduces two new bytecodes LdaModuleVariable and StaModuleVariable, replacing the corresponding runtime calls. Support in the bytecode graph builder exists only in the form of runtime calls. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2471033004 Cr-Commit-Position: refs/heads/master@{#40825}
-
- 07 Nov, 2016 4 commits
-
-
machenbach authored
Revert of [wasm] Indirect calls without function table cause validation errors. (patchset #3 id:40001 of https://codereview.chromium.org/2484623002/ ) Reason for revert: Speculative revert for blocking roll: https://codereview.chromium.org/2479233002/ Original issue's description: > [wasm] Indirect calls without function table cause validation errors. > > The spec defines that indirect calls in WebAssembly code should cause a > validation error if no function table exists. > > The CL contains the following changes: > 1) Throw a validation error for indirect calls if the function table > not exist. > 2) Do not create TF nodes to throw a runtime error for indirect calls > if the function table does not exist. > 3) Fix existing unit tests by creating a dummy function table. > 4) Add new a new test which tests that indirect calls without function > table cause a validation error. > > R=rossberg@chromium.org > CC=titzer@chromium.org > > TEST=unittests/AstDecoderTest.IndirectCallsWithoutTableCrash TBR=rossberg@chromium.org,titzer@chromium.org,ahaas@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2479283002 Cr-Commit-Position: refs/heads/master@{#40811}
-
neis authored
The existing Load/StoreContextElement operations take the index as an int. This CL adds versions that take the index as a Node. These already existed in the interpreter-assembler, from which they are now removed. R=mstarzinger@chromium.org, rmcilroy@chromium.org BUG= Review-Url: https://codereview.chromium.org/2473003004 Cr-Commit-Position: refs/heads/master@{#40810}
-
ahaas authored
The spec defines that indirect calls in WebAssembly code should cause a validation error if no function table exists. The CL contains the following changes: 1) Throw a validation error for indirect calls if the function table not exist. 2) Do not create TF nodes to throw a runtime error for indirect calls if the function table does not exist. 3) Fix existing unit tests by creating a dummy function table. 4) Add new a new test which tests that indirect calls without function table cause a validation error. R=rossberg@chromium.org CC=titzer@chromium.org TEST=unittests/AstDecoderTest.IndirectCallsWithoutTableCrash Review-Url: https://codereview.chromium.org/2484623002 Cr-Commit-Position: refs/heads/master@{#40802}
-
ahaas authored
The maximum memory size is a user-defined upper limit for the size of the memory of a WebAssembly instance. The actual limit is the minimum of the user-defined limit and the V8 limit. With this CL we allow the user-defined limit to be greater than the V8 limit, which is required by the spec. R=titzer@chromium.org CC=gdeepti@chromium.org TEST=unittests/WasmModuleVerifyTest.MaxMaximumMemorySize Review-Url: https://codereview.chromium.org/2484643002 Cr-Commit-Position: refs/heads/master@{#40801}
-
- 04 Nov, 2016 3 commits
-
-
jbroman authored
Compatible with the current (unshipped) Blink implementation. BUG=chromium:148757 Review-Url: https://codereview.chromium.org/2471923002 Cr-Commit-Position: refs/heads/master@{#40775}
-
predrag.rudic authored
Reason for the failure is that the test enumeration is 32-bit wide, whereas AtomicWord is 64-bit wide on 64-bit machines. On 64-big endian, this loads the random four bytes located after the 32-bit value that is tested. BUG= TEST=unittests/NoBarrierAtomicValue.Construction Review-Url: https://codereview.chromium.org/2464703003 Cr-Commit-Position: refs/heads/master@{#40767}
-
ivica.bogosavljevic authored
Port f07d2cdd Original commit message: A load instruction will implicitely clear the top 32 bits when writing to a W register. This patch avoids generating a `mov` instruction to zero-extend the result in this case. For example, this occurs in the generated code for dispatching to the next bytecode in the interpreter: kind = BYTECODE_HANDLER name = LdaZero compiler = turbofan Instructions (size = 36) 0x32e64c60 0 add x19, x19, #0x1 (1) 0x32e64c64 4 ldrb w0, [x20, x19] 0x32e64c68 8 mov w0, w0 ^^^^^^^^^^ 0x32e64c6c 12 lsl x0, x0, #3 0x32e64c70 16 ldr x1, [x21, x0] 0x32e64c74 20 movz x0, #0x0 0x32e64c78 24 br x1 Review-Url: https://codereview.chromium.org/2469253002 Cr-Commit-Position: refs/heads/master@{#40758}
-
- 03 Nov, 2016 3 commits
-
-
franzih authored
Use HeapConstant for string_iterator_map rather than loading it manually. This avoids unnecessary map checks. BUG= v8:3822,v8:5267 Review-Url: https://codereview.chromium.org/2479563003 Cr-Commit-Position: refs/heads/master@{#40741}
-
ulan authored
Revert of [heap] Add a guard for restarting the memory reducer after mark-compact. (patchset #1 id:1 of https://chromiumcodereview.appspot.com/2433933005/ ) Reason for revert: Speculative revert to see impact on crbug.com/659531 Original issue's description: > [heap] Add a guard for restarting the memory reducer after mark-compact. > > Currently it is possible to get into a cycle of > mark-compact -> memory reducer -> mark-compact -> memory reducer ... > where the memory reducer does not free memory. > > This patch ensures that the memory reducer restarts only if the > committed memory increased by sufficient amount after the last run. > > BUG= TBR=hpayer@chromium.org,davidroutier17@gmail.com # Not skipping CQ checks because original CL landed more than 1 days ago. BUG= Review-Url: https://codereview.chromium.org/2472053003 Cr-Commit-Position: refs/heads/master@{#40737}
-
heimbuef authored
Exchanged the ZoneList for a ZoneChunkList to avoid unnecessary growing. Review-Url: https://codereview.chromium.org/2468183004 Cr-Commit-Position: refs/heads/master@{#40736}
-
- 02 Nov, 2016 3 commits
-
-
danno authored
This is preparation for using TF to create builtins that handle variable number of arguments and have to remove these arguments dynamically from the stack upon return. The gist of the changes: - Added a second argument to the Return node which specifies the number of stack slots to pop upon return in addition to those specified by the Linkage of the compiled function. - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should handles all tail-call cases except where the return value type differs, this fallback was not really useful and in fact caused unexpected behavior with variable sized argument popping, since it wasn't possible to materialize a Return node with the right pop count from the TailCall without additional context. - Modified existing Return generation to pass a constant zero as the additional pop argument since the variable pop functionality LOG=N Review-Url: https://codereview.chromium.org/2446543002 Cr-Commit-Position: refs/heads/master@{#40699}
-
bmeurer authored
R=epertoso@chromium.org Review-Url: https://codereview.chromium.org/2223873002 Cr-Commit-Position: refs/heads/master@{#40695}
-
machenbach authored
Revert of [turbofan] Support variable size argument popping in TF-generated functions (patchset #13 id:240001 of https://codereview.chromium.org/2446543002/ ) Reason for revert: Seems to break arm64 sim debug and blocks roll: https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20debug/builds/3294 Original issue's description: > [turbofan] Support variable size argument removal in TF-generated functions > > This is preparation for using TF to create builtins that handle variable number of > arguments and have to remove these arguments dynamically from the stack upon > return. > > The gist of the changes: > - Added a second argument to the Return node which specifies the number of stack > slots to pop upon return in addition to those specified by the Linkage of the > compiled function. > - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should > handles all tail-call cases except where the return value type differs, this fallback > was not really useful and in fact caused unexpected behavior with variable > sized argument popping, since it wasn't possible to materialize a Return node > with the right pop count from the TailCall without additional context. > - Modified existing Return generation to pass a constant zero as the additional > pop argument since the variable pop functionality > > LOG=N TBR=bmeurer@chromium.org,mstarzinger@chromium.org,epertoso@chromium.org,danno@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. NOPRESUBMIT=true Review-Url: https://codereview.chromium.org/2473643002 Cr-Commit-Position: refs/heads/master@{#40691}
-
- 31 Oct, 2016 2 commits
-
-
danno authored
This is preparation for using TF to create builtins that handle variable number of arguments and have to remove these arguments dynamically from the stack upon return. The gist of the changes: - Added a second argument to the Return node which specifies the number of stack slots to pop upon return in addition to those specified by the Linkage of the compiled function. - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should handles all tail-call cases except where the return value type differs, this fallback was not really useful and in fact caused unexpected behavior with variable sized argument popping, since it wasn't possible to materialize a Return node with the right pop count from the TailCall without additional context. - Modified existing Return generation to pass a constant zero as the additional pop argument since the variable pop functionality LOG=N Review-Url: https://codereview.chromium.org/2446543002 Cr-Commit-Position: refs/heads/master@{#40678}
-
jbroman authored
While this seems like it should be true, the array buffer is not actually neutered until the end of cloning. This is so that, if an exception is thrown during serialization, the original array buffer is not left neutered. As a result, Blink will not have neutered the buffer. This fixes some DCHECK failures during layout tests. BUG=chromium:148757 Review-Url: https://codereview.chromium.org/2466563002 Cr-Commit-Position: refs/heads/master@{#40675}
-
- 29 Oct, 2016 1 commit
-
-
titzer authored
This CL implements basic table import functionality. Missing: growing of tables (WebAssembly.Grow) doesn't change dispatch tables Missing: allowing larger table imports than minimum size R=rossberg@chromium.org,bradnelson@chromium.org BUG=v8:5507 Review-Url: https://codereview.chromium.org/2454503005 Cr-Commit-Position: refs/heads/master@{#40661}
-
- 28 Oct, 2016 3 commits
-
-
machenbach authored
Revert of [wasm] Support for restricted table imports. (patchset #7 id:120001 of https://codereview.chromium.org/2454503005/ ) Reason for revert: GC stress failures: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/8857 Original issue's description: > [wasm] Support for restricted table imports. > > This CL implements basic table import functionality. > > Missing: growing of tables (WebAssembly.Grow) doesn't change dispatch tables > Missing: allowing larger table imports than minimum size > > R=rossberg@chromium.org,bradnelson@chromium.org > BUG=v8:5507 TBR=bradnelson@chromium.org,rossberg@chromium.org,titzer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5507 Review-Url: https://codereview.chromium.org/2456193006 Cr-Commit-Position: refs/heads/master@{#40656}
-
titzer authored
This CL implements basic table import functionality. Missing: growing of tables (WebAssembly.Grow) doesn't change dispatch tables Missing: allowing larger table imports than minimum size R=rossberg@chromium.org,bradnelson@chromium.org BUG=v8:5507 Review-Url: https://codereview.chromium.org/2454503005 Cr-Commit-Position: refs/heads/master@{#40652}
-
leszeks authored
The majority of context slot accesses are to the local context (current context register and depth 0), so this adds bytecodes to optimise for that case. This cuts down bytecode size by roughly 1% (measured on Octane and Top25). Review-Url: https://codereview.chromium.org/2459513002 Cr-Commit-Position: refs/heads/master@{#40641}
-
- 27 Oct, 2016 1 commit
-
-
leszeks authored
This is a new bytecode which behaves (for now) exactly like Call, except that in turbofan graph building we can set the ConvertReceiverMode to NotNullOrUndefined. I observe a 1% improvement on Box2D, I'd expect a similar improvement on other OOP heavy code. Review-Url: https://codereview.chromium.org/2450243002 Cr-Commit-Position: refs/heads/master@{#40610}
-
- 26 Oct, 2016 1 commit
-
-
heimbuef authored
Since ZoneLists are essentially non-standard ZoneVectors and have a bad growing behaviour (ZoneList-allocations make up ~50% of website parse zone memory) we should stop using them. The zone-containers are merely a clean-up, with none of them actually better suited to be used with zones. This new datastructure allows most operations of a LinkedList ( except pop_first and insertAt/removeAt) but uses about the same memory as a well-initialized ZoneVector/ZoneList (<3% overhead with reasonably large lists). It also never attempts to free memory again (which would not work in zones anyway). The ZoneChunkList is essentially a doubly-linked-list of arrays of variable size. Some test-results where I tried storing 16k pointers in different list types (lists themselves also zone-allocated): List type Zone memory used Time taken ----------------------------------------------------------------------- Zone array (for comparison) 131072 B Ideally initialized ZoneList 131088 B 0.062ms ChunkZoneList 134744 B 0.052ms <--new thing ZoneDeque 141744 B ZoneLinkedList 393264 B Initially empty ZoneList 524168 B 0.171ms <--right now ChunkZoneList only push_front 524320 B Review-Url: https://codereview.chromium.org/2449383002 Cr-Commit-Position: refs/heads/master@{#40602}
-