- 21 Mar, 2016 1 commit
-
-
oth authored
This change introduces wide prefix bytecodes to support wide (16-bit) and extra-wide (32-bit) operands. It retires the previous wide-bytecodes and reduces the number of operand types. Operands are now either scalable or fixed size. Scalable operands increase in width when a bytecode is prefixed with wide or extra-wide. The bytecode handler table is extended to 256*3 entries. The first 256 entries are used for bytecodes with 8-bit operands, the second 256 entries are used for bytecodes with operands that scale to 16-bits, and the third group of 256 entries are used for bytecodes with operands that scale to 32-bits. LOG=N BUG=v8:4747,v8:4280 Review URL: https://codereview.chromium.org/1783483002 Cr-Commit-Position: refs/heads/master@{#34955}
-
- 16 Mar, 2016 1 commit
-
-
mstarzinger authored
This introduces {optimized_out} as another Oddball kind to be used by optimizing compilers when values are being optimized away. The aim is providing visibility when this value leaks into the application domain. Currently this will lead to {undefined} values appearing which then silently propagate through the application. The special oddball can be identified easily as a bug and also the debugger can treat it specially when needed. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1810483002 Cr-Commit-Position: refs/heads/master@{#34817}
-
- 15 Mar, 2016 4 commits
-
-
adamk authored
This part of Scope has existed since V8's initial check in, but from what I can tell it's not required to implement "with". The only tests that depend upon it are tests of the debugger and the Scope mirrors, but the resulting test behavior after removing the bit still seems perfectly reasonable to me. In fact, with the included fix for scope name collection, the scope mirror is actually improved with this change. As a bi-product, this fixes the attached bug, about the contains_with bit having inconsistent values in some arrow function compilation scenarios. BUG=chromium:592353 LOG=n CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1804783002 Cr-Commit-Position: refs/heads/master@{#34802}
-
jyan authored
R=danno@chromium.org,jkummerow@chromium.org,jochen@chromium.org,joransiu@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com BUG= Review URL: https://codereview.chromium.org/1802343002 Cr-Commit-Position: refs/heads/master@{#34789}
-
jyan authored
Upstream S390 platform specific code to latest lkgr from the past 2 weeks. R=danno@chromium.org,jkummerow@chromium.org,jochen@chromium.org,joransiu@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com BUG= Review URL: https://codereview.chromium.org/1799893002 Cr-Commit-Position: refs/heads/master@{#34787}
-
yangguo authored
R=rmcilroy@chromium.org, vogelheim@chromium.org BUG=v8:4690 LOG=N Review URL: https://codereview.chromium.org/1802903002 Cr-Commit-Position: refs/heads/master@{#34781}
-
- 14 Mar, 2016 1 commit
-
-
hpayer authored
When black allocation is active, all objects allocated in old space are allocated black. Important: With that change, you cannot assume anymore that new objects are white right after their allocation. Currently, black allocation is enabled when incremental marking is started. This feature can be turned off via flag: --noblack-allocation BUG=chromium:561449 LOG=n Review URL: https://codereview.chromium.org/1420423009 Cr-Commit-Position: refs/heads/master@{#34743}
-
- 10 Mar, 2016 2 commits
-
-
kozyatinskiy authored
This method was added as part of DevTools experiment. Experiment UI was removed in https://codereview.chromium.org/201293007 2 years ago. Experiment backend was removed in https://codereview.chromium.org/1785533002/. R=yangguo@chromium.org LOG=N Review URL: https://codereview.chromium.org/1770383006 Cr-Commit-Position: refs/heads/master@{#34688}
-
zhengxing.li authored
port 9dcd0857 (r34571) original commit message: Before this CL, various code stubs used different techniques for marking their frames to enable stack-crawling and other access to data in the frame. All of them were based on a abuse of the "standard" frame representation, e.g. storing the a context pointer immediately below the frame's fp, and a function pointer after that. Although functional, this approach tends to make stubs and builtins do an awkward, unnecessary dance to appear like standard frames, even if they have nothing to do with JavaScript execution. This CL attempts to improve this by: * Ensuring that there are only two fundamentally different types of frames, a "standard" frame and a "typed" frame. Standard frames, as before, contain both a context and function pointer. Typed frames contain only a minimum of a smi marker in the position immediately below the fp where the context is in standard frames. * Only interpreted, full codegen, and optimized Crankshaft and TurboFan JavaScript frames use the "standard" format. All other frames use the type frame format with an explicit marker. * Typed frames can contain one or more values below the type marker. There is new magic macro machinery in frames.h that simplifies defining the offsets of these fields in typed frames. * A new flag in the CallDescriptor enables specifying whether a frame is a standard frame or a typed frame. Secondary register location spilling is now only enabled for standard frames. * A zillion places in the code have been updated to deal with the fact that most code stubs and internal frames use the typed frame format. This includes changes in the deoptimizer, debugger, and liveedit. * StandardFrameConstants::kMarkerOffset is deprecated, (CommonFrameConstants::kContextOrFrameTypeOffset and StandardFrameConstants::kFrameOffset are now used in its stead). BUG= Review URL: https://codereview.chromium.org/1774353002 Cr-Commit-Position: refs/heads/master@{#34648}
-
- 09 Mar, 2016 1 commit
-
-
mbrandy authored
Port 9dcd0857 Original commit message: Before this CL, various code stubs used different techniques for marking their frames to enable stack-crawling and other access to data in the frame. All of them were based on a abuse of the "standard" frame representation, e.g. storing the a context pointer immediately below the frame's fp, and a function pointer after that. Although functional, this approach tends to make stubs and builtins do an awkward, unnecessary dance to appear like standard frames, even if they have nothing to do with JavaScript execution. This CL attempts to improve this by: * Ensuring that there are only two fundamentally different types of frames, a "standard" frame and a "typed" frame. Standard frames, as before, contain both a context and function pointer. Typed frames contain only a minimum of a smi marker in the position immediately below the fp where the context is in standard frames. * Only interpreted, full codegen, and optimized Crankshaft and TurboFan JavaScript frames use the "standard" format. All other frames use the type frame format with an explicit marker. * Typed frames can contain one or more values below the type marker. There is new magic macro machinery in frames.h that simplifies defining the offsets of these fields in typed frames. * A new flag in the CallDescriptor enables specifying whether a frame is a standard frame or a typed frame. Secondary register location spilling is now only enabled for standard frames. * A zillion places in the code have been updated to deal with the fact that most code stubs and internal frames use the typed frame format. This includes changes in the deoptimizer, debugger, and liveedit. * StandardFrameConstants::kMarkerOffset is deprecated, (CommonFrameConstants::kContextOrFrameTypeOffset and StandardFrameConstants::kFrameOffset are now used in its stead). R=danno@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com BUG= Review URL: https://codereview.chromium.org/1778713002 Cr-Commit-Position: refs/heads/master@{#34643}
-
- 08 Mar, 2016 2 commits
-
-
verwaest authored
Also move GetProperty with string-name to JSReceiver BUG= Review URL: https://codereview.chromium.org/1775973002 Cr-Commit-Position: refs/heads/master@{#34596}
-
danno authored
Before this CL, various code stubs used different techniques for marking their frames to enable stack-crawling and other access to data in the frame. All of them were based on a abuse of the "standard" frame representation, e.g. storing the a context pointer immediately below the frame's fp, and a function pointer after that. Although functional, this approach tends to make stubs and builtins do an awkward, unnecessary dance to appear like standard frames, even if they have nothing to do with JavaScript execution. This CL attempts to improve this by: * Ensuring that there are only two fundamentally different types of frames, a "standard" frame and a "typed" frame. Standard frames, as before, contain both a context and function pointer. Typed frames contain only a minimum of a smi marker in the position immediately below the fp where the context is in standard frames. * Only interpreted, full codegen, and optimized Crankshaft and TurboFan JavaScript frames use the "standard" format. All other frames use the type frame format with an explicit marker. * Typed frames can contain one or more values below the type marker. There is new magic macro machinery in frames.h that simplifies defining the offsets of these fields in typed frames. * A new flag in the CallDescriptor enables specifying whether a frame is a standard frame or a typed frame. Secondary register location spilling is now only enabled for standard frames. * A zillion places in the code have been updated to deal with the fact that most code stubs and internal frames use the typed frame format. This includes changes in the deoptimizer, debugger, and liveedit. * StandardFrameConstants::kMarkerOffset is deprecated, (CommonFrameConstants::kContextOrFrameTypeOffset and StandardFrameConstants::kFrameOffset are now used in its stead). LOG=N Review URL: https://codereview.chromium.org/1696043002 Cr-Commit-Position: refs/heads/master@{#34571}
-
- 07 Mar, 2016 1 commit
-
-
mstarzinger authored
The enum in question is (and should) no longer be used outside of the compiler API and hence is being moved back into the Compiler class. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1762323002 Cr-Commit-Position: refs/heads/master@{#34526}
-
- 02 Mar, 2016 2 commits
-
-
yangguo authored
The function literal consists of a list of statements. Each statement is associated with a statement position including break location. The only exception to this rule is when the function immediately throws if scope resolution found an illegal redeclaration. Make sure that we add a break location for this case as well. The debugger relies on this. R=bmeurer@chromium.org, vogelheim@chromium.org BUG=v8:4690 LOG=N Review URL: https://codereview.chromium.org/1759603002 Cr-Commit-Position: refs/heads/master@{#34422}
-
sergeyv authored
blink-side cl: https://codereview.chromium.org/1653053002/ BUG=327092 LOG=Y Review URL: https://codereview.chromium.org/1653083002 Cr-Commit-Position: refs/heads/master@{#34417}
-
- 01 Mar, 2016 2 commits
-
-
joransiu authored
Initial implementation of S390 specific debug and IC functions. R=danno@chromium.org,jkummerow@chromium.org,jochen@chromium.org,jyan@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com BUG= Review URL: https://codereview.chromium.org/1743263003 Cr-Commit-Position: refs/heads/master@{#34400}
-
yangguo authored
We used to emit debug break location on block entry. This cannot be ported to the interpreted as we do not emit bytecode for block entry. This made no sense to begin with though, but accidentally added break locations for var declarations. With this change, the debugger no longer breaks at var declarations without initialization. This is in accordance with the fact that the interpreter does not emit bytecode for uninitialized var declarations. Also fix the bytecode to match full-codegen's behavior wrt return positions: - there is a break location before the return statement, with the source position of the return statement. - right before the actual return, there is another break location. The source position points to the end of the function. R=rmcilroy@chromium.org, vogelheim@chromium.org TBR=rossberg@chromium.org BUG=v8:4690 LOG=N Review URL: https://codereview.chromium.org/1744123003 Cr-Commit-Position: refs/heads/master@{#34388}
-
- 25 Feb, 2016 3 commits
-
-
yangguo authored
We otherwise would print the \n from the last line. R=vogelheim@chromium.org Review URL: https://codereview.chromium.org/1738723003 Cr-Commit-Position: refs/heads/master@{#34291}
-
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}
-
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 3 commits
-
-
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}
-
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}
-
- 23 Feb, 2016 1 commit
-
-
yangguo authored
R=mcilroy@chromium.org BUG=v8:4690 LOG=N Review URL: https://codereview.chromium.org/1723803004 Cr-Commit-Position: refs/heads/master@{#34210}
-
- 22 Feb, 2016 1 commit
-
-
yangguo authored
R=mstarzinger@chromium.org, rmcilroy@chromium.org BUG=v8:4690 LOG=N Review URL: https://codereview.chromium.org/1703453002 Cr-Commit-Position: refs/heads/master@{#34190}
-
- 17 Feb, 2016 1 commit
-
-
mstarzinger authored
R=rossberg@chromium.org,bmeurer@chromium.org,verwaest@chromium.org BUG=v8:3956 LOG=n Review URL: https://codereview.chromium.org/1700993002 Cr-Commit-Position: refs/heads/master@{#34067}
-
- 15 Feb, 2016 1 commit
-
-
yangguo authored
R=jkummerow@chromium.org BUG=v8:4757 LOG=N Review URL: https://codereview.chromium.org/1700693002 Cr-Commit-Position: refs/heads/master@{#33983}
-
- 12 Feb, 2016 3 commits
-
-
kozyatinskiy authored
This behavior was changed in https://codereview.chromium.org/1402913002. It's pretty usefull to have ability to disable debugger statement for our users. BUG=chromium:583515 LOG=N R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1690173002 Cr-Commit-Position: refs/heads/master@{#33960}
-
bmeurer authored
There are only two uses of %_ObjectEquals left, which should actually use strict equality instead, so there's no need to keep this special logic at all. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1692193002 Cr-Commit-Position: refs/heads/master@{#33948}
-
jarin authored
TBR=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/1695433002 Cr-Commit-Position: refs/heads/master@{#33926}
-
- 11 Feb, 2016 2 commits
-
-
yangguo authored
R=rmcilroy@chromium.org, vogelheim@chromium.org BUG=v8:4690 LOG=N Review URL: https://codereview.chromium.org/1682853004 Cr-Commit-Position: refs/heads/master@{#33904}
-
bmeurer authored
There are a bunch of places in our builtins where we use %_Arguments and %_ArgumentsLength for no good reason, as arguments object and/or rest parameter is as good and performant in these cases. Now the only uses of %_Arguments and %_ArgumentsLength left are in string.js, which requires dedicated investigation. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_dbg R=yangguo@chromium.org Committed: https://crrev.com/2160429fd458e3c095475e718c97f77ac90d906f Cr-Commit-Position: refs/heads/master@{#33834} Review URL: https://codereview.chromium.org/1678953004 Cr-Commit-Position: refs/heads/master@{#33881}
-
- 10 Feb, 2016 1 commit
-
-
yangguo authored
The break location heavily relies on relocation info. This change abstracts that away. Currently there is only one implementation for this interface, for JIT code. Future changes will introduce an implementation to iterate bytecode arrays. R=rmcilroy@chromium.org, vogelheim@chromium.org BUG=v8:4690 LOG=N Review URL: https://codereview.chromium.org/1682853003 Cr-Commit-Position: refs/heads/master@{#33869}
-
- 08 Feb, 2016 1 commit
-
-
verwaest authored
Generally we only care whether the next object is a hidden prototype. It's simpler to check whether the current object has a hidden prototype instead of walking to the next prototype and checking its map. BUG= Review URL: https://codereview.chromium.org/1675223002 Cr-Commit-Position: refs/heads/master@{#33816}
-
- 05 Feb, 2016 3 commits
-
-
mstarzinger authored
This makes the field in question more generic by renaming it from the previous "depth" to "data". Pure refactoring, no function change. R=rmcilroy@chromium.org,yangguo@chromium.org Review URL: https://codereview.chromium.org/1670983003 Cr-Commit-Position: refs/heads/master@{#33779}
-
zhengxing.li authored
The CL 33579 (https://codereview.chromium.org/1618343002) use code offsets instead of raw PC where possible. But the offset maybe come from an optimized frame, not the un-optimized frame that FromCodeOffset and BreakIndexFromCodeOffset function expect. So The offset from optimized frame can't be used in FromCodeOffset and BreakIndexFromCodeOffset function. This CL use the frame summary to find the corresponding code offset in unoptimized code according to Yang's suggestion. Review URL: https://codereview.chromium.org/1663113002 Cr-Commit-Position: refs/heads/master@{#33778}
-
mvstanton authored
Revert of Type Feedback Vector lives in the closure (patchset #2 id:40001 of https://codereview.chromium.org/1668103002/ ) Reason for revert: Must revert for now due to chromium api natives issues. Original issue's description: > Type Feedback Vector lives in the closure > > (RELAND: the problem before was a missing write barrier for adding the code > entry to the new closure. It's been addressed with a new macro instruction > and test. The only change to this CL is the addition of two calls to > __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.) > > We get less "pollution" of type feedback if we have one vector per native > context, rather than one for the whole system. This CL moves the vector > appropriately. > > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The > vector actually lives in the first slot of the literals array (indeed there is > great commonality between those arrays, they can be thought of as the same > thing). So we make greater effort to ensure there is a valid literals array > after compilation. > > This meant, for performance reasons, that we needed to extend > FastNewClosureStub to support creating closures with literals. And ultimately, > it drove us to move the optimized code map lookup out of FastNewClosureStub > and into the compile lazy builtin. > > The heap change is trivial so I TBR Hannes for it... > Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too. > And Benedikt reviewed it as well. > > TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org > > BUG= > > Committed: https://crrev.com/bb31db3ad6de16f86a61f6c7bbfd3274e3d957b5 > Cr-Commit-Position: refs/heads/master@{#33741} TBR=bmeurer@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/1670813005 Cr-Commit-Position: refs/heads/master@{#33766}
-
- 04 Feb, 2016 2 commits
-
-
cbruni authored
BUG=v8:4724, v8:1543 LOG=N Review URL: https://codereview.chromium.org/1668853002 Cr-Commit-Position: refs/heads/master@{#33747}
-
mvstanton authored
(RELAND: the problem before was a missing write barrier for adding the code entry to the new closure. It's been addressed with a new macro instruction and test. The only change to this CL is the addition of two calls to __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.) We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The vector actually lives in the first slot of the literals array (indeed there is great commonality between those arrays, they can be thought of as the same thing). So we make greater effort to ensure there is a valid literals array after compilation. This meant, for performance reasons, that we needed to extend FastNewClosureStub to support creating closures with literals. And ultimately, it drove us to move the optimized code map lookup out of FastNewClosureStub and into the compile lazy builtin. The heap change is trivial so I TBR Hannes for it... Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too. And Benedikt reviewed it as well. TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1668103002 Cr-Commit-Position: refs/heads/master@{#33741}
-
- 01 Feb, 2016 1 commit
-
-
yangguo authored
In the debugger we are interested in getting the context for the current frame, which is usually a function context. To do that, we used to call Context::declaration_context, which may also return a block context. This is wrong and can lead to crashes. Instead, we now use a newly introduced Context::closure_context, which skips block contexts. This works fine for the debugger, since we have other means to find and materialize block contexts. R=rossberg@chromium.org BUG=chromium:582051 LOG=N Review URL: https://codereview.chromium.org/1648263002 Cr-Commit-Position: refs/heads/master@{#33627}
-