Commit Graph

51 Commits

Author SHA1 Message Date
Lukas Piatkowski ec0ccf599a #15 Add a button in devtools to start/stop the Sampling Profiler
Differential Revision: D3555704

fbshipit-source-id: 4add16c923fcfd306892efec4630c24ae438d6dd
2016-08-02 11:14:06 -07:00
Andy Street 0418353249 Add MicroProfiler for low-overhead profiling of JSC/bridge performance
Summary:
We have a lot of small-ish calls to JSC and within the bridge that add up during TTI. This gives us a way to measure them in aggregate in a reasonable way.

From the comments:

MicroProfiler is a performance profiler for measuring the cumulative impact of
a large number of small-ish calls. This is normally a problem for standard profilers
like Systrace because the overhead of the profiler itself skews the timings you
are able to collect. This is especially a problem when doing nested calls to
profiled functions, as the parent calls will contain the overhead of their profiling
plus the overhead of all their childrens' profiling.

MicroProfiler attempts to be low overhead by 1) aggregating timings in memory and
2) trying to remove estimated profiling overhead from the returned timings.

To remove estimated overhead, at the beginning of each trace we calculate the
average cost of profiling a no-op code section, as well as invoking the average
cost of invoking the system clock. The former is subtracted out for each child
profiler section that is invoked within a parent profiler section. The latter is
subtracted from each section, child or not.

The usage is similar to Systrace: you put a MICRO_PROFILER_BLOCK in the block you want to profile and C++ RAII will handle timing it.

After MicroProfiler::stopProfiling() is called, a table of tracing data is emitted
to glog (which shows up in logcat on Android).

Differential Revision: D3635319

fbshipit-source-id: 01390b8ac76a68dd425cba2adfdde6e4957440cc
2016-08-02 07:43:31 -07:00
Michał Gregorczyk 73a64ed2eb Do not set forceProfilerBytecodeGeneration option
Reviewed By: bnham

Differential Revision: D3598103

fbshipit-source-id: 3bd7069379cd38bd86c13a87487f546044f66902
2016-07-26 07:28:41 -07:00
Chris Hopman d67258eb91 Move some really old tests to the cxx bridge
Reviewed By: mhorowitz

Differential Revision: D3507905

fbshipit-source-id: cbe55495a991bf6eef961319ba8b219e660dce05
2016-07-25 12:29:25 -07:00
Chris Hopman e7fba4c123 Remove some throw specifications
Reviewed By: mhorowitz

Differential Revision: D3588394

fbshipit-source-id: 56e24f28b1f4eba2564007b395afcac6fa5cb209
2016-07-21 17:43:27 -07:00
Dan Caspi 654e4bed2e Better folly::dynamic ==> JSValue conversion
Reviewed By: lexs

Differential Revision: D3347854

fbshipit-source-id: 95b81152d1b0d5fe41e01991c44f5d1110be7ddb
2016-07-20 04:28:37 -07:00
Lukas Piatkowski edb9fce9c3 #6 Notify SamplingProfiler of the main MachineThread
Reviewed By: bnham

Differential Revision: D3503444

fbshipit-source-id: a2e9a692cd5badac5a15416844c8497f88021a5e
2016-07-15 11:58:31 -07:00
Michał Gregorczyk 3c0f428f05 Fix optimized bundle stuff.
Reviewed By: davidaurelio, tadeuzagallo

Differential Revision: D3563710

fbshipit-source-id: 2b0a982d388ee5f44b806f8e561ef49a3fd8c8ca
2016-07-14 15:28:46 -07:00
David Aurelio df01215006 Reverted commit D3545345
Reviewed By: tadeuzagallo

Differential Revision: D3545345

fbshipit-source-id: d655918be7dcadaf8143800497e85f3de44bd48a
2016-07-14 10:58:27 -07:00
Michał Gregorczyk 1331e20db5 add API to CatalystInstanceImpl for executing optimized bundle
Reviewed By: tadeuzagallo

Differential Revision: D3545345

fbshipit-source-id: 538fec77b816c3fd767e8c2eda81c78971996b17
2016-07-12 08:13:32 -07:00
Tadeu Zagallo 5d06918d07 Add new FileSourceProvider
Summary: Add a new interface to JSC that allows loading a file lazily from disk, i.e. using mmap, instead of loading the whole file upfront and copying into the VM.

Reviewed By: michalgr

Differential Revision: D3534042

fbshipit-source-id: 98b193cc7b7e33248073e2556ea94ce3391507c7
2016-07-11 06:58:26 -07:00
Clement Genzmer 80c23ae324 Reverted commit D3207541
Reviewed By: michalgr

Differential Revision: D3207541

fbshipit-source-id: 36366188b7cb74c51d4aa974abd4a648498bcf78
2016-07-07 14:58:43 -07:00
Alexander Blom be0abd17e5 Remove a bunch of copies
Reviewed By: astreet

Differential Revision: D3475592

fbshipit-source-id: 37148bb8d8d47e9301ad549b183029337f7c4ca0
2016-07-07 09:00:01 -07:00
Alexander Blom 95401aba72 Create tracing name in C++ instead of Java
Reviewed By: mhorowitz

Differential Revision: D3469140

fbshipit-source-id: 77a00a7150573e44f219972556cbb936a57d7054
2016-07-07 09:00:00 -07:00
Tadeu Zagallo af24e8001a Add new FileSourceProvider
Reviewed By: michalgr

Differential Revision: D3207541

fbshipit-source-id: d53599c3cf36ae7c89e85a29f637987bc7139159
2016-07-07 08:44:30 -07:00
Andy Street f5345601d9 Add JSCHelper function to easily install native hooks outside of JSCExecutor
Summary: JSCExecutor has something like this, but for methods on JSCExecutor itself. Open to better ideas around how to share code

Reviewed By: lexs

Differential Revision: D3516314

fbshipit-source-id: 4b1265916c52d582bb0b9348e9b4a099f566d6c9
2016-07-07 04:58:47 -07:00
Andy Street 10d41b50c2 Add getType/getPrivate to Value
Summary:
Adds:
 - getType so you can switch on type
 - getPrivate

Reviewed By: lexs

Differential Revision: D3515510

fbshipit-source-id: d574b04f563ac650bacec3751b50be6345e8439a
2016-07-07 04:43:51 -07:00
Andy Street 8a0640716b Add more Value APIs
Summary:
Adds:
 - callAsConstructor
 - Ability to provide `this` object to callAsFunction
 - getPropertyNames() now returns Strings (which can be converted by the caller to std::string if they want).

Fixes:
 - double free issue with the String move constructor

Reviewed By: lexs

Differential Revision: D3515398

fbshipit-source-id: afa1342044e41fdd833dd27b8a244a58d4078442
2016-07-06 06:43:26 -07:00
Marc Horowitz ccd608a4b6 Update nul termination handling to avoid copies on iOS
Reviewed By: javache

Differential Revision: D3495998

fbshipit-source-id: 8d69ecc4777402a5d6b0e814af9f1862b47ecaa1
2016-06-30 16:43:56 -07:00
Chris Hopman df6d18358e Serialize params when making/queuing native call
Reviewed By: mhorowitz

Differential Revision: D3460507

fbshipit-source-id: a0600ffe3da89791af3eb64fc2973eb6aafa7d2b
2016-06-23 14:58:58 -07:00
Greg Pstrucha c54f468ab2 Enable -Wglobal-constructors
Reviewed By: kastiglione

Differential Revision: D3459099

fbshipit-source-id: 2c847dcaf519508101ca6be09aa4d9236e1d7d51
2016-06-22 13:43:32 -07:00
Marc Horowitz 254404b98c if !WITH_JSCEXTENSIONS, append a \0
Reviewed By: astreet

Differential Revision: D3459183

fbshipit-source-id: f62110e67faed827d888afc9a39d1586cdeeb074
2016-06-21 22:13:33 -07:00
Alexander Blom d63d4f0e9c Bind methods instead of using eval
Reviewed By: astreet

Differential Revision: D3417452

fbshipit-source-id: 437daa2dfcd01efb749465a94c1a72ce8a2cb315
2016-06-21 10:13:33 -07:00
Chris Hopman 1731598428 Add some (possibly temporary) noexcept/throw specifications
Reviewed By: mhorowitz

Differential Revision: D3435575

fbshipit-source-id: 93b60a5d6890d21db6b3726784bc6fd868af5ba0
2016-06-16 16:13:17 -07:00
Marc Horowitz a60b74d974 When executing JS throws an exception, capture the js stack in the C++ exception thrown
Reviewed By: davidaurelio

Differential Revision: D3428921

fbshipit-source-id: 0e8be84a2be92558ea3de0d32d1d4a53308d8270
2016-06-16 14:44:18 -07:00
Chris Hopman b2d4c2e255 Add c++-runloop-backed message queue
Reviewed By: mhorowitz

Differential Revision: D3250498

fbshipit-source-id: 4e32153bcf07f6362f55fa558c22551140b34451
2016-06-13 18:13:34 -07:00
Mark Wang f29e195cb7 More inherited_buck_flags in fbobjc.
Reviewed By: beefon

Differential Revision: D3414903

fbshipit-source-id: 83528910b4d7f60765b7bfdb779c1c08921d8b9a
2016-06-11 20:58:23 -07:00
Alexander Blom bc7ec03670 Add better markers for getConfig
Reviewed By: astreet

Differential Revision: D3358278

fbshipit-source-id: 16668cd33a42a120c2de88be4cb4a1c8d0d5a13c
2016-06-06 11:58:32 -07:00
Chris Hopman db3adb4445 Cancel pending bridge work during shutdown
Reviewed By: mhorowitz

Differential Revision: D3381541

fbshipit-source-id: 51a3f766509ec78262792817dee3d5e6969ff05f
2016-06-02 17:13:27 -07:00
Chris Hopman 5e8f1716fc Build new bridge with gradle
Reviewed By: bestander

Differential Revision: D3324351

fbshipit-source-id: 41fa18a23c8661440a7deff244c93278f418e1d9
2016-05-27 16:13:37 -07:00
Charles Dick f948662013 Drop JSC code on background
Reviewed By: lexs

Differential Revision: D3311037

fbshipit-source-id: e46559108c51f1cd163ed5c557d23c21f696ef88
2016-05-26 11:13:42 -07:00
Chris Hopman a8acf8a5ce Move cxx module support into oss
Reviewed By: mhorowitz

Differential Revision: D3319751

fbshipit-source-id: 87f91a541cfbbe45bd8561d94f269ba976a9f702
2016-05-24 19:28:59 -07:00
Chris Hopman 2ec9e0c690 Stop catching exceptions in the cxx bridge
Reviewed By: mhorowitz

Differential Revision: D3186631

fbshipit-source-id: 5664897b82277159c2b74b289f9a5d416633e243
2016-05-20 18:58:25 -07:00
Marc Horowitz 6796f136f1 shut down JSC before quitting its thread
Differential Revision: D3280544

fbshipit-source-id: 2a3ef2c445aaa1b224ac391b020467e087c0b81d
2016-05-18 12:58:47 -07:00
Marc Horowitz 779314a413 Implement incremental module requires
Differential Revision: D3234844

fbshipit-source-id: 24615528ad6a049aad7c2dbb7ce55e8b034c79e7
2016-05-18 12:58:47 -07:00
Michał Gregorczyk 89b68419ff Add jsc initialization markers to cxx bridge
Reviewed By: lexs

Differential Revision: D3303919

fbshipit-source-id: 0dbbe89de9de165a9d7a1597be050f37ed10a878
2016-05-17 04:28:25 -07:00
Alexander Blom 3fe2e6581c Remove duplicate install of nativeFlushQueueImmediate
Summary:
This was accidentally added twice.

**Test plan (required)**

CI
Closes https://github.com/facebook/react-native/pull/7584

Differential Revision: D3305537

Pulled By: astreet

fbshipit-source-id: 7d652f9c7762cb66715f1b7235a186513d9b938d
2016-05-16 10:28:45 -07:00
Marc Horowitz 9e9dfd2ac9 Introduce non-copyable JSBigString for managing large strings efficiently
Reviewed By: astreet

Differential Revision: D3234836

fbshipit-source-id: 2b95b585dc1215988b88cf0d609c778a95b362a1
2016-05-13 17:29:00 -07:00
Marc Horowitz f433ed716c Make the pattern for adding systrace sections more concise
Reviewed By: astreet

Differential Revision: D3234834

fbshipit-source-id: 73e191deb4dd0e06d4c242e46a582051d4bcc9ba
2016-05-13 17:29:00 -07:00
Marc Horowitz 86f2eb18e5 Support JS Systrace on all platforms
Reviewed By: tadeuzagallo

Differential Revision: D3234830

fbshipit-source-id: 94cc870d47d620c8bd8d35f83d0b017e5ddba90d
2016-05-13 17:29:00 -07:00
Marc Horowitz b7fe8e68be Finer granularity systracing
Reviewed By: astreet

Differential Revision: D3234826

fbshipit-source-id: 900ab93b847949413a134a87a20b0d826c58da3d
2016-05-13 17:29:00 -07:00
Marc Horowitz 05832c3469 Catch any std::exception from unbundling
Reviewed By: davidaurelio

Differential Revision: D3148408

fbshipit-source-id: 78dc47e1b092cb7fd06307d505a795d2009cee4d
2016-05-13 17:29:00 -07:00
Marc Horowitz 448b48ca85 remove useless text from js errors
Reviewed By: astreet

Differential Revision: D3127112

fbshipit-source-id: 56ee9da8cd7d409c7b13864e6d4cc863146d19f0
2016-05-13 17:29:00 -07:00
Marc Horowitz 7762297f77 add supportsWebWorkers
Reviewed By: lexs

Differential Revision: D3149754

fbshipit-source-id: 58bce886aff526bc7152eaca2f43a654dcb5ad2a
2016-05-13 17:29:00 -07:00
Alexander Blom e4bb9f52e5 Move all hooks over to new helper
Reviewed By: astreet

Differential Revision: D3292927

fbshipit-source-id: baafa6ded3872391ae1319b2855b2616ec79c2ad
2016-05-12 14:33:28 -07:00
Alexander Blom cafd63440a Add helper for installing method as hook
Reviewed By: astreet

Differential Revision: D3292457

fbshipit-source-id: 590637dbf868097214ca9cb7b9a6543dc48a898f
2016-05-12 14:33:28 -07:00
Michał Gregorczyk cd691e2cc2 Let jsc know it will run web worker
Reviewed By: astreet

Differential Revision: D3287543

fbshipit-source-id: 2a9de938feec417aef34c0ff26f138730b32929f
2016-05-12 08:13:21 -07:00
Alexander Blom 0934470676 Remove JS config completely
Reviewed By: astreet

Differential Revision: D3276230

fbshipit-source-id: b3ab7e7dc149696b7db1049613fbb6a2a19bc8fb
2016-05-11 11:39:20 -07:00
Andy Street 6ec5b953cb Red box c++ exceptions thrown while executing sync hooks
Summary: Also adds support for creating JS Error objects. When we clean up the way global functions are installed on JSC, we'll be able to use this pattern to auto-catch all c++ exceptions at this level.

Reviewed By: lexs

Differential Revision: D3276663

fbshipit-source-id: bf3561690013019a25e2be5a4d1b69ba9e002c72
2016-05-10 05:03:30 -07:00
Alexander Blom c6d3ca858e Avoid bounce to same message queue
Reviewed By: astreet

Differential Revision: D3269661

fb-gh-sync-id: b22ea45de9e9ddbe8471f10e9c475a5746aec34e
fbshipit-source-id: b22ea45de9e9ddbe8471f10e9c475a5746aec34e
2016-05-07 02:36:28 -07:00