- 28 Mar, 2014 2 commits
-
-
jochen@chromium.org authored
Reason for revert: New test crashes on nosnap bots > See https://github.com/joyent/node/issues/7120 > > R=jarin@chromium.org > BUG= > > Review URL: https://codereview.chromium.org/178073002 > > Patch from Alexis Campailla <alexis@janeasystems.com>. TBR=jarin@chromium.org BUG=none LOG=n Review URL: https://codereview.chromium.org/217013002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20337 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
jarin@chromium.org authored
See https://github.com/joyent/node/issues/7120 R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/178073002 Patch from Alexis Campailla <alexis@janeasystems.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Mar, 2014 4 commits
-
-
rossberg@chromium.org authored
R=mstarzinger@chromium.org BUG= LOG=Y Review URL: https://codereview.chromium.org/196103004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20209 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
R=dcarney@chromium.org Review URL: https://codereview.chromium.org/209903003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20184 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
This reverts r20179. TBR=svenpanne@chromium.org Review URL: https://codereview.chromium.org/201573007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20183 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
R=dcarney@chromium.org BUG=v8:3060 LOG=Y Review URL: https://codereview.chromium.org/208263002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Mar, 2014 1 commit
-
-
jochen@chromium.org authored
BUG=354405 R=ulan@chromium.org, rodolph.perfetta@arm.com LOG=y Review URL: https://codereview.chromium.org/207823003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Mar, 2014 3 commits
-
-
yangguo@chromium.org authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/199583007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20119 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
This reverts r20112. TBR=yangguo@chromium.org Review URL: https://codereview.chromium.org/206383002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20114 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
R=bmeurer@chromium.org BUG=349329 LOG=Y Review URL: https://codereview.chromium.org/199853004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Mar, 2014 1 commit
-
-
yangguo@chromium.org authored
R=jochen@chromium.org Review URL: https://codereview.chromium.org/198253004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Mar, 2014 1 commit
-
-
yangguo@chromium.org authored
R=ishell@chromium.org Review URL: https://codereview.chromium.org/200363002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20028 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Mar, 2014 2 commits
-
-
yangguo@chromium.org authored
R=ishell@chromium.org Review URL: https://codereview.chromium.org/196983011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19937 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/200303002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 Mar, 2014 2 commits
-
-
yangguo@chromium.org authored
Contributed by fmeawad@chromium.org R=yangguo@chromium.org Review URL: https://codereview.chromium.org/186163002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19745 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
Also use temporary wrapper functions where possible to mark progress. R=ishell@chromium.org Review URL: https://codereview.chromium.org/172503002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19743 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Feb, 2014 1 commit
-
-
jochen@chromium.org authored
BUG=none R=svenpanne@chromium.org, ulan@chromium.org LOG=n Review URL: https://codereview.chromium.org/180243010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19598 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 13 Feb, 2014 1 commit
-
-
vegorov@chromium.org authored
Instead of tracking simple absolute offset from the start of the script like other places do, track a pair of (inlining id, offset from the start of inlined function). This enables us to pinpoint with inlining path an instruction came from. Previously in multi-script environments we emitted positions that made very little sense because inside a single optimized function they would point to different scripts without a way to distinguish them. Start dumping the source of every inlined function to make possible IR viewing tools with integrated source views as there was previously no way to acquire this information from IR dumps. We also dump source position at which each inlining occured. Tracked positions are written into hydrogen.cfg as pos:<inlining-id>_<offset>. Flag --emit-opt-code-positions is renamed by this change into --hydrogen-track-positions to better convey it's meaning. In addition this change assigned global unique identifier to each optimization performed inside isolate. This allows to precisely match compilation artifacts (e.g. IR and disassembly) and deoptimizations. BUG= R=yangguo@chromium.org Review URL: https://codereview.chromium.org/140683011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Feb, 2014 2 commits
-
-
rafaelw@chromium.org authored
This patch generalizes Object.observe callbacks and promise resolution into a FIFO queue called a "microtask queue". It also exposes new V8 API which exposes the microtask queue to the embedder. In particular, it allows the embedder to -schedule a microtask (EnqueueExternalMicrotask) -run the microtask queue (RunMicrotasks) -control whether the microtask queue is run automatically within V8 when the last script exits (SetAutorunMicrotasks). R=dcarney@chromium.org, rossberg@chromium.org, dcarney, rossberg, svenpanne BUG= Review URL: https://codereview.chromium.org/154283002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ulan@chromium.org authored
BUG=v8:3113 LOG=Y R=jochen@chromium.org, rmcilroy@chromium.org, rodolph.perfetta@arm.com Review URL: https://codereview.chromium.org/148293020 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Feb, 2014 1 commit
-
-
yangguo@chromium.org authored
R=jarin@chromium.org Review URL: https://codereview.chromium.org/137213009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19285 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Feb, 2014 1 commit
-
-
yangguo@chromium.org authored
To avoid race with e.g. StackGuard::RequestInstallCode called from another thread when both access postpone_interrupts_nesting_. R=mvstanton@chromium.org BUG=290964 LOG=N Review URL: https://codereview.chromium.org/138833006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jan, 2014 2 commits
-
-
dcarney@chromium.org authored
R=verwaest@chromium.org BUG= Review URL: https://codereview.chromium.org/148333003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18946 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
jarin@chromium.org authored
version is passing all the existing test + a bunch of new tests (packaged in the change list, too). The patch extends the SlotRef object to describe captured and duplicated objects. Since the SlotRefs are not independent of each other anymore, there is a new SlotRefValueBuilder class that stores the SlotRefs and later materializes the objects from the SlotRefs. Note that unlike the previous implementation of SlotRefs, we now build the SlotRef entries for the entire frame, not just the particular function. This is because duplicate objects might refer to previous captured objects (that might live inside other inlined function's part of the frame). We also need to store the materialized objects between other potential invocations of the same arguments object so that we materialize each captured object at most once. The materialized objects of frames live in the new MaterielizedObjectStore object (contained in Isolate), indexed by the frame's FP address. Each argument materialization (and deoptimization) tries to lookup its captured objects in the store before building new ones. Deoptimization also removes the materialized objects from the store. We also schedule a lazy deopt to be sure that we always get rid of the materialized objects and that the optmized function adopts the materialized objects (instead of happily computing with its captured representations). Concerns: - Is the FP address the right key for a frame? (Note that deoptimizer's representation of frame is different from the argument object materializer's one - it is not easy to find common ground.) - Performance is suboptimal in several places, but a quick local run of benchmarks does not seem to show a perf hit. Examples of possible improvements: smarter generation of SlotRefs (build other functions' SlotRefs only for captured objects and only if necessary), smarter lookup of stored materialized objects. - Ideally, we would like to share the code for argument materialization with deoptimizer's materializer. However, the supporting data structures (mainly the frame descriptor) are quite different in each case, so it looks more like a separate project. Thanks for any feedback. R=danno@chromium.org, mstarzinger@chromium.org LOG=N BUG= Committed: https://code.google.com/p/v8/source/detail?r=18918 Review URL: https://codereview.chromium.org/103243005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18936 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Jan, 2014 2 commits
-
-
jarin@chromium.org authored
R=jarin@chromium.org Review URL: https://codereview.chromium.org/130803009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18923 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
jarin@chromium.org authored
mostly to make sure that it is going in the right direction. The current version is passing all the existing test + a bunch of new tests (packaged in the change list, too). The patch extends the SlotRef object to describe captured and duplicated objects. Since the SlotRefs are not independent of each other anymore, there is a new SlotRefValueBuilder class that stores the SlotRefs and later materializes the objects from the SlotRefs. Note that unlike the previous implementation of SlotRefs, we now build the SlotRef entries for the entire frame, not just the particular function. This is because duplicate objects might refer to previous captured objects (that might live inside other inlined function's part of the frame). We also need to store the materialized objects between other potential invocations of the same arguments object so that we materialize each captured object at most once. The materialized objects of frames live in the new MaterielizedObjectStore object (contained in Isolate), indexed by the frame's FP address. Each argument materialization (and deoptimization) tries to lookup its captured objects in the store before building new ones. Deoptimization also removes the materialized objects from the store. We also schedule a lazy deopt to be sure that we always get rid of the materialized objects and that the optmized function adopts the materialized objects (instead of happily computing with its captured representations). Concerns: - Is there a simpler/more correct way to store the already-materialized objects? (At the moment there is a custom root reference to JSArray containing frames' FixedArrays with their captured objects.) - Is the FP address the right key for a frame? (Note that deoptimizer's representation of frame is different from the argument object materializer's one - it is not easy to find common ground.) - Performance is suboptimal in several places, but a quick local run of benchmarks does not seem to show a perf hit. Examples of possible improvements: smarter generation of SlotRefs (build other functions' SlotRefs only for captured objects and only if necessary), smarter lookup of stored materialized objects. - Ideally, we would like to share the code for argument materialization with deoptimizer's materializer. However, the supporting data structures (mainly the frame descriptor) are quite different in each case, so it looks more like a separate project. Thanks for any feedback. R=mstarzinger@chromium.org, danno@chromium.org LOG=N BUG= Review URL: https://codereview.chromium.org/103243005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Jan, 2014 2 commits
-
-
verwaest@chromium.org authored
R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/138443012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18814 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
jkummerow@chromium.org authored
This reverts: r18749 "Reland (and fix) "Add hydrogen support for ArrayPop, and remove the handwritten call stubs."", r18790 "Remove ArrayPush from the custom call generators, and instead call directly to the handler in crankshaft.", and r18798 "MIPS: Remove ArrayPush from the custom call generators, and instead call directly to the handler in crankshaft." For causing crashes on Canary. BUG=chromium:337686 LOG=N R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/146003006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18805 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Jan, 2014 1 commit
-
-
verwaest@chromium.org authored
Remove ArrayPush from the custom call generators, and instead call directly to the handler in crankshaft. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/137693003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18790 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Jan, 2014 1 commit
-
-
svenpanne@chromium.org authored
ExtensionConfiguration is just a simple container for extension names (in a perfect world we would use vector<string> and range-based for loops), and HandleScopeData was in the totally wrong place. Some additional cleanup on the way, e.g. using the null pattern behind our external API. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/139393002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18632 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Jan, 2014 1 commit
-
-
jarin@chromium.org authored
call machinery. The change replaces CallNamed, CallKeyed, CallConstantFunction and CallKnownGlobal hydrogen instructions with two new instructions with a more lower level semantics: 1. CallJSFunction for direct calls of JSFunction objects (no argument adaptation) 2. CallWithDescriptor for calls of a given Code object according to the supplied calling convention. Details: CallJSFunction should be straightforward, the main difference from the existing InvokeFunction instruction is the absence of argument adaptor handling. (As a next step, we will replace InvokeFunction with an equivalent hydrogen code.) For CallWithDescriptor, the calling conventions are represented by a tweaked version of CallStubInterfaceDescriptor. In addition to the parameter-register mapping, we also define parameter-representation mapping there. The CallWithDescriptor instruction has variable number of parameters now - this required some simple tweaks in Lithium, which assumed fixed number of arguments in some places. The calling conventions used in the calls are initialized in the CallDescriptors class (code-stubs.h, <arch>/code-stubs-<arch>.cc), and they live in a new table in the Isolate class. I should say I am not quite sure about Representation::Integer32() representation for some of the params of ArgumentAdaptorCall - it is not clear to me wether the params could not end up on the stack and thus confuse the GC. The change also includes an earlier small change to argument adaptor (https://codereview.chromium.org/98463007) that avoids passing a naked pointer to the code entry as a parameter. I am sorry for packaging that with an already biggish change. Performance implications: Locally, I see a small regression (.2% or so). It is hard to say where exactly it comes from, but I do see inefficient call sequences to the adaptor trampoline. For example: ;;; <@78,#24> constant-t bf85aa515a mov edi,0x5a51aa85 ;; debug: position 29 ;;; <@72,#53> load-named-field 8b7717 mov esi,[edi+0x17] ;; debug: position 195 ;;; <@80,#51> constant-s b902000000 mov ecx,0x2 ;; debug: position 195 ;;; <@81,#51> gap 894df0 mov [ebp+0xf0],ecx ;;; <@82,#103> constant-i bb01000000 mov ebx,0x1 ;;; <@84,#102> constant-i b902000000 mov ecx,0x2 ;;; <@85,#102> gap 89d8 mov eax,ebx 89cb mov ebx,ecx 8b4df0 mov ecx,[ebp+0xf0] ;;; <@86,#58> call-with-descriptor e8ef57fcff call ArgumentsAdaptorTrampoline (0x2d80e6e0) ;; code: BUILTIN Note the silly handling of ecx; the hydrogen for this code is: 0 4 s27 Constant 1 range:1_1 <|@ 0 3 t30 Constant 0x5bc1aa85 <JS Function xyz (SharedFunctionInfo 0x5bc1a919)> type:object <|@ 0 1 t36 LoadNamedField t30.[in-object]@24 <|@ 0 1 t38 Constant 0x2300e6a1 <Code> <|@ 0 1 i102 Constant 2 range:2_2 <|@ 0 1 i103 Constant 1 range:1_1 <|@ 0 2 t41 CallWithDescriptor t38 t30 t36 s27 i103 i102 #2 changes[*] <|@ BUG= R=verwaest@chromium.org, danno@chromium.org Review URL: https://codereview.chromium.org/104663004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Dec, 2013 1 commit
-
-
jochen@chromium.org authored
We don't use the worker pool yet, however, there are tests. Yay. The next step is to use the worker pool for parallel sweeping. I've also started to move the platform related files into a sub directory. The goal is to eventually build all the platform stuff as a separate library which is used by d8 and cctest (and other embedders that wish to use the default implementation) but not by chromium. BUG=v8:3015 R=hpayer@chromium.org, svenpanne@chromium.org LOG=n Review URL: https://codereview.chromium.org/104583003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Dec, 2013 1 commit
-
-
svenpanne@chromium.org authored
It was only used for Math.log, and even then only in full code and in %_MathLog. For crankshafted code, Intel already used the FP operations directly, while the ARM/MIPS ports were a bit lazy and simply called the stub. The latter directly call the C library now without any cache. It would be possible to directly generate machine code if somebody has the time, from what I've seen out in the wild it should be only about a dozen instructions. LOG=y R=yangguo@chromium.org Review URL: https://codereview.chromium.org/113343003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Dec, 2013 1 commit
-
-
mstarzinger@chromium.org authored
R=yangguo@chromium.org BUG=v8:3029 TEST=mjsunit/regress/regress-3029 LOG=N Review URL: https://codereview.chromium.org/96773002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Nov, 2013 1 commit
-
-
rossberg@chromium.org authored
Based on prototype at https://github.com/rossberg-chromium/js-promise which informed the latest spec draft version at https://github.com/domenic/promises-unwrapping/blob/master/README.md Activated by --harmony-promises. Feature complete with respect to the draft spec, plus the addition of .when and .deferred methods. Final naming and other possible deviations from the current draft will hopefully be resolved soon after the next TC39 meeting. This CL also generalises the Object.observe delivery loop into a simplistic microtask loop. Currently, all observer events are delivered before invoking any promise handler in a single fixpoint iteration. It's not clear yet what the final semantics is supposed to be (should there be a global event ordering?), but it will probably require a more thorough event loop abstraction inside V8 once we get there. R=dslomov@chromium.org, yhirano@chromium.org BUG= Review URL: https://codereview.chromium.org/64223010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Nov, 2013 2 commits
-
-
jochen@chromium.org authored
BUG=v8:3004 R=svenpanne@chromium.org, yangguo@chromium.org LOG=y Review URL: https://codereview.chromium.org/62283010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17967 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
R=verwaest@chromium.org Review URL: https://codereview.chromium.org/77723007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Nov, 2013 3 commits
-
-
jochen@chromium.org authored
This will allow for using gin and blink bindings in the same process. Over r17907, I changed the order of fields in Isolate to be stable across different platforms, since the ABI defined packing is not the same on all targets, and I initialize the embedder data field in Isolate. BUG=317398 R=svenpanne@chromium.org, dcarney@chromium.org LOG=n Review URL: https://codereview.chromium.org/78453002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
It results in a lot of dead code, and Isolate::PrintStack itself crashes most of the time when something went wrong earlier. Furthermore, we have plans do get better information into the minidump, anyway. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/78003002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
jochen@chromium.org authored
> This will allow for using gin and blink bindings in the same process > > BUG=317398 > R=svenpanne@chromium.org, dcarney@chromium.org > LOG=y > > Review URL: https://codereview.chromium.org/77913003 BUG=none R=svenpanne@chromium.org TBR=svenpanne@chromium.org LOG=n Review URL: https://codereview.chromium.org/78093005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-