diff --git a/BUILD.gn b/BUILD.gn index f58231f..3f0cb1e 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -204,6 +204,10 @@ ] } else { deps += [ + "//ios/chrome/app", + "//ios/chrome/browser", + "//ios/chrome/common", + "//ios/chrome:ios_chrome_unittests", "//ios/net:ios_net_unittests", "//ios/public/provider/chrome/browser", "//ios/public/provider/web",
diff --git a/DEPS b/DEPS index 496e425a..07fc181 100644 --- a/DEPS +++ b/DEPS
@@ -39,15 +39,15 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '5aaef1ff1a18b420b3409ec31b44c2435a4ac988', + 'skia_revision': 'fbe1c110acf218a7b2b5d378a752dc1845816d6e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '8fb1fca297b6f5ae3db83d89c6b51e73c36cdd73', + 'v8_revision': '88939fd8a4a083129561a48acfba42fb93e63141', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. - 'swarming_revision': '8fce79620b04bbe5415ace1103db27505bdc4c06', + 'swarming_revision': '05e17879accce360bee999cd9ec891d761056bc2', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. @@ -67,7 +67,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. - 'boringssl_revision': 'd7421ebf6cae07051caf657016f160585b64f8a6', + 'boringssl_revision': '3ac32b1eda0da7a99d9c2b6c605fe50af80ccd90', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling nss # and whatever else without interference from each other. @@ -187,7 +187,7 @@ Var('chromium_git') + '/webm/libvpx.git' + '@' + '204cde580a5f6dd5e7511c932c47c068046d9671', 'src/third_party/ffmpeg': - Var('chromium_git') + '/chromium/third_party/ffmpeg.git' + '@' + '4b95e276f3891020fd3560c973dcc70dd50403c6', + Var('chromium_git') + '/chromium/third_party/ffmpeg.git' + '@' + '1de28af528a87ac01a767eafabdb80c5c003ed35', 'src/third_party/libjingle/source/talk': Var('chromium_git') + '/external/webrtc/trunk/talk.git' + '@' + '3ecea8a7f856b250a0c86d26f7a7d0f284ca5afb', # commit position 10671
diff --git a/base/memory/scoped_ptr.h b/base/memory/scoped_ptr.h index 291d9b302..a475d4c 100644 --- a/base/memory/scoped_ptr.h +++ b/base/memory/scoped_ptr.h
@@ -84,8 +84,12 @@ #include <stddef.h> #include <stdlib.h> -#include <algorithm> // For std::swap(). +// TODO(dcheng): Temporary, remove this #include since swap is defined in +// <utility> in C++11. +#include <algorithm> #include <iosfwd> +#include <memory> +#include <utility> #include "base/basictypes.h" #include "base/compiler_specific.h" @@ -99,61 +103,6 @@ class RefCountedThreadSafeBase; } // namespace subtle -// Function object which deletes its parameter, which must be a pointer. -// If C is an array type, invokes 'delete[]' on the parameter; otherwise, -// invokes 'delete'. The default deleter for scoped_ptr<T>. -template <class T> -struct DefaultDeleter { - DefaultDeleter() {} - template <typename U> DefaultDeleter(const DefaultDeleter<U>& other) { - // IMPLEMENTATION NOTE: C++11 20.7.1.1.2p2 only provides this constructor - // if U* is implicitly convertible to T* and U is not an array type. - // - // Correct implementation should use SFINAE to disable this - // constructor. However, since there are no other 1-argument constructors, - // using a COMPILE_ASSERT() based on is_convertible<> and requiring - // complete types is simpler and will cause compile failures for equivalent - // misuses. - // - // Note, the is_convertible<U*, T*> check also ensures that U is not an - // array. T is guaranteed to be a non-array, so any U* where U is an array - // cannot convert to T*. - enum { T_must_be_complete = sizeof(T) }; - enum { U_must_be_complete = sizeof(U) }; - COMPILE_ASSERT((base::is_convertible<U*, T*>::value), - U_ptr_must_implicitly_convert_to_T_ptr); - } - inline void operator()(T* ptr) const { - enum { type_must_be_complete = sizeof(T) }; - delete ptr; - } -}; - -// Specialization of DefaultDeleter for array types. -template <class T> -struct DefaultDeleter<T[]> { - inline void operator()(T* ptr) const { - enum { type_must_be_complete = sizeof(T) }; - delete[] ptr; - } - - private: - // Disable this operator for any U != T because it is undefined to execute - // an array delete when the static type of the array mismatches the dynamic - // type. - // - // References: - // C++98 [expr.delete]p3 - // http://cplusplus.github.com/LWG/lwg-defects.html#938 - template <typename U> void operator()(U* array) const; -}; - -template <class T, int n> -struct DefaultDeleter<T[n]> { - // Never allow someone to declare something like scoped_ptr<int[10]>. - COMPILE_ASSERT(sizeof(T) == -1, do_not_use_array_with_size_as_type); -}; - // Function object which invokes 'free' on its parameter, which must be // a pointer. Can be used to store malloc-allocated pointers in scoped_ptr: // @@ -175,17 +124,6 @@ }; }; -template <typename T> -struct ShouldAbortOnSelfReset { - template <typename U> - static NoType Test(const typename U::AllowSelfReset*); - - template <typename U> - static YesType Test(...); - - static const bool value = sizeof(Test<T>(0)) == sizeof(YesType); -}; - // Minimal implementation of the core logic of scoped_ptr, suitable for // reuse in both scoped_ptr and its specializations. template <class T, class D> @@ -230,10 +168,6 @@ } void reset(T* p) { - // This is a self-reset, which is no longer allowed for default deleters: - // https://crbug.com/162971 - assert(!ShouldAbortOnSelfReset<D>::value || p == nullptr || p != data_.ptr); - // Match C++11's definition of unique_ptr::reset(), which requires changing // the pointer before invoking the deleter on the old pointer. This prevents // |this| from being accessed after the deleter is run, which may destroy @@ -295,15 +229,15 @@ // dereference it, you get the thread safety guarantees of T. // // The size of scoped_ptr is small. On most compilers, when using the -// DefaultDeleter, sizeof(scoped_ptr<T>) == sizeof(T*). Custom deleters will -// increase the size proportional to whatever state they need to have. See +// std::default_delete, sizeof(scoped_ptr<T>) == sizeof(T*). Custom deleters +// will increase the size proportional to whatever state they need to have. See // comments inside scoped_ptr_impl<> for details. // // Current implementation targets having a strict subset of C++11's // unique_ptr<> features. Known deficiencies include not supporting move-only // deleteres, function pointers as deleters, and deleters with reference // types. -template <class T, class D = base::DefaultDeleter<T> > +template <class T, class D = std::default_delete<T>> class scoped_ptr { MOVE_ONLY_TYPE_WITH_MOVE_CONSTRUCTOR_FOR_CPP_03(scoped_ptr)
diff --git a/base/memory/scoped_ptr_unittest.cc b/base/memory/scoped_ptr_unittest.cc index ad49f4f..6330bb9e 100644 --- a/base/memory/scoped_ptr_unittest.cc +++ b/base/memory/scoped_ptr_unittest.cc
@@ -641,46 +641,6 @@ super2 = SubClassReturn(); } -// Android death tests don't work properly with assert(). Yay. -#if !defined(NDEBUG) && defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID) -TEST(ScopedPtrTest, SelfResetAbortsWithDefaultDeleter) { - scoped_ptr<int> x(new int); - EXPECT_DEATH(x.reset(x.get()), ""); -} - -TEST(ScopedPtrTest, SelfResetAbortsWithDefaultArrayDeleter) { - scoped_ptr<int[]> y(new int[4]); - EXPECT_DEATH(y.reset(y.get()), ""); -} - -TEST(ScopedPtrTest, SelfResetAbortsWithDefaultFreeDeleter) { - scoped_ptr<int, base::FreeDeleter> z(static_cast<int*>(malloc(sizeof(int)))); - EXPECT_DEATH(z.reset(z.get()), ""); -} - -// A custom deleter that doesn't opt out should still crash. -TEST(ScopedPtrTest, SelfResetAbortsWithCustomDeleter) { - struct CustomDeleter { - inline void operator()(int* x) { delete x; } - }; - scoped_ptr<int, CustomDeleter> x(new int); - EXPECT_DEATH(x.reset(x.get()), ""); -} -#endif - -TEST(ScopedPtrTest, SelfResetWithCustomDeleterOptOut) { - // A custom deleter should be able to opt out of self-reset abort behavior. - struct NoOpDeleter { -#if !defined(NDEBUG) - typedef void AllowSelfReset; -#endif - inline void operator()(int*) {} - }; - scoped_ptr<int> owner(new int); - scoped_ptr<int, NoOpDeleter> x(owner.get()); - x.reset(x.get()); -} - // Logging a scoped_ptr<T> to an ostream shouldn't convert it to a boolean // value first. TEST(ScopedPtrTest, LoggingDoesntConvertToBoolean) {
diff --git a/base/process/process_metrics_win.cc b/base/process/process_metrics_win.cc index c3b3e50..63b7d96 100644 --- a/base/process/process_metrics_win.cc +++ b/base/process/process_metrics_win.cc
@@ -8,6 +8,8 @@ #include <psapi.h> #include <winternl.h> +#include <algorithm> + #include "base/logging.h" #include "base/sys_info.h"
diff --git a/base/trace_event/memory_dump_manager.h b/base/trace_event/memory_dump_manager.h index 7f0508b4..3102713 100644 --- a/base/trace_event/memory_dump_manager.h +++ b/base/trace_event/memory_dump_manager.h
@@ -5,6 +5,7 @@ #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_ #define BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_ +#include <memory> #include <set> #include "base/atomicops.h" @@ -124,7 +125,7 @@ } private: - friend struct DefaultDeleter<MemoryDumpManager>; // For the testing instance. + friend std::default_delete<MemoryDumpManager>; // For the testing instance. friend struct DefaultSingletonTraits<MemoryDumpManager>; friend class MemoryDumpManagerDelegate; friend class MemoryDumpManagerTest;
diff --git a/build/android/gyp/java_cpp_enum.py b/build/android/gyp/java_cpp_enum.py index a0c9a8fa..a82ebc2 100755 --- a/build/android/gyp/java_cpp_enum.py +++ b/build/android/gyp/java_cpp_enum.py
@@ -306,6 +306,7 @@ def DoMain(argv): usage = 'usage: %prog [options] [output_dir] input_file(s)...' parser = optparse.OptionParser(usage=usage) + build_utils.AddDepfileOption(parser) parser.add_option('--assert_file', action="append", default=[], dest="assert_files_list", help='Assert that the given ' @@ -320,6 +321,22 @@ action='store_true') options, args = parser.parse_args(argv) + + if options.srcjar: + if not args: + parser.error('Need to specify at least one input file') + input_paths = args + else: + if len(args) < 2: + parser.error( + 'Need to specify output directory and at least one input file') + output_dir = args[0] + input_paths = args[1:] + + if options.depfile: + python_deps = build_utils.GetPythonDependencies() + build_utils.WriteDepfile(options.depfile, input_paths + python_deps) + if options.srcjar: if options.print_output_only: parser.error('--print_output_only does not work with --srcjar') @@ -327,17 +344,12 @@ parser.error('--assert_file does not work with --srcjar') with zipfile.ZipFile(options.srcjar, 'w', zipfile.ZIP_STORED) as srcjar: - for output_path, data in DoGenerate(args): + for output_path, data in DoGenerate(input_paths): srcjar.writestr(build_utils.CreateHermeticZipInfo(output_path), data) else: # TODO(agrieve): Delete this non-srcjar branch once GYP is gone. - if len(args) < 2: - parser.error( - 'Need to specify output directory and at least one input file') - - output_dir = args[0] output_paths = [] - for output_path, data in DoGenerate(args[1:]): + for output_path, data in DoGenerate(input_paths): full_path = os.path.join(output_dir, output_path) output_paths.append(full_path) if not options.print_output_only:
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index 37c7483..6e27ce4 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni
@@ -348,13 +348,19 @@ ]) script = "//build/android/gyp/java_cpp_enum.py" + depfile = "$target_gen_dir/$target_name.d" _srcjar_path = "${target_gen_dir}/${target_name}.srcjar" _rebased_srcjar_path = rebase_path(_srcjar_path, root_build_dir) _rebased_sources = rebase_path(invoker.sources, root_build_dir) - args = [ "--srcjar=$_rebased_srcjar_path" ] + _rebased_sources + args = [ + "--depfile", + rebase_path(depfile, root_build_dir), + "--srcjar=$_rebased_srcjar_path", + ] + _rebased_sources outputs = [ + depfile, _srcjar_path, ] }
diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc index 534b97e..4acd9c1 100644 --- a/cc/output/direct_renderer.cc +++ b/cc/output/direct_renderer.cc
@@ -208,8 +208,7 @@ frame.root_damage_rect = Capabilities().using_partial_swap ? root_render_pass->damage_rect : root_render_pass->output_rect; - frame.root_damage_rect.Union(next_root_damage_rect_); - next_root_damage_rect_ = gfx::Rect(); + frame.root_damage_rect.Union(overlay_processor_->GetAndResetOverlayDamage()); frame.root_damage_rect.Intersect(gfx::Rect(device_viewport_rect.size())); frame.device_viewport_rect = device_viewport_rect; frame.device_clip_rect = device_clip_rect; @@ -239,59 +238,42 @@ frame.overlay_list.push_back(output_surface_plane); } - // If we have any copy requests, we can't remove any quads for overlays, - // otherwise the framebuffer will be missing the overlay contents. - if (root_render_pass->copy_requests.empty()) { - if (overlay_processor_->ProcessForCALayers( - resource_provider_, render_passes_in_draw_order, - &frame.ca_layer_overlay_list, &frame.overlay_list)) { - // Ensure that the next frame to use the backbuffer will do a full redraw. - next_root_damage_rect_.Union(root_render_pass->output_rect); - } else { - overlay_processor_->ProcessForOverlays( - resource_provider_, render_passes_in_draw_order, &frame.overlay_list, - &frame.root_damage_rect); + // If we have any copy requests, we can't remove any quads for overlays or + // CALayers because the framebuffer would be missing the removed quads' + // contents. + bool has_copy_requests = false; + for (const auto& pass : *render_passes_in_draw_order) { + if (!pass->copy_requests.empty()) { + has_copy_requests = true; + break; + } + } + if (!has_copy_requests) { + overlay_processor_->ProcessForOverlays( + resource_provider_, render_passes_in_draw_order, &frame.overlay_list, + &frame.ca_layer_overlay_list, &frame.root_damage_rect); + } - // No need to render in case the damage rect is completely composited - // using - // overlays and dont have any copy requests. - if (frame.root_damage_rect.IsEmpty()) { - bool handle_copy_requests = false; - for (const auto& pass : *render_passes_in_draw_order) { - if (!pass->copy_requests.empty()) { - handle_copy_requests = true; - break; - } - } + // If all damage is being drawn with overlays or CALayers then skip drawing + // the render passes. + if (frame.root_damage_rect.IsEmpty() && !has_copy_requests) { + BindFramebufferToOutputSurface(&frame); + } else { + for (const auto& pass : *render_passes_in_draw_order) { + DrawRenderPass(&frame, pass.get()); - if (!handle_copy_requests) { - BindFramebufferToOutputSurface(&frame); - FinishDrawingFrame(&frame); - render_passes_in_draw_order->clear(); - return; - } - overlay_processor_->ProcessForOverlays( - resource_provider_, render_passes_in_draw_order, - &frame.overlay_list, &frame.root_damage_rect); + bool first_request = true; + for (auto& copy_request : pass->copy_requests) { + // Doing a readback is destructive of our state on Mac, so make sure + // we restore the state between readbacks. http://crbug.com/99393. + if (!first_request) + UseRenderPass(&frame, pass.get()); + CopyCurrentRenderPassToBitmap(&frame, std::move(copy_request)); + first_request = false; } } } - - for (const auto& pass : *render_passes_in_draw_order) { - DrawRenderPass(&frame, pass.get()); - - bool first_request = true; - for (auto& copy_request : pass->copy_requests) { - // Doing a readback is destructive of our state on Mac, so make sure - // we restore the state between readbacks. http://crbug.com/99393. - if (!first_request) - UseRenderPass(&frame, pass.get()); - CopyCurrentRenderPassToBitmap(&frame, std::move(copy_request)); - first_request = false; - } - } FinishDrawingFrame(&frame); - render_passes_in_draw_order->clear(); }
diff --git a/cc/output/direct_renderer.h b/cc/output/direct_renderer.h index 6721e24e..9c3db40 100644 --- a/cc/output/direct_renderer.h +++ b/cc/output/direct_renderer.h
@@ -160,10 +160,6 @@ private: gfx::Vector2d enlarge_pass_texture_amount_; - // Regions that must be drawn in the next frame because they were represented - // as CALayers in the current frame. - gfx::Rect next_root_damage_rect_; - DISALLOW_COPY_AND_ASSIGN(DirectRenderer); };
diff --git a/cc/output/gl_renderer_unittest.cc b/cc/output/gl_renderer_unittest.cc index 10095e9..d90e3e8 100644 --- a/cc/output/gl_renderer_unittest.cc +++ b/cc/output/gl_renderer_unittest.cc
@@ -2024,11 +2024,10 @@ public: Strategy() {} ~Strategy() override {} - MOCK_METHOD4(Attempt, + MOCK_METHOD3(Attempt, bool(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidates, - gfx::Rect* damage_rect)); + OverlayCandidateList* candidates)); }; class Validator : public OverlayCandidateValidator { @@ -2125,7 +2124,7 @@ // added a fake strategy, so checking for Attempt calls checks if there was // any attempt to overlay, which there shouldn't be. We can't use the quad // list because the render pass is cleaned up by DrawFrame. - EXPECT_CALL(*processor->strategy_, Attempt(_, _, _, _)).Times(0); + EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); EXPECT_CALL(*validator, AllowCALayerOverlays()).Times(0); renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, viewport_rect, false); @@ -2146,7 +2145,7 @@ EXPECT_CALL(*validator, AllowCALayerOverlays()) .Times(1) .WillOnce(::testing::Return(false)); - EXPECT_CALL(*processor->strategy_, Attempt(_, _, _, _)).Times(1); + EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(1); renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, viewport_rect, false); @@ -2165,7 +2164,7 @@ EXPECT_CALL(*validator, AllowCALayerOverlays()) .Times(1) .WillOnce(::testing::Return(true)); - EXPECT_CALL(*processor->strategy_, Attempt(_, _, _, _)).Times(0); + EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, viewport_rect, false); }
diff --git a/cc/output/overlay_processor.cc b/cc/output/overlay_processor.cc index 43a064fb..40d6da6c 100644 --- a/cc/output/overlay_processor.cc +++ b/cc/output/overlay_processor.cc
@@ -26,11 +26,18 @@ OverlayProcessor::~OverlayProcessor() {} +gfx::Rect OverlayProcessor::GetAndResetOverlayDamage() { + gfx::Rect result = overlay_damage_rect_; + overlay_damage_rect_ = gfx::Rect(); + return result; +} + bool OverlayProcessor::ProcessForCALayers( ResourceProvider* resource_provider, RenderPassList* render_passes, + OverlayCandidateList* overlay_candidates, CALayerOverlayList* ca_layer_overlays, - OverlayCandidateList* overlay_candidates) { + gfx::Rect* damage_rect) { RenderPass* root_render_pass = render_passes->back().get(); OverlayCandidateValidator* overlay_validator = @@ -48,18 +55,43 @@ // list. overlay_candidates->clear(); render_passes->back()->quad_list.clear(); + overlay_damage_rect_ = root_render_pass->output_rect; + *damage_rect = gfx::Rect(); return true; } void OverlayProcessor::ProcessForOverlays(ResourceProvider* resource_provider, RenderPassList* render_passes, OverlayCandidateList* candidates, + CALayerOverlayList* ca_layer_overlays, gfx::Rect* damage_rect) { + // First attempt to process for CALayers. + if (ProcessForCALayers(resource_provider, render_passes, candidates, + ca_layer_overlays, damage_rect)) { + return; + } + + // Only if that fails, attempt hardware overlay strategies. for (const auto& strategy : strategies_) { - if (strategy->Attempt(resource_provider, render_passes, candidates, - damage_rect)) { - return; + if (!strategy->Attempt(resource_provider, render_passes, candidates)) + continue; + + // Subtract on-top overlays from the damage rect, unless the overlays use + // the backbuffer as their content (in which case, add their combined rect + // back to the damage at the end). + gfx::Rect output_surface_overlay_damage_rect; + for (const OverlayCandidate& overlay : *candidates) { + if (overlay.plane_z_order > 0) { + const gfx::Rect overlay_display_rect = + ToEnclosedRect(overlay.display_rect); + overlay_damage_rect_.Union(overlay_display_rect); + damage_rect->Subtract(overlay_display_rect); + if (overlay.use_output_surface_for_resource) + output_surface_overlay_damage_rect.Union(overlay_display_rect); + } } + damage_rect->Union(output_surface_overlay_damage_rect); + return; } }
diff --git a/cc/output/overlay_processor.h b/cc/output/overlay_processor.h index 020c3c7..f348fb8 100644 --- a/cc/output/overlay_processor.h +++ b/cc/output/overlay_processor.h
@@ -29,8 +29,7 @@ // overlays. virtual bool Attempt(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidates, - gfx::Rect* damage_rect) = 0; + OverlayCandidateList* candidates) = 0; }; using StrategyList = std::vector<scoped_ptr<Strategy>>; @@ -39,21 +38,26 @@ // Virtual to allow testing different strategies. virtual void Initialize(); - bool ProcessForCALayers(ResourceProvider* resource_provider, - RenderPassList* render_passes, - CALayerOverlayList* ca_layer_overlays, - OverlayCandidateList* overlay_candidates); + gfx::Rect GetAndResetOverlayDamage(); void ProcessForOverlays(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidates, + OverlayCandidateList* overlay_candidates, + CALayerOverlayList* ca_layer_overlays, gfx::Rect* damage_rect); protected: StrategyList strategies_; OutputSurface* surface_; + gfx::Rect overlay_damage_rect_; private: + bool ProcessForCALayers(ResourceProvider* resource_provider, + RenderPassList* render_passes, + OverlayCandidateList* overlay_candidates, + CALayerOverlayList* ca_layer_overlays, + gfx::Rect* damage_rect); + DISALLOW_COPY_AND_ASSIGN(OverlayProcessor); };
diff --git a/cc/output/overlay_strategy_sandwich.cc b/cc/output/overlay_strategy_sandwich.cc index 6aef45df..ce590b9 100644 --- a/cc/output/overlay_strategy_sandwich.cc +++ b/cc/output/overlay_strategy_sandwich.cc
@@ -42,8 +42,7 @@ bool OverlayStrategySandwich::Attempt(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidate_list, - gfx::Rect* damage_rect) { + OverlayCandidateList* candidate_list) { QuadList& quad_list = render_passes->back()->quad_list; for (auto it = quad_list.begin(); it != quad_list.end();) { OverlayCandidate candidate;
diff --git a/cc/output/overlay_strategy_sandwich.h b/cc/output/overlay_strategy_sandwich.h index 0bdd2d2..076ea9de 100644 --- a/cc/output/overlay_strategy_sandwich.h +++ b/cc/output/overlay_strategy_sandwich.h
@@ -23,8 +23,7 @@ bool Attempt(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidate_list, - gfx::Rect* damage_rect) override; + OverlayCandidateList* candidate_list) override; private: QuadList::Iterator TryOverlay(RenderPass* render_pass,
diff --git a/cc/output/overlay_strategy_single_on_top.cc b/cc/output/overlay_strategy_single_on_top.cc index 7a35d1d..78e5bf9 100644 --- a/cc/output/overlay_strategy_single_on_top.cc +++ b/cc/output/overlay_strategy_single_on_top.cc
@@ -21,13 +21,12 @@ bool OverlayStrategySingleOnTop::Attempt(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidate_list, - gfx::Rect* damage_rect) { + OverlayCandidateList* candidate_list) { QuadList* quad_list = &render_passes->back()->quad_list; for (auto it = quad_list->begin(); it != quad_list->end(); ++it) { OverlayCandidate candidate; if (OverlayCandidate::FromDrawQuad(resource_provider, *it, &candidate) && - TryOverlay(quad_list, candidate_list, candidate, it, damage_rect)) { + TryOverlay(quad_list, candidate_list, candidate, it)) { return true; } } @@ -39,8 +38,7 @@ QuadList* quad_list, OverlayCandidateList* candidate_list, const OverlayCandidate& candidate, - QuadList::Iterator candidate_iterator, - gfx::Rect* damage_rect) { + QuadList::Iterator candidate_iterator) { // Check that no prior quads overlap it. for (auto overlap_iter = quad_list->cbegin(); overlap_iter != candidate_iterator; ++overlap_iter) { @@ -65,7 +63,6 @@ if (overlay_candidate.overlay_handled) { quad_list->EraseAndInvalidateAllPointers(candidate_iterator); candidate_list->swap(new_candidate_list); - damage_rect->Subtract(ToEnclosedRect(overlay_candidate.display_rect)); return true; }
diff --git a/cc/output/overlay_strategy_single_on_top.h b/cc/output/overlay_strategy_single_on_top.h index 29d98de7..bdf2cc2f 100644 --- a/cc/output/overlay_strategy_single_on_top.h +++ b/cc/output/overlay_strategy_single_on_top.h
@@ -19,15 +19,13 @@ bool Attempt(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidate_list, - gfx::Rect* damage_rect) override; + OverlayCandidateList* candidate_list) override; private: bool TryOverlay(QuadList* quad_list, OverlayCandidateList* candidate_list, const OverlayCandidate& candidate, - QuadList::Iterator candidate_iterator, - gfx::Rect* damage_rect); + QuadList::Iterator candidate_iterator); OverlayCandidateValidator* capability_checker_; // Weak.
diff --git a/cc/output/overlay_strategy_underlay.cc b/cc/output/overlay_strategy_underlay.cc index 5f3f907..9a8a3628 100644 --- a/cc/output/overlay_strategy_underlay.cc +++ b/cc/output/overlay_strategy_underlay.cc
@@ -20,8 +20,7 @@ bool OverlayStrategyUnderlay::Attempt(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidate_list, - gfx::Rect* damage_rect) { + OverlayCandidateList* candidate_list) { QuadList& quad_list = render_passes->back()->quad_list; for (auto it = quad_list.begin(); it != quad_list.end(); ++it) { OverlayCandidate candidate;
diff --git a/cc/output/overlay_strategy_underlay.h b/cc/output/overlay_strategy_underlay.h index ac20051..f276c1c 100644 --- a/cc/output/overlay_strategy_underlay.h +++ b/cc/output/overlay_strategy_underlay.h
@@ -24,8 +24,7 @@ bool Attempt(ResourceProvider* resource_provider, RenderPassList* render_passes, - OverlayCandidateList* candidate_list, - gfx::Rect* damage_rect) override; + OverlayCandidateList* candidate_list) override; private: OverlayCandidateValidator* capability_checker_; // Weak.
diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc index a170cf93..1fbcff0 100644 --- a/cc/output/overlay_unittest.cc +++ b/cc/output/overlay_unittest.cc
@@ -413,7 +413,8 @@ // Check for potential candidates. OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); @@ -455,7 +456,8 @@ // Check for potential candidates. OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); // Ensure that the display and uv rects have cropping applied to them. ASSERT_EQ(1U, pass_list.size()); @@ -484,7 +486,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); // Both candidates should become overlays. EXPECT_EQ(1u, pass_list.size()); @@ -518,7 +521,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); // Only one of the candidates should become an overlay. EXPECT_EQ(1u, pass_list.size()); @@ -553,7 +557,8 @@ // Check for potential candidates. OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(2U, candidate_list.size()); @@ -608,7 +613,8 @@ OverlayCandidateList candidate_list; EXPECT_EQ(4U, main_pass->quad_list.size()); overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(3U, candidate_list.size()); @@ -669,11 +675,45 @@ candidate_list.push_back(output_surface_plane); overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); - DCHECK(!damage_rect_.IsEmpty()); + &candidate_list, nullptr, + &damage_rect_); + EXPECT_EQ(2u, candidate_list.size()); + EXPECT_TRUE(damage_rect_.IsEmpty()); } -TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) { +TEST_F(SandwichTest, DamageRectNonEmpty) { + scoped_ptr<RenderPass> pass = CreateRenderPass(); + CreateFullscreenOpaqueQuad(resource_provider_.get(), + pass->shared_quad_state_list.back(), pass.get()); + CreateFullscreenCandidateQuad(resource_provider_.get(), + pass->shared_quad_state_list.back(), + pass.get()); + CreateFullscreenOpaqueQuad(resource_provider_.get(), + pass->shared_quad_state_list.back(), pass.get()); + damage_rect_ = kOverlayRect; + + RenderPassList pass_list; + pass_list.push_back(pass.Pass()); + + // Check for potential candidates. + OverlayCandidateList candidate_list; + + // Primary plane. + OverlayCandidate output_surface_plane; + output_surface_plane.display_rect = gfx::RectF(kOverlayRect); + output_surface_plane.quad_rect_in_target_space = kOverlayRect; + output_surface_plane.use_output_surface_for_resource = true; + output_surface_plane.overlay_handled = true; + candidate_list.push_back(output_surface_plane); + + overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, + &candidate_list, nullptr, + &damage_rect_); + EXPECT_EQ(3u, candidate_list.size()); + EXPECT_EQ(damage_rect_, kOverlayRect); +} + +TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) { scoped_ptr<RenderPass> pass = CreateRenderPass(); TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad(resource_provider_.get(), @@ -693,7 +733,8 @@ // Check for potential candidates. OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); @@ -740,7 +781,8 @@ candidate_list.push_back(output_surface_plane); overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); DCHECK(damage_rect_.IsEmpty()); } @@ -759,7 +801,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(0U, candidate_list.size()); // There should be nothing new here. CompareRenderPassLists(pass_list, original_pass_list); @@ -784,7 +827,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(0U, candidate_list.size()); // There should be nothing new here. CompareRenderPassLists(pass_list, original_pass_list); @@ -814,7 +858,8 @@ // Check for potential candidates. OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, candidate_list.size()); // This should be the same. @@ -833,7 +878,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -850,7 +896,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -867,7 +914,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -883,7 +931,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -899,7 +948,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -916,7 +966,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -933,7 +984,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -952,7 +1004,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, @@ -973,7 +1026,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, @@ -993,7 +1047,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -1011,7 +1066,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); @@ -1030,7 +1086,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); @@ -1049,7 +1106,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); @@ -1073,7 +1131,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -1097,7 +1156,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -1119,7 +1179,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -1143,7 +1204,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -1165,7 +1227,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -1180,7 +1243,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, candidate_list.size()); } @@ -1195,7 +1259,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -1210,7 +1275,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -1225,7 +1291,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -1240,7 +1307,8 @@ pass_list.push_back(std::move(pass)); OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, candidate_list.size()); } @@ -1258,7 +1326,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); EXPECT_EQ(-1, candidate_list[0].plane_z_order); @@ -1281,7 +1350,8 @@ OverlayCandidateList candidate_list; overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); EXPECT_EQ(1U, pass_list.size()); ASSERT_EQ(1U, candidate_list.size()); EXPECT_EQ(-1, candidate_list[0].plane_z_order); @@ -1318,7 +1388,8 @@ candidate_list.push_back(output_surface_plane); overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, - &candidate_list, &damage_rect_); + &candidate_list, nullptr, + &damage_rect_); DCHECK(!damage_rect_.IsEmpty()); } @@ -1342,13 +1413,15 @@ pass->shared_quad_state_list.back() ->quad_to_target_transform.RotateAboutZAxis(45.f); + gfx::Rect damage_rect; RenderPassList pass_list; pass_list.push_back(std::move(pass)); CALayerOverlayList ca_layer_list; OverlayCandidateList overlay_list( BackbufferOverlayList(pass_list.back().get())); - overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, - &ca_layer_list, &overlay_list); + overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, + &overlay_list, &ca_layer_list, + &damage_rect); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, pass_list.back()->quad_list.size()); EXPECT_EQ(0U, overlay_list.size()); @@ -1363,13 +1436,15 @@ pass->shared_quad_state_list.back() ->quad_to_target_transform.RotateAboutXAxis(45.f); + gfx::Rect damage_rect; RenderPassList pass_list; pass_list.push_back(std::move(pass)); CALayerOverlayList ca_layer_list; OverlayCandidateList overlay_list( BackbufferOverlayList(pass_list.back().get())); - overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, - &ca_layer_list, &overlay_list); + overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, + &overlay_list, &ca_layer_list, + &damage_rect); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, pass_list.back()->quad_list.size()); EXPECT_EQ(1U, overlay_list.size()); @@ -1384,13 +1459,15 @@ pass->shared_quad_state_list.back()->is_clipped = true; pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; + gfx::Rect damage_rect; RenderPassList pass_list; pass_list.push_back(std::move(pass)); CALayerOverlayList ca_layer_list; OverlayCandidateList overlay_list( BackbufferOverlayList(pass_list.back().get())); - overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, - &ca_layer_list, &overlay_list); + overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, + &overlay_list, &ca_layer_list, + &damage_rect); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, pass_list.back()->quad_list.size()); EXPECT_EQ(0U, overlay_list.size()); @@ -1406,13 +1483,15 @@ pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(128, 128, 128, 128); + gfx::Rect damage_rect; RenderPassList pass_list; pass_list.push_back(std::move(pass)); CALayerOverlayList ca_layer_list; OverlayCandidateList overlay_list( BackbufferOverlayList(pass_list.back().get())); - overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, - &ca_layer_list, &overlay_list); + overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, + &overlay_list, &ca_layer_list, + &damage_rect); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, pass_list.back()->quad_list.size()); EXPECT_EQ(0U, overlay_list.size()); @@ -1427,13 +1506,15 @@ pass->shared_quad_state_list.back()->is_clipped = true; pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); + gfx::Rect damage_rect; RenderPassList pass_list; pass_list.push_back(std::move(pass)); CALayerOverlayList ca_layer_list; OverlayCandidateList overlay_list( BackbufferOverlayList(pass_list.back().get())); - overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, - &ca_layer_list, &overlay_list); + overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, + &overlay_list, &ca_layer_list, + &damage_rect); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(1U, pass_list.back()->quad_list.size()); @@ -1448,13 +1529,15 @@ pass.get()); pass->shared_quad_state_list.back()->opacity = 0; + gfx::Rect damage_rect; RenderPassList pass_list; pass_list.push_back(std::move(pass)); CALayerOverlayList ca_layer_list; OverlayCandidateList overlay_list( BackbufferOverlayList(pass_list.back().get())); - overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, - &ca_layer_list, &overlay_list); + overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, + &overlay_list, &ca_layer_list, + &damage_rect); ASSERT_EQ(1U, pass_list.size()); EXPECT_EQ(0U, pass_list.back()->quad_list.size()); EXPECT_EQ(0U, overlay_list.size());
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index 4034179..43b8018 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc
@@ -68,6 +68,7 @@ #include "cc/tiles/picture_layer_tiling.h" #include "cc/tiles/raster_tile_priority_queue.h" #include "cc/trees/damage_tracker.h" +#include "cc/trees/draw_property_utils.h" #include "cc/trees/latency_info_swap_promise_monitor.h" #include "cc/trees/layer_tree_host.h" #include "cc/trees/layer_tree_host_common.h" @@ -2575,17 +2576,35 @@ return scroll_status; } +const gfx::Transform LayerTreeHostImpl::LayerScreenSpaceTransform( + const LayerImpl* layer) { + const bool use_property_trees = + settings_.use_property_trees || settings_.verify_property_trees; + if (!use_property_trees) + return layer->screen_space_transform(); + const bool is_active_tree = layer->layer_tree_impl() == active_tree(); + LayerTreeImpl* layer_tree_impl = + is_active_tree ? active_tree() : pending_tree(); + DCHECK(layer_tree_impl); + return layer->IsDrawnRenderSurfaceLayerListMember() + ? layer->screen_space_transform() + : ScreenSpaceTransformFromPropertyTrees( + layer, layer_tree_impl->property_trees()->transform_tree); +} + gfx::Vector2dF LayerTreeHostImpl::ScrollLayerWithViewportSpaceDelta( LayerImpl* layer_impl, const gfx::PointF& viewport_point, const gfx::Vector2dF& viewport_delta) { // Layers with non-invertible screen space transforms should not have passed // the scroll hit test in the first place. - DCHECK(layer_impl->screen_space_transform().IsInvertible()); + const gfx::Transform screen_space_transform = + LayerScreenSpaceTransform(layer_impl); + DCHECK(screen_space_transform.IsInvertible()); gfx::Transform inverse_screen_space_transform( gfx::Transform::kSkipInitialization); - bool did_invert = layer_impl->screen_space_transform().GetInverse( - &inverse_screen_space_transform); + bool did_invert = + screen_space_transform.GetInverse(&inverse_screen_space_transform); // TODO(shawnsingh): With the advent of impl-side scrolling for non-root // layers, we may need to explicitly handle uninvertible transforms here. DCHECK(did_invert); @@ -2629,9 +2648,8 @@ local_start_point + gfx::Vector2dF(scrolled.x(), scrolled.y()); // Calculate the applied scroll delta in viewport space coordinates. - gfx::PointF actual_screen_space_end_point = - MathUtil::MapPoint(layer_impl->screen_space_transform(), - actual_local_end_point, &end_clipped); + gfx::PointF actual_screen_space_end_point = MathUtil::MapPoint( + screen_space_transform, actual_local_end_point, &end_clipped); DCHECK(!end_clipped); if (end_clipped) return gfx::Vector2dF(); @@ -2897,7 +2915,7 @@ gfx::Rect layer_impl_bounds(layer_impl->bounds()); gfx::RectF device_viewport_layer_impl_bounds = MathUtil::MapClippedRect( - layer_impl->screen_space_transform(), gfx::RectF(layer_impl_bounds)); + LayerScreenSpaceTransform(layer_impl), gfx::RectF(layer_impl_bounds)); return device_viewport_layer_impl_bounds.ManhattanDistanceToPoint( device_viewport_point);
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h index 583a4adf..3c82243 100644 --- a/cc/trees/layer_tree_host_impl.h +++ b/cc/trees/layer_tree_host_impl.h
@@ -629,6 +629,7 @@ BeginFrameTracker current_begin_frame_tracker_; private: + const gfx::Transform LayerScreenSpaceTransform(const LayerImpl* layer); gfx::Vector2dF ScrollLayerWithViewportSpaceDelta( LayerImpl* layer_impl, const gfx::PointF& viewport_point,
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc index 431a546..74e184c 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -4741,7 +4741,6 @@ TEST_F(LayerTreeHostImplTest, ScrollScaledLayer) { LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); - scroll_layer->SetDrawsContent(true); // Scale the layer to twice its normal size. int scale = 2;
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc index 25ec5db..5964760 100644 --- a/cc/trees/layer_tree_impl.cc +++ b/cc/trees/layer_tree_impl.cc
@@ -548,6 +548,20 @@ 1.0f / current_page_scale_factor()); } +static const gfx::Transform LayerScreenSpaceTransform( + const LayerImpl* layer, + const TransformTree& transform_tree, + const bool use_property_trees) { + if (!use_property_trees) + return layer->screen_space_transform(); + // When we use property trees, UpdateDrawProperties does not update the draw + // properties of a layer that is not in render surface layer list, so we need + // to compute the screen space transform. + return layer->IsDrawnRenderSurfaceLayerListMember() + ? layer->screen_space_transform() + : ScreenSpaceTransformFromPropertyTrees(layer, transform_tree); +} + gfx::Rect LayerTreeImpl::RootScrollLayerDeviceViewportBounds() const { LayerImpl* root_scroll_layer = OuterViewportScrollLayer() ? OuterViewportScrollLayer() @@ -555,8 +569,12 @@ if (!root_scroll_layer || root_scroll_layer->children().empty()) return gfx::Rect(); LayerImpl* layer = root_scroll_layer->children()[0].get(); - return MathUtil::MapEnclosingClippedRect(layer->screen_space_transform(), - gfx::Rect(layer->bounds())); + bool use_property_trees = + settings().verify_property_trees || settings().use_property_trees; + return MathUtil::MapEnclosingClippedRect( + LayerScreenSpaceTransform(layer, property_trees_.transform_tree, + use_property_trees), + gfx::Rect(layer->bounds())); } void LayerTreeImpl::ApplySentScrollAndScaleDeltasFromAbortedCommit() { @@ -1390,20 +1408,6 @@ return layer->parent(); } -static const gfx::Transform LayerScreenSpaceTransform( - const LayerImpl* layer, - const TransformTree& transform_tree, - const bool use_property_trees) { - if (!use_property_trees) - return layer->screen_space_transform(); - // When we use property trees, UpdateDrawProperties does not update the draw - // properties of a layer that is not in render surface layer list, so we need - // to compute the screen space transform. - return layer->IsDrawnRenderSurfaceLayerListMember() - ? layer->screen_space_transform() - : ScreenSpaceTransformFromPropertyTrees(layer, transform_tree); -} - static const gfx::Transform SurfaceScreenSpaceTransform( const LayerImpl* layer, const TransformTree& transform_tree,
diff --git a/chrome/VERSION b/chrome/VERSION index ab32995e..2b26a74 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=49 MINOR=0 -BUILD=2568 +BUILD=2569 PATCH=0
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java index bbaa1814..26e6341 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -10,6 +10,7 @@ import android.view.ContextMenu; import android.view.MenuInflater; import android.view.MenuItem; +import android.webkit.MimeTypeMap; import org.chromium.base.metrics.RecordHistogram; import org.chromium.chrome.R; @@ -83,6 +84,17 @@ static final int ACTION_SHARE_IMAGE = 19; static final int NUM_ACTIONS = 20; + // Note: these values must match the ContextMenuSaveLinkType enum in histograms.xml. + // Only add new values at the end, right before NUM_TYPES. We depend on these specific + // values in UMA histograms. + static final int TYPE_UNKNWON = 0; + static final int TYPE_TEXT = 1; + static final int TYPE_IMAGE = 2; + static final int TYPE_AUDIO = 3; + static final int TYPE_VIDEO = 4; + static final int TYPE_PDF = 5; + static final int NUM_TYPES = 6; + /** * Records a histogram entry when the user selects an item from a context menu. * @param params The ContextMenuParams describing the current context menu. @@ -104,6 +116,33 @@ } RecordHistogram.recordEnumeratedHistogram(histogramName, action, NUM_ACTIONS); } + + /** + * Records the content types when user downloads the file by long pressing the + * save link context menu option. + */ + static void recordSaveLinkTypes(String url) { + String extension = MimeTypeMap.getFileExtensionFromUrl(url); + int mimeType = TYPE_UNKNWON; + if (extension != null) { + String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); + if (type != null) { + if (type.startsWith("text")) { + mimeType = TYPE_TEXT; + } else if (type.startsWith("image")) { + mimeType = TYPE_IMAGE; + } else if (type.startsWith("audio")) { + mimeType = TYPE_AUDIO; + } else if (type.startsWith("video")) { + mimeType = TYPE_VIDEO; + } else if (type.equals("application/pdf")) { + mimeType = TYPE_PDF; + } + } + } + RecordHistogram.recordEnumeratedHistogram( + "ContextMenu.SaveLinkType", mimeType, NUM_TYPES); + } } /** @@ -280,7 +319,9 @@ } } else if (itemId == R.id.contextmenu_save_link_as) { ContextMenuUma.record(params, ContextMenuUma.ACTION_SAVE_LINK); - if (mDelegate.startDownload(params.getUnfilteredLinkUrl(), true)) { + String url = params.getUnfilteredLinkUrl(); + if (mDelegate.startDownload(url, true)) { + ContextMenuUma.recordSaveLinkTypes(url); helper.startContextMenuDownload(true, false); } } else if (itemId == R.id.contextmenu_search_by_image) {
diff --git a/chrome/app/close_handle_hook_win.cc b/chrome/app/close_handle_hook_win.cc index efec307..a0dc2f4 100644 --- a/chrome/app/close_handle_hook_win.cc +++ b/chrome/app/close_handle_hook_win.cc
@@ -7,6 +7,7 @@ #include <Windows.h> #include <psapi.h> +#include <algorithm> #include <vector> #include "base/lazy_instance.h"
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_manager.h b/chrome/browser/chromeos/app_mode/kiosk_app_manager.h index 13d8da3..c2b46b0 100644 --- a/chrome/browser/chromeos/app_mode/kiosk_app_manager.h +++ b/chrome/browser/chromeos/app_mode/kiosk_app_manager.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_APP_MANAGER_H_ #define CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_APP_MANAGER_H_ +#include <memory> #include <string> #include <vector> @@ -228,7 +229,7 @@ private: friend struct base::DefaultLazyInstanceTraits<KioskAppManager>; - friend struct base::DefaultDeleter<KioskAppManager>; + friend std::default_delete<KioskAppManager>; friend class KioskAppManagerTest; friend class KioskTest; friend class KioskUpdateTest;
diff --git a/chrome/browser/devtools/devtools_network_interceptor.cc b/chrome/browser/devtools/devtools_network_interceptor.cc index a30baaf..005ebd4b 100644 --- a/chrome/browser/devtools/devtools_network_interceptor.cc +++ b/chrome/browser/devtools/devtools_network_interceptor.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/devtools/devtools_network_interceptor.h" +#include <algorithm> #include <limits> #include "base/time/time.h"
diff --git a/chrome/browser/extensions/api/dial/dial_service.cc b/chrome/browser/extensions/api/dial/dial_service.cc index 54fbfe0..f05ba53 100644 --- a/chrome/browser/extensions/api/dial/dial_service.cc +++ b/chrome/browser/extensions/api/dial/dial_service.cc
@@ -530,7 +530,7 @@ scoped_ptr<DialServiceImpl::DialSocket> dial_socket(CreateDialSocket()); if (dial_socket->CreateAndBindSocket(bind_ip_address, net_log_, net_log_source_)) - dial_sockets_.push_back(dial_socket.release()); + dial_sockets_.push_back(dial_socket.Pass()); } scoped_ptr<DialServiceImpl::DialSocket> DialServiceImpl::CreateDialSocket() { @@ -552,12 +552,9 @@ num_requests_sent_++; VLOG(2) << "Sending request " << num_requests_sent_ << "/" << max_requests_; - for (ScopedVector<DialServiceImpl::DialSocket>::iterator iter = - dial_sockets_.begin(); - iter != dial_sockets_.end(); - ++iter) { - if (!((*iter)->IsClosed())) - (*iter)->SendOneRequest(send_address_, send_buffer_); + for (const auto& socket : dial_sockets_) { + if (!socket->IsClosed()) + socket->SendOneRequest(send_address_, send_buffer_); } } @@ -618,10 +615,8 @@ } bool DialServiceImpl::HasOpenSockets() { - for (ScopedVector<DialSocket>::const_iterator iter = dial_sockets_.begin(); - iter != dial_sockets_.end(); - ++iter) { - if (!((*iter)->IsClosed())) + for (const auto& socket : dial_sockets_) { + if (!socket->IsClosed()) return true; } return false;
diff --git a/chrome/browser/extensions/api/dial/dial_service.h b/chrome/browser/extensions/api/dial/dial_service.h index 6f1e7e9..9b69260 100644 --- a/chrome/browser/extensions/api/dial/dial_service.h +++ b/chrome/browser/extensions/api/dial/dial_service.h
@@ -6,10 +6,10 @@ #define CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_SERVICE_H_ #include <string> +#include <vector> #include "base/gtest_prod_util.h" #include "base/memory/scoped_ptr.h" -#include "base/memory/scoped_vector.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/threading/thread_checker.h" @@ -244,7 +244,7 @@ // DialSockets for each network interface whose ip address was // successfully bound. - ScopedVector<DialSocket> dial_sockets_; + std::vector<scoped_ptr<DialSocket>> dial_sockets_; // The NetLog for this service. net::NetLog* net_log_;
diff --git a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc index d56ed0c..75f104b 100644 --- a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc +++ b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc
@@ -121,11 +121,9 @@ AudioManager::Get()->GetAudioOutputDeviceNames(device_names.get()); BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(&WebrtcAudioPrivateFunction::OnOutputDeviceNames, - this, - Passed(&device_names))); + BrowserThread::IO, FROM_HERE, + base::Bind(&WebrtcAudioPrivateFunction::OnOutputDeviceNames, this, + base::Passed(&device_names))); } void WebrtcAudioPrivateFunction::OnOutputDeviceNames(
diff --git a/chrome/browser/extensions/service_worker_apitest.cc b/chrome/browser/extensions/service_worker_apitest.cc index a4786927..524da3b6 100644 --- a/chrome/browser/extensions/service_worker_apitest.cc +++ b/chrome/browser/extensions/service_worker_apitest.cc
@@ -4,6 +4,7 @@ #include "base/bind_helpers.h" #include "base/strings/stringprintf.h" +#include "base/strings/utf_string_conversions.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" @@ -20,6 +21,7 @@ #include "extensions/browser/process_manager.h" #include "extensions/test/background_page_watcher.h" #include "extensions/test/extension_test_message_listener.h" +#include "net/test/embedded_test_server/embedded_test_server.h" namespace extensions { @@ -391,4 +393,24 @@ EXPECT_TRUE(sync_listener.WaitUntilSatisfied()); } +IN_PROC_BROWSER_TEST_F(ServiceWorkerTest, + FetchFromContentScriptShouldNotGoToServiceWorkerOfPage) { + ASSERT_TRUE(StartEmbeddedTestServer()); + GURL page_url = embedded_test_server()->GetURL( + "/extensions/api_test/service_worker/content_script_fetch/" + "controlled_page/index.html"); + content::WebContents* tab = + browser()->tab_strip_model()->GetActiveWebContents(); + ui_test_utils::NavigateToURL(browser(), page_url); + content::WaitForLoadStop(tab); + + std::string value; + ASSERT_TRUE( + content::ExecuteScriptAndExtractString(tab, "register();", &value)); + EXPECT_EQ("SW controlled", value); + + ASSERT_TRUE(RunExtensionTest("service_worker/content_script_fetch")) + << message_; +} + } // namespace extensions
diff --git a/chrome/browser/media/webrtc_log_uploader.cc b/chrome/browser/media/webrtc_log_uploader.cc index ef55b432..a726791 100644 --- a/chrome/browser/media/webrtc_log_uploader.cc +++ b/chrome/browser/media/webrtc_log_uploader.cc
@@ -197,12 +197,10 @@ } content::BrowserThread::PostTask( - content::BrowserThread::UI, - FROM_HERE, + content::BrowserThread::UI, FROM_HERE, base::Bind(&WebRtcLogUploader::CreateAndStartURLFetcher, - base::Unretained(this), - upload_done_data, - Passed(&post_data))); + base::Unretained(this), upload_done_data, + base::Passed(&post_data))); content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, base::Bind(&WebRtcLogUploader::DecreaseLogCount, base::Unretained(this)));
diff --git a/chrome/browser/media/webrtc_logging_handler_host.cc b/chrome/browser/media/webrtc_logging_handler_host.cc index ef42d74..25cb76ea 100644 --- a/chrome/browser/media/webrtc_logging_handler_host.cc +++ b/chrome/browser/media/webrtc_logging_handler_host.cc
@@ -312,12 +312,11 @@ ReleaseRtpDumps(log_paths.get()); content::BrowserThread::PostTaskAndReplyWithResult( - content::BrowserThread::FILE, - FROM_HERE, + content::BrowserThread::FILE, FROM_HERE, base::Bind(&WebRtcLoggingHandlerHost::GetLogDirectoryAndEnsureExists, this), base::Bind(&WebRtcLoggingHandlerHost::StoreLogInDirectory, this, log_id, - Passed(&log_paths), callback)); + base::Passed(&log_paths), callback)); } void WebRtcLoggingHandlerHost::LogMessage(const std::string& message) { @@ -679,11 +678,12 @@ log_paths->log_path = directory; log_buffer_->SetComplete(); - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, + BrowserThread::PostTask( + BrowserThread::FILE, FROM_HERE, base::Bind(&WebRtcLogUploader::LoggingStoppedDoStore, - base::Unretained(g_browser_process->webrtc_log_uploader()), - *log_paths.get(), log_id, Passed(&log_buffer_), Passed(&meta_data_), - done_callback)); + base::Unretained(g_browser_process->webrtc_log_uploader()), + *log_paths.get(), log_id, base::Passed(&log_buffer_), + base::Passed(&meta_data_), done_callback)); logging_state_ = CLOSED; } @@ -700,12 +700,12 @@ ReleaseRtpDumps(&upload_done_data); log_buffer_->SetComplete(); - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, base::Bind( - &WebRtcLogUploader::LoggingStoppedDoUpload, - base::Unretained(g_browser_process->webrtc_log_uploader()), - Passed(&log_buffer_), - Passed(&meta_data_), - upload_done_data)); + BrowserThread::PostTask( + BrowserThread::FILE, FROM_HERE, + base::Bind(&WebRtcLogUploader::LoggingStoppedDoUpload, + base::Unretained(g_browser_process->webrtc_log_uploader()), + base::Passed(&log_buffer_), base::Passed(&meta_data_), + upload_done_data)); logging_state_ = CLOSED; }
diff --git a/chrome/browser/media/webrtc_rtp_dump_writer.cc b/chrome/browser/media/webrtc_rtp_dump_writer.cc index e397da03..2ad3f4f6 100644 --- a/chrome/browser/media/webrtc_rtp_dump_writer.cc +++ b/chrome/browser/media/webrtc_rtp_dump_writer.cc
@@ -377,19 +377,14 @@ // guaranteed to be deleted on the FILE thread before this object goes away. base::Closure task = base::Bind(&FileThreadWorker::CompressAndWriteToFileOnFileThread, - base::Unretained(worker), - Passed(&new_buffer), - end_stream, - result.get(), - bytes_written.get()); + base::Unretained(worker), base::Passed(&new_buffer), + end_stream, result.get(), bytes_written.get()); // OnFlushDone is necessary to avoid running the callback after this // object is gone. - base::Closure reply = base::Bind(&WebRtcRtpDumpWriter::OnFlushDone, - weak_ptr_factory_.GetWeakPtr(), - callback, - Passed(&result), - Passed(&bytes_written)); + base::Closure reply = base::Bind( + &WebRtcRtpDumpWriter::OnFlushDone, weak_ptr_factory_.GetWeakPtr(), + callback, base::Passed(&result), base::Passed(&bytes_written)); // Define the task and reply outside the method call so that getting and // passing the scoped_ptr does not depend on the argument evaluation order.
diff --git a/chrome/browser/metrics/time_ticks_experiment_win.cc b/chrome/browser/metrics/time_ticks_experiment_win.cc index c403dfd..8cc27f02 100644 --- a/chrome/browser/metrics/time_ticks_experiment_win.cc +++ b/chrome/browser/metrics/time_ticks_experiment_win.cc
@@ -6,12 +6,13 @@ #if defined(OS_WIN) +#include <windows.h> +#include <algorithm> + #include "base/cpu.h" #include "base/metrics/histogram.h" #include "base/win/windows_version.h" -#include <windows.h> - namespace chrome { namespace {
diff --git a/chrome/browser/password_manager/password_manager_browsertest.cc b/chrome/browser/password_manager/password_manager_browsertest.cc index 014f852..fdaf384 100644 --- a/chrome/browser/password_manager/password_manager_browsertest.cc +++ b/chrome/browser/password_manager/password_manager_browsertest.cc
@@ -21,7 +21,6 @@ #include "chrome/browser/ui/browser_navigator_params.h" #include "chrome/browser/ui/login/login_prompt.h" #include "chrome/browser/ui/login/login_prompt_test_utils.h" -#include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/common/channel_info.h" #include "chrome/common/chrome_paths.h"
diff --git a/chrome/browser/password_manager/password_manager_test_base.cc b/chrome/browser/password_manager/password_manager_test_base.cc index 18750a31..a2fa1c9 100644 --- a/chrome/browser/password_manager/password_manager_test_base.cc +++ b/chrome/browser/password_manager/password_manager_test_base.cc
@@ -14,7 +14,7 @@ #include "chrome/browser/password_manager/password_store_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" -#include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" +#include "chrome/browser/ui/passwords/passwords_model_delegate.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/test/base/ui_test_utils.h" #include "components/autofill/core/browser/autofill_test_utils.h" @@ -138,33 +138,34 @@ class BubbleObserver : public PromptObserver { public: explicit BubbleObserver(content::WebContents* web_contents) - : ui_controller_( - ManagePasswordsUIController::FromWebContents(web_contents)) {} + : passwords_model_delegate_( + PasswordsModelDelegateFromWebContents(web_contents)) {} ~BubbleObserver() override {} private: // PromptObserver: bool IsShowingPrompt() const override { - return ui_controller_->PasswordPendingUserDecision(); + return passwords_model_delegate_->GetState() == + password_manager::ui::PENDING_PASSWORD_STATE; } bool IsShowingUpdatePrompt() const override { - return ui_controller_->state() == + return passwords_model_delegate_->GetState() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE; } void AcceptImpl() const override { - ui_controller_->SavePassword(); + passwords_model_delegate_->SavePassword(); EXPECT_FALSE(IsShowingPrompt()); } void AcceptUpdatePromptImpl( const autofill::PasswordForm& form) const override { - ui_controller_->UpdatePassword(form); + passwords_model_delegate_->UpdatePassword(form); EXPECT_FALSE(IsShowingUpdatePrompt()); } - ManagePasswordsUIController* const ui_controller_; + PasswordsModelDelegate* const passwords_model_delegate_; DISALLOW_COPY_AND_ASSIGN(BubbleObserver); };
diff --git a/chrome/browser/sync_file_system/sync_file_system_service.h b/chrome/browser/sync_file_system/sync_file_system_service.h index 0d642e6..7bbea9d 100644 --- a/chrome/browser/sync_file_system/sync_file_system_service.h +++ b/chrome/browser/sync_file_system/sync_file_system_service.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_SERVICE_H_ #include <map> +#include <memory> #include <string> #include "base/basictypes.h" @@ -91,7 +92,7 @@ friend class SyncFileSystemServiceFactory; friend class SyncFileSystemServiceTest; friend class SyncFileSystemTest; - friend struct base::DefaultDeleter<SyncFileSystemService>; + friend std::default_delete<SyncFileSystemService>; friend class LocalSyncRunner; friend class RemoteSyncRunner;
diff --git a/chrome/browser/ui/cocoa/passwords/account_chooser_view_controller_unittest.mm b/chrome/browser/ui/cocoa/passwords/account_chooser_view_controller_unittest.mm index b607324..26ae628 100644 --- a/chrome/browser/ui/cocoa/passwords/account_chooser_view_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/passwords/account_chooser_view_controller_unittest.mm
@@ -157,14 +157,10 @@ federated_forms.Pass(), GURL("http://example.com"), base::Callback<void(const password_manager::CredentialInfo&)>())); - EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, - ui_controller()->state()); [controller().credentialsView selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO]; EXPECT_TRUE(delegate().dismissed); - EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, - ui_controller()->state()); EXPECT_TRUE(ui_controller()->choose_credential()); EXPECT_EQ(base::ASCIIToUTF16("taco"), ui_controller()->chosen_credential().username_value);
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc index 60db0f8..6037e40e 100644 --- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc +++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
@@ -14,8 +14,8 @@ #include "chrome/browser/password_manager/password_store_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/profile_sync_service_factory.h" -#include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" +#include "chrome/browser/ui/passwords/passwords_model_delegate.h" #include "chrome/common/url_constants.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" @@ -24,6 +24,7 @@ #include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/common/credential_manager_types.h" #include "components/password_manager/core/common/password_manager_ui.h" +#include "content/public/browser/web_contents.h" #include "ui/base/l10n/l10n_util.h" namespace metrics_util = password_manager::metrics_util; @@ -75,25 +76,25 @@ display_disposition_(metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING), dismissal_reason_(metrics_util::NO_DIRECT_INTERACTION), update_password_submission_event_(metrics_util::NO_UPDATE_SUBMISSION) { - ManagePasswordsUIController* controller = - ManagePasswordsUIController::FromWebContents(web_contents); + PasswordsModelDelegate* delegate = + PasswordsModelDelegateFromWebContents(web_contents); - origin_ = controller->origin(); - state_ = controller->state(); - password_overridden_ = controller->PasswordOverridden(); + origin_ = delegate->GetOrigin(); + state_ = delegate->GetState(); + password_overridden_ = delegate->IsPasswordOverridden(); if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { - pending_password_ = controller->PendingPassword(); - local_credentials_ = DeepCopyForms(controller->GetCurrentForms()); + pending_password_ = delegate->GetPendingPassword(); + local_credentials_ = DeepCopyForms(delegate->GetCurrentForms()); } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { // We don't need anything. } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { - local_credentials_ = DeepCopyForms(controller->GetCurrentForms()); - federated_credentials_ = DeepCopyForms(controller->GetFederatedForms()); + local_credentials_ = DeepCopyForms(delegate->GetCurrentForms()); + federated_credentials_ = DeepCopyForms(delegate->GetFederatedForms()); } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { - pending_password_ = controller->PendingPassword(); + pending_password_ = delegate->GetPendingPassword(); } else { - local_credentials_ = DeepCopyForms(controller->GetCurrentForms()); + local_credentials_ = DeepCopyForms(delegate->GetCurrentForms()); } if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || @@ -144,7 +145,7 @@ interaction_stats_.username_value = pending_password_.username_value; interaction_stats_.update_time = base::Time::Now(); password_manager::InteractionsStats* stats = - controller->GetCurrentInteractionStats(); + delegate->GetCurrentInteractionStats(); if (stats) { // TODO(vasilii): DCHECK that username and origin are the same. interaction_stats_.dismissal_count = stats->dismissal_count; @@ -200,7 +201,7 @@ } metrics_util::LogUIDisplayDisposition(display_disposition_); - controller->OnBubbleShown(); + delegate->OnBubbleShown(); } ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() { @@ -227,12 +228,11 @@ } } } - ManagePasswordsUIController* manage_passwords_ui_controller = - web_contents() ? - ManagePasswordsUIController::FromWebContents(web_contents()) - : nullptr; - if (manage_passwords_ui_controller) - manage_passwords_ui_controller->OnBubbleHidden(); + PasswordsModelDelegate* delegate = + web_contents() ? PasswordsModelDelegateFromWebContents(web_contents()) + : nullptr; + if (delegate) + delegate->OnBubbleHidden(); if (dismissal_reason_ == metrics_util::NOT_DISPLAYED) return; @@ -248,8 +248,8 @@ update_password_submission_event_ = GetUpdateDismissalReason(NO_INTERACTION); if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE && - manage_passwords_ui_controller) - manage_passwords_ui_controller->OnNoInteractionOnUpdate(); + delegate) + delegate->OnNoInteractionOnUpdate(); } if (update_password_submission_event_ != metrics_util::NO_UPDATE_SUBMISSION) LogUpdatePasswordSubmissionEvent(update_password_submission_event_); @@ -265,9 +265,7 @@ dismissal_reason_ = metrics_util::CLICKED_NEVER; update_password_submission_event_ = GetUpdateDismissalReason(NOPE_CLICKED); CleanStatisticsForSite(web_contents(), origin_); - ManagePasswordsUIController* manage_passwords_ui_controller = - ManagePasswordsUIController::FromWebContents(web_contents()); - manage_passwords_ui_controller->NeverSavePassword(); + PasswordsModelDelegateFromWebContents(web_contents())->NeverSavePassword(); } void ManagePasswordsBubbleModel::OnSaveClicked() { @@ -275,24 +273,19 @@ dismissal_reason_ = metrics_util::CLICKED_SAVE; update_password_submission_event_ = GetUpdateDismissalReason(UPDATE_CLICKED); CleanStatisticsForSite(web_contents(), origin_); - ManagePasswordsUIController* manage_passwords_ui_controller = - ManagePasswordsUIController::FromWebContents(web_contents()); - manage_passwords_ui_controller->SavePassword(); + PasswordsModelDelegateFromWebContents(web_contents())->SavePassword(); } void ManagePasswordsBubbleModel::OnNopeUpdateClicked() { update_password_submission_event_ = GetUpdateDismissalReason(NOPE_CLICKED); - ManagePasswordsUIController* manage_passwords_ui_controller = - ManagePasswordsUIController::FromWebContents(web_contents()); - manage_passwords_ui_controller->OnNopeUpdateClicked(); + PasswordsModelDelegateFromWebContents(web_contents())->OnNopeUpdateClicked(); } void ManagePasswordsBubbleModel::OnUpdateClicked( const autofill::PasswordForm& password_form) { update_password_submission_event_ = GetUpdateDismissalReason(UPDATE_CLICKED); - ManagePasswordsUIController* manage_passwords_ui_controller = - ManagePasswordsUIController::FromWebContents(web_contents()); - manage_passwords_ui_controller->UpdatePassword(password_form); + PasswordsModelDelegateFromWebContents(web_contents())->UpdatePassword( + password_form); } void ManagePasswordsBubbleModel::OnDoneClicked() { @@ -309,10 +302,10 @@ dismissal_reason_ = metrics_util::CLICKED_MANAGE; if (GetSmartLockBrandingState(GetProfile()) == password_bubble_experiment::SmartLockBranding::FULL) { - ManagePasswordsUIController::FromWebContents(web_contents()) + PasswordsModelDelegateFromWebContents(web_contents()) ->NavigateToExternalPasswordManager(); } else { - ManagePasswordsUIController::FromWebContents(web_contents()) + PasswordsModelDelegateFromWebContents(web_contents()) ->NavigateToPasswordManagerSettingsPage(); } } @@ -321,11 +314,11 @@ dismissal_reason_ = metrics_util::CLICKED_BRAND_NAME; switch (GetSmartLockBrandingState(GetProfile())) { case password_bubble_experiment::SmartLockBranding::FULL: - ManagePasswordsUIController::FromWebContents(web_contents()) + PasswordsModelDelegateFromWebContents(web_contents()) ->NavigateToSmartLockPage(); break; case password_bubble_experiment::SmartLockBranding::SAVE_BUBBLE_ONLY: - ManagePasswordsUIController::FromWebContents(web_contents()) + PasswordsModelDelegateFromWebContents(web_contents()) ->NavigateToSmartLockHelpPage(); break; case password_bubble_experiment::SmartLockBranding::NONE: @@ -369,10 +362,8 @@ const autofill::PasswordForm& password_form, password_manager::CredentialType credential_type) { dismissal_reason_ = metrics_util::CLICKED_CREDENTIAL; - ManagePasswordsUIController* manage_passwords_ui_controller = - ManagePasswordsUIController::FromWebContents(web_contents()); - manage_passwords_ui_controller->ChooseCredential(password_form, - credential_type); + PasswordsModelDelegateFromWebContents(web_contents())->ChooseCredential( + password_form, credential_type); } Profile* ManagePasswordsBubbleModel::GetProfile() const {
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model.h b/chrome/browser/ui/passwords/manage_passwords_bubble_model.h index 8e685097..00ee2abc 100644 --- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.h +++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.h
@@ -13,8 +13,6 @@ #include "content/public/browser/web_contents_observer.h" #include "ui/gfx/range/range.h" -class ManagePasswordsIconController; -class ManagePasswordsUIController; class Profile; namespace content {
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc index fa3090d..e348ec0 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
@@ -184,20 +184,117 @@ void ManagePasswordsUIController::OnLoginsChanged( const password_manager::PasswordStoreChangeList& changes) { - password_manager::ui::State current_state = state(); + password_manager::ui::State current_state = GetState(); passwords_data_.ProcessLoginsChanged(changes); - if (current_state != state()) + if (current_state != GetState()) UpdateBubbleAndIconVisibility(); } -void ManagePasswordsUIController::NavigateToPasswordManagerSettingsPage() { -#if defined(OS_ANDROID) - chrome::android::ChromeApplication::ShowPasswordSettings(); -#else - chrome::ShowSettingsSubPage( - chrome::FindBrowserWithWebContents(web_contents()), - chrome::kPasswordManagerSubPage); -#endif +const GURL& ManagePasswordsUIController::GetOrigin() const { + return passwords_data_.origin(); +} + +password_manager::ui::State ManagePasswordsUIController::GetState() const { + return passwords_data_.state(); +} + +const autofill::PasswordForm& ManagePasswordsUIController:: + GetPendingPassword() const { + if (GetState() == password_manager::ui::AUTO_SIGNIN_STATE) + return *GetCurrentForms()[0]; + + DCHECK(GetState() == password_manager::ui::PENDING_PASSWORD_STATE || + GetState() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || + GetState() == password_manager::ui::CONFIRMATION_STATE) + << GetState(); + password_manager::PasswordFormManager* form_manager = + passwords_data_.form_manager(); + return form_manager->pending_credentials(); +} + +bool ManagePasswordsUIController::IsPasswordOverridden() const { + const password_manager::PasswordFormManager* form_manager = + passwords_data_.form_manager(); + return form_manager ? form_manager->password_overridden() : false; +} + +const std::vector<const autofill::PasswordForm*>& +ManagePasswordsUIController::GetCurrentForms() const { + return passwords_data_.GetCurrentForms(); +} + +const std::vector<const autofill::PasswordForm*>& +ManagePasswordsUIController::GetFederatedForms() const { + return passwords_data_.federated_credentials_forms(); +} + +password_manager::InteractionsStats* +ManagePasswordsUIController::GetCurrentInteractionStats() const { + DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, GetState()); + password_manager::PasswordFormManager* form_manager = + passwords_data_.form_manager(); + return password_manager::FindStatsByUsername( + form_manager->interactions_stats(), + form_manager->pending_credentials().username_value); +} + +void ManagePasswordsUIController::OnBubbleShown() { + should_pop_up_bubble_ = false; +} + +void ManagePasswordsUIController::OnBubbleHidden() { + if (GetState() == password_manager::ui::CREDENTIAL_REQUEST_STATE || + GetState() == password_manager::ui::CONFIRMATION_STATE || + GetState() == password_manager::ui::AUTO_SIGNIN_STATE) { + passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE); + UpdateBubbleAndIconVisibility(); + } +} + +void ManagePasswordsUIController::OnNoInteractionOnUpdate() { + if (GetState() != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { + // Do nothing if the state was changed. It can happen for example when the + // update bubble is active and a page navigation happens. + return; + } + password_manager::PasswordFormManager* form_manager = + passwords_data_.form_manager(); + DCHECK(form_manager); + form_manager->OnNoInteractionOnUpdate(); +} + +void ManagePasswordsUIController::OnNopeUpdateClicked() { + password_manager::PasswordFormManager* form_manager = + passwords_data_.form_manager(); + DCHECK(form_manager); + form_manager->OnNopeUpdateClicked(); +} + +void ManagePasswordsUIController::NeverSavePassword() { + DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, GetState()); + NeverSavePasswordInternal(); + // The state stays the same. +} + +void ManagePasswordsUIController::SavePassword() { + DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, GetState()); + SavePasswordInternal(); + passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE); + UpdateBubbleAndIconVisibility(); +} + +void ManagePasswordsUIController::UpdatePassword( + const autofill::PasswordForm& password_form) { + DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, GetState()); + UpdatePasswordInternal(password_form); + passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE); + UpdateBubbleAndIconVisibility(); +} + +void ManagePasswordsUIController::ChooseCredential( + const autofill::PasswordForm& form, + password_manager::CredentialType credential_type) { + passwords_data_.ChooseCredential(form, credential_type); } void ManagePasswordsUIController::NavigateToExternalPasswordManager() { @@ -238,25 +335,14 @@ #endif } -void ManagePasswordsUIController::SavePassword() { - DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state()); - SavePasswordInternal(); - passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE); - UpdateBubbleAndIconVisibility(); -} - -void ManagePasswordsUIController::UpdatePassword( - const autofill::PasswordForm& password_form) { - DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, state()); - UpdatePasswordInternal(password_form); - passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE); - UpdateBubbleAndIconVisibility(); -} - -void ManagePasswordsUIController::ChooseCredential( - const autofill::PasswordForm& form, - password_manager::CredentialType credential_type) { - passwords_data_.ChooseCredential(form, credential_type); +void ManagePasswordsUIController::NavigateToPasswordManagerSettingsPage() { +#if defined(OS_ANDROID) + chrome::android::ChromeApplication::ShowPasswordSettings(); +#else + chrome::ShowSettingsSubPage( + chrome::FindBrowserWithWebContents(web_contents()), + chrome::kPasswordManagerSubPage); +#endif } void ManagePasswordsUIController::SavePasswordInternal() { @@ -279,12 +365,6 @@ form_manager->Update(password_form); } -void ManagePasswordsUIController::NeverSavePassword() { - DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state()); - NeverSavePasswordInternal(); - // The state stays the same. -} - void ManagePasswordsUIController::NeverSavePasswordInternal() { password_manager::PasswordFormManager* form_manager = passwords_data_.form_manager(); @@ -318,87 +398,20 @@ #endif } -const autofill::PasswordForm& ManagePasswordsUIController:: - PendingPassword() const { - if (state() == password_manager::ui::AUTO_SIGNIN_STATE) - return *GetCurrentForms()[0]; - - DCHECK(state() == password_manager::ui::PENDING_PASSWORD_STATE || - state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || - state() == password_manager::ui::CONFIRMATION_STATE) - << state(); - password_manager::PasswordFormManager* form_manager = - passwords_data_.form_manager(); - return form_manager->pending_credentials(); -} - -bool ManagePasswordsUIController::PasswordOverridden() const { - const password_manager::PasswordFormManager* form_manager = - passwords_data_.form_manager(); - return form_manager ? form_manager->password_overridden() : false; -} - -password_manager::InteractionsStats* -ManagePasswordsUIController::GetCurrentInteractionStats() const { - DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state()); - password_manager::PasswordFormManager* form_manager = - passwords_data_.form_manager(); - return password_manager::FindStatsByUsername( - form_manager->interactions_stats(), - form_manager->pending_credentials().username_value); -} - #if !defined(OS_ANDROID) void ManagePasswordsUIController::UpdateIconAndBubbleState( ManagePasswordsIconView* icon) { if (should_pop_up_bubble_) { // We must display the icon before showing the bubble, as the bubble would // be otherwise unanchored. - icon->SetState(state()); + icon->SetState(GetState()); ShowBubbleWithoutUserInteraction(); } else { - icon->SetState(state()); + icon->SetState(GetState()); } } #endif -void ManagePasswordsUIController::OnBubbleShown() { - should_pop_up_bubble_ = false; -} - -void ManagePasswordsUIController::OnNopeUpdateClicked() { - password_manager::PasswordFormManager* form_manager = - passwords_data_.form_manager(); - DCHECK(form_manager); - form_manager->OnNopeUpdateClicked(); -} - -void ManagePasswordsUIController::OnNoInteractionOnUpdate() { - if (state() != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { - // Do nothing if the state was changed. It can happen for example when the - // update bubble is active and a page navigation happens. - return; - } - password_manager::PasswordFormManager* form_manager = - passwords_data_.form_manager(); - DCHECK(form_manager); - form_manager->OnNoInteractionOnUpdate(); -} - -void ManagePasswordsUIController::OnBubbleHidden() { - // Avoid using |state()| which is overridden for some unit tests. - if (state() == password_manager::ui::CREDENTIAL_REQUEST_STATE || - state() == password_manager::ui::CONFIRMATION_STATE || - state() == password_manager::ui::AUTO_SIGNIN_STATE) { - passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE); - UpdateBubbleAndIconVisibility(); - } -} - -password_manager::ui::State ManagePasswordsUIController::state() const { - return passwords_data_.state(); -} - void ManagePasswordsUIController::ShowBubbleWithoutUserInteraction() { DCHECK(should_pop_up_bubble_); #if !defined(OS_ANDROID)
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.h b/chrome/browser/ui/passwords/manage_passwords_ui_controller.h index 2fae5d4..373b818 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.h +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
@@ -10,9 +10,9 @@ #include "base/memory/scoped_vector.h" #include "base/timer/elapsed_timer.h" #include "chrome/browser/ui/passwords/manage_passwords_state.h" +#include "chrome/browser/ui/passwords/passwords_model_delegate.h" #include "components/autofill/core/common/password_form.h" #include "components/password_manager/core/browser/password_store.h" -#include "components/password_manager/core/common/password_manager_ui.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" @@ -33,7 +33,8 @@ class ManagePasswordsUIController : public content::WebContentsObserver, public content::WebContentsUserData<ManagePasswordsUIController>, - public password_manager::PasswordStore::Observer { + public password_manager::PasswordStore::Observer, + public PasswordsModelDelegate { public: ~ManagePasswordsUIController() override; @@ -80,89 +81,41 @@ void OnLoginsChanged( const password_manager::PasswordStoreChangeList& changes) override; - // Called from the model when the user chooses to save a password; passes the - // action to the |form_manager|. The controller must be in a pending state, - // and will be in MANAGE_STATE after this method executes. - virtual void SavePassword(); - - // Called from the model when the user chooses to update a password; passes - // the action to the |form_manager|. The controller must be in a pending - // state, and will be in MANAGE_STATE after this method executes. - virtual void UpdatePassword(const autofill::PasswordForm& password_form); - - // Called from the model when the user chooses a credential. - // The controller MUST be in a pending credentials state. - virtual void ChooseCredential( - const autofill::PasswordForm& form, - password_manager::CredentialType credential_type); - - // Called from the model when the user chooses to never save passwords; passes - // the action off to the FormManager. The controller must be in a pending - // state, and will state in this state. - virtual void NeverSavePassword(); - - // Open a new tab, pointing to the password manager settings page. - virtual void NavigateToPasswordManagerSettingsPage(); - - // Two different ways to open a new tab pointing to passwords.google.com. - // TODO(crbug.com/548259) eliminate one of them. - virtual void NavigateToExternalPasswordManager(); - virtual void NavigateToSmartLockPage(); - - // Open a new tab, pointing to the Smart Lock help article. - virtual void NavigateToSmartLockHelpPage(); - - virtual const autofill::PasswordForm& PendingPassword() const; - #if !defined(OS_ANDROID) // Set the state of the Omnibox icon, and possibly show the associated bubble // without user interaction. virtual void UpdateIconAndBubbleState(ManagePasswordsIconView* icon); #endif - // Called from the model when the bubble is displayed. - void OnBubbleShown(); - - // Called from the model when the bubble is hidden. - virtual void OnBubbleHidden(); - - // Called when the user chose not to update password. - void OnNopeUpdateClicked(); - - // Called when the user didn't interact with Update UI. - void OnNoInteractionOnUpdate(); - - virtual password_manager::ui::State state() const; - - // True if a password is sitting around, waiting for a user to decide whether - // or not to save it. - // TODO(vasilii): remove. - bool PasswordPendingUserDecision() const { - return state() == password_manager::ui::PENDING_PASSWORD_STATE; - } - - const GURL& origin() const { return passwords_data_.origin(); } - bool IsAutomaticallyOpeningBubble() const { return should_pop_up_bubble_; } - // Current local forms. - const std::vector<const autofill::PasswordForm*>& GetCurrentForms() const { - return passwords_data_.GetCurrentForms(); - } - - // Current federated forms. - const std::vector<const autofill::PasswordForm*>& GetFederatedForms() const { - return passwords_data_.federated_credentials_forms(); - } - - // True if the password for previously stored account was overridden, i.e. in - // newly submitted form the password is different from stored one. - bool PasswordOverridden() const; - - // For PENDING_PASSWORD_STATE state returns the current statistics for - // the pending username. - virtual password_manager::InteractionsStats* GetCurrentInteractionStats() - const; + // PasswordsModelDelegate: + const GURL& GetOrigin() const override; + password_manager::ui::State GetState() const override; + const autofill::PasswordForm& GetPendingPassword() const override; + bool IsPasswordOverridden() const override; + const std::vector<const autofill::PasswordForm*>& GetCurrentForms() + const override; + const std::vector<const autofill::PasswordForm*>& GetFederatedForms() + const override; + password_manager::InteractionsStats* GetCurrentInteractionStats() const + override; + void OnBubbleShown() override; + void OnBubbleHidden() override; + void OnNoInteractionOnUpdate() override; + void OnNopeUpdateClicked() override; + void NeverSavePassword() override; + void SavePassword() override; + void UpdatePassword(const autofill::PasswordForm& password_form) override; + void ChooseCredential( + const autofill::PasswordForm& form, + password_manager::CredentialType credential_type) override; + // Two different ways to open a new tab pointing to passwords.google.com. + // TODO(crbug.com/548259) eliminate one of them. + void NavigateToExternalPasswordManager() override; + void NavigateToSmartLockPage() override; + void NavigateToSmartLockHelpPage() override; + void NavigateToPasswordManagerSettingsPage() override; protected: explicit ManagePasswordsUIController(
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.cc index 46224dc..9c05be16 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.cc +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.cc
@@ -37,7 +37,7 @@ } const autofill::PasswordForm& - ManagePasswordsUIControllerMock::PendingPassword() const { + ManagePasswordsUIControllerMock::GetPendingPassword() const { return pending_password_; } @@ -46,8 +46,8 @@ pending_password_ = pending_password; } -password_manager::ui::State ManagePasswordsUIControllerMock::state() const { - return state_overridden_ ? state_ : ManagePasswordsUIController::state(); +password_manager::ui::State ManagePasswordsUIControllerMock::GetState() const { + return state_overridden_ ? state_ : ManagePasswordsUIController::GetState(); } void ManagePasswordsUIControllerMock::SetState(
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h b/chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h index 24574cbf..3d105458 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h
@@ -59,10 +59,10 @@ bool choose_credential() const { return choose_credential_; } autofill::PasswordForm chosen_credential() { return chosen_credential_; } - const autofill::PasswordForm& PendingPassword() const override; + const autofill::PasswordForm& GetPendingPassword() const override; void SetPendingPassword(autofill::PasswordForm pending_password); - password_manager::ui::State state() const override; + password_manager::ui::State GetState() const override; void SetState(password_manager::ui::State state); void UnsetState();
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc index 9174b39c..94fbe41 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
@@ -114,7 +114,7 @@ void TestManagePasswordsUIController::NeverSavePasswordInternal() { autofill::PasswordForm blacklisted; - blacklisted.origin = this->origin(); + blacklisted.origin = this->GetOrigin(); blacklisted.signon_realm = blacklisted.origin.spec(); blacklisted.blacklisted_by_user = true; password_manager::PasswordStoreChange change( @@ -161,7 +161,7 @@ void ExpectIconAndControllerStateIs(password_manager::ui::State state) { ExpectIconStateIs(state); - EXPECT_EQ(state, controller()->state()); + EXPECT_EQ(state, controller()->GetState()); } autofill::PasswordForm& test_local_form() { return test_local_form_; } @@ -218,9 +218,8 @@ } TEST_F(ManagePasswordsUIControllerTest, DefaultState) { - EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); - EXPECT_FALSE(controller()->PasswordPendingUserDecision()); - EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); + EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); + EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); } @@ -234,9 +233,8 @@ map.insert(kTestUsername, test_form.Pass()); controller()->OnPasswordAutofilled(map, map.begin()->second->origin); - EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); - EXPECT_FALSE(controller()->PasswordPendingUserDecision()); - EXPECT_EQ(test_form_ptr->origin, controller()->origin()); + EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); + EXPECT_EQ(test_form_ptr->origin, controller()->GetOrigin()); ASSERT_EQ(1u, controller()->GetCurrentForms().size()); EXPECT_EQ(kTestUsername, controller()->GetCurrentForms()[0]->username_value); @@ -251,14 +249,13 @@ CreateFormManager()); controller()->OnPasswordSubmitted(test_form_manager.Pass()); EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, - controller()->state()); - EXPECT_TRUE(controller()->PasswordPendingUserDecision()); + controller()->GetState()); EXPECT_TRUE(controller()->opened_bubble()); // TODO(mkwst): This should be the value of test_local_form().origin, but // it's being masked by the stub implementation of // ManagePasswordsUIControllerMock::PendingCredentials. - EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); + EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); } @@ -275,8 +272,7 @@ controller()->OnPasswordSubmitted(test_form_manager.Pass()); EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, - controller()->state()); - EXPECT_TRUE(controller()->PasswordPendingUserDecision()); + controller()->GetState()); EXPECT_FALSE(controller()->opened_bubble()); ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_STATE); @@ -297,7 +293,7 @@ password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); controller()->OnPasswordSubmitted(test_form_manager.Pass()); EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, - controller()->state()); + controller()->GetState()); EXPECT_FALSE(controller()->opened_bubble()); ASSERT_TRUE(controller()->GetCurrentInteractionStats()); EXPECT_EQ(stats, *controller()->GetCurrentInteractionStats()); @@ -320,7 +316,7 @@ password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); controller()->OnPasswordSubmitted(test_form_manager.Pass()); EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, - controller()->state()); + controller()->GetState()); EXPECT_TRUE(controller()->opened_bubble()); EXPECT_FALSE(controller()->GetCurrentInteractionStats()); @@ -393,13 +389,12 @@ scoped_ptr<password_manager::PasswordFormManager> test_form_manager( CreateFormManager()); controller()->OnPasswordSubmitted(test_form_manager.Pass()); - EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); - EXPECT_FALSE(controller()->PasswordPendingUserDecision()); + EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); // TODO(mkwst): This should be the value of test_local_form().origin, but // it's being masked by the stub implementation of // ManagePasswordsUIControllerMock::PendingCredentials. - EXPECT_EQ(GURL::EmptyGURL(), controller()->origin()); + EXPECT_EQ(GURL::EmptyGURL(), controller()->GetOrigin()); ExpectIconStateIs(password_manager::ui::INACTIVE_STATE); } @@ -417,8 +412,8 @@ password_manager::PasswordStoreChangeList list(1, change); controller()->OnLoginsChanged(list); - EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); - EXPECT_EQ(test_local_form().origin, controller()->origin()); + EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); + EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); ExpectIconStateIs(password_manager::ui::MANAGE_STATE); } @@ -428,7 +423,7 @@ CreateFormManager()); controller()->OnAutomaticPasswordSave(test_form_manager.Pass()); - EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->state()); + EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); controller()->OnBubbleHidden(); ExpectIconStateIs(password_manager::ui::MANAGE_STATE); @@ -444,9 +439,8 @@ base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, base::Unretained(this)))); EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, - controller()->state()); - EXPECT_FALSE(controller()->PasswordPendingUserDecision()); - EXPECT_EQ(origin, controller()->origin()); + controller()->GetState()); + EXPECT_EQ(origin, controller()->GetOrigin()); EXPECT_THAT(controller()->GetCurrentForms(), ElementsAre(Pointee(test_local_form()))); @@ -456,7 +450,7 @@ test_local_form(), password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); controller()->OnBubbleHidden(); - EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); + EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); ASSERT_TRUE(credential_info()); EXPECT_EQ(test_local_form().username_value, credential_info()->id); EXPECT_EQ(test_local_form().password_value, credential_info()->password); @@ -476,9 +470,8 @@ base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, base::Unretained(this)))); EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, - controller()->state()); - EXPECT_FALSE(controller()->PasswordPendingUserDecision()); - EXPECT_EQ(origin, controller()->origin()); + controller()->GetState()); + EXPECT_EQ(origin, controller()->GetOrigin()); EXPECT_THAT(controller()->GetCurrentForms(), ElementsAre(Pointee(test_federated_form()))); @@ -488,7 +481,7 @@ test_federated_form(), password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD); controller()->OnBubbleHidden(); - EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); + EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); ASSERT_TRUE(credential_info()); EXPECT_EQ(test_federated_form().username_value, credential_info()->id); EXPECT_EQ(test_federated_form().federation_url, @@ -509,10 +502,9 @@ base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, base::Unretained(this)))); EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, - controller()->state()); - EXPECT_FALSE(controller()->PasswordPendingUserDecision()); + controller()->GetState()); EXPECT_EQ(0u, controller()->GetCurrentForms().size()); - EXPECT_EQ(origin, controller()->origin()); + EXPECT_EQ(origin, controller()->GetOrigin()); ExpectIconStateIs(password_manager::ui::CREDENTIAL_REQUEST_STATE); @@ -520,7 +512,7 @@ test_local_form(), password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED); controller()->OnBubbleHidden(); - EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); + EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); ASSERT_TRUE(credential_info()); EXPECT_EQ(test_local_form().username_value, credential_info()->id); EXPECT_TRUE(credential_info()->password.empty()); @@ -538,13 +530,13 @@ base::Bind(&ManagePasswordsUIControllerTest::CredentialCallback, base::Unretained(this)))); EXPECT_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, - controller()->state()); - EXPECT_EQ(origin, controller()->origin()); + controller()->GetState()); + EXPECT_EQ(origin, controller()->GetOrigin()); controller()->ManagePasswordsUIController::ChooseCredential( test_local_form(), password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); controller()->OnBubbleHidden(); - EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->state()); + EXPECT_EQ(password_manager::ui::MANAGE_STATE, controller()->GetState()); ASSERT_TRUE(credential_info()); EXPECT_TRUE(credential_info()->federation.is_empty()); EXPECT_TRUE(credential_info()->password.empty()); @@ -556,8 +548,8 @@ ScopedVector<autofill::PasswordForm> local_credentials; local_credentials.push_back(new autofill::PasswordForm(test_local_form())); controller()->OnAutoSignin(local_credentials.Pass()); - EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->state()); - EXPECT_EQ(test_local_form().origin, controller()->origin()); + EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); + EXPECT_EQ(test_local_form().origin, controller()->GetOrigin()); ASSERT_FALSE(controller()->GetCurrentForms().empty()); EXPECT_EQ(test_local_form(), *controller()->GetCurrentForms()[0]); ExpectIconStateIs(password_manager::ui::AUTO_SIGNIN_STATE); @@ -589,7 +581,7 @@ map.insert(kTestUsername, psl_matched_test_form.Pass()); controller()->OnPasswordAutofilled(map, map.begin()->second->origin); - EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); + EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); } TEST_F(ManagePasswordsUIControllerTest, UpdatePasswordSubmitted) { @@ -597,7 +589,7 @@ CreateFormManager()); controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, - controller()->state()); + controller()->GetState()); ExpectIconStateIs(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE); } @@ -620,14 +612,14 @@ CreateFormManager()); controller()->OnUpdatePasswordSubmitted(test_form_manager.Pass()); EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, - controller()->state()); + controller()->GetState()); // Fake-navigate after 5 seconds. We expect the bubble's state to be reset // if a navigation occurs after this limit. controller()->SetElapsed( base::TimeDelta::FromMilliseconds(kSlowNavigationDelayInMS)); controller()->DidNavigateMainFrame(content::LoadCommittedDetails(), content::FrameNavigateParams()); - EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->state()); + EXPECT_EQ(password_manager::ui::INACTIVE_STATE, controller()->GetState()); // The following line shouldn't crash browser. controller()->OnNoInteractionOnUpdate(); }
diff --git a/chrome/browser/ui/passwords/passwords_model_delegate.cc b/chrome/browser/ui/passwords/passwords_model_delegate.cc new file mode 100644 index 0000000..12e299d --- /dev/null +++ b/chrome/browser/ui/passwords/passwords_model_delegate.cc
@@ -0,0 +1,13 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/passwords/passwords_model_delegate.h" + +#include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" + +PasswordsModelDelegate* PasswordsModelDelegateFromWebContents( + content::WebContents* web_contents) { + DCHECK(web_contents); + return ManagePasswordsUIController::FromWebContents(web_contents); +}
diff --git a/chrome/browser/ui/passwords/passwords_model_delegate.h b/chrome/browser/ui/passwords/passwords_model_delegate.h new file mode 100644 index 0000000..c104c19 --- /dev/null +++ b/chrome/browser/ui/passwords/passwords_model_delegate.h
@@ -0,0 +1,100 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_PASSWORDS_PASSWORDS_MODEL_DELEGATE_H_ +#define CHROME_BROWSER_UI_PASSWORDS_PASSWORDS_MODEL_DELEGATE_H_ + +#include <vector> + +#include "components/password_manager/core/common/credential_manager_types.h" +#include "components/password_manager/core/common/password_manager_ui.h" + +namespace autofill { +struct PasswordForm; +} +namespace content { +class WebContents; +} +namespace password_manager { +struct InteractionsStats; +} +class GURL; + +// An interface for ManagePasswordsBubbleModel implemented by +// ManagePasswordsUIController. Allows to retrieve the current state of the tab +// and notify about user actions. +class PasswordsModelDelegate { + public: + // Returns the origin of the current page. + virtual const GURL& GetOrigin() const = 0; + + // Returns the current tab state. + virtual password_manager::ui::State GetState() const = 0; + + // Returns the pending password in PENDING_PASSWORD_STATE and + // PENDING_PASSWORD_UPDATE_STATE, the saved password in CONFIRMATION_STATE, + // the returned credential in AUTO_SIGNIN_STATE. + virtual const autofill::PasswordForm& GetPendingPassword() const = 0; + + // True if the password for previously stored account was overridden, i.e. in + // newly submitted form the password is different from stored one. + virtual bool IsPasswordOverridden() const = 0; + + // Returns current local forms for the current page. + virtual const std::vector<const autofill::PasswordForm*>& + GetCurrentForms() const = 0; + + // Returns possible identity provider's credentials for the current site. + virtual const std::vector<const autofill::PasswordForm*>& + GetFederatedForms() const = 0; + + // For PENDING_PASSWORD_STATE state returns the current statistics for + // the pending username. + virtual password_manager::InteractionsStats* GetCurrentInteractionStats() + const = 0; + + // Called from the model when the bubble is displayed. + virtual void OnBubbleShown() = 0; + + // Called from the model when the bubble is hidden. + virtual void OnBubbleHidden() = 0; + + // Called when the user didn't interact with the Update UI. + virtual void OnNoInteractionOnUpdate() = 0; + + // Called when the user chose not to update password. + virtual void OnNopeUpdateClicked() = 0; + + // Called from the model when the user chooses to never save passwords. + virtual void NeverSavePassword() = 0; + + // Called from the model when the user chooses to save a password. + virtual void SavePassword() = 0; + + // Called from the model when the user chooses to update a password. + virtual void UpdatePassword(const autofill::PasswordForm& password_form) = 0; + + // Called from the model when the user chooses a credential. + virtual void ChooseCredential( + const autofill::PasswordForm& form, + password_manager::CredentialType credential_type) = 0; + + // Two different ways to open a new tab pointing to passwords.google.com. + // TODO(crbug.com/548259) eliminate one of them. + virtual void NavigateToExternalPasswordManager() = 0; + virtual void NavigateToSmartLockPage() = 0; + // Open a new tab, pointing to the Smart Lock help article. + virtual void NavigateToSmartLockHelpPage() = 0; + // Open a new tab, pointing to the password manager settings page. + virtual void NavigateToPasswordManagerSettingsPage() = 0; + + protected: + virtual ~PasswordsModelDelegate() = default; +}; + +// Returns ManagePasswordsUIController instance for |contents| +PasswordsModelDelegate* PasswordsModelDelegateFromWebContents( + content::WebContents* web_contents); + +#endif // CHROME_BROWSER_UI_PASSWORDS_PASSWORDS_MODEL_DELEGATE_H_
diff --git a/chrome/browser/ui/views/frame/taskbar_decorator_win.cc b/chrome/browser/ui/views/frame/taskbar_decorator_win.cc index 8772dce..95267720 100644 --- a/chrome/browser/ui/views/frame/taskbar_decorator_win.cc +++ b/chrome/browser/ui/views/frame/taskbar_decorator_win.cc
@@ -90,7 +90,7 @@ profiles::GetAvatarIconAsSquare(*image->ToSkBitmap(), 1))); } content::BrowserThread::GetBlockingPool()->PostWorkerTaskWithShutdownBehavior( - FROM_HERE, base::Bind(&SetOverlayIcon, hwnd, Passed(&bitmap)), + FROM_HERE, base::Bind(&SetOverlayIcon, hwnd, base::Passed(&bitmap)), base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); }
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc index 8ddf95b..3acc33f3 100644 --- a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc +++ b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc
@@ -4,13 +4,12 @@ #include "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h" +#include "base/strings/utf_string_conversions.h" #include "base/timer/timer.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" -#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" -#include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/passwords/credentials_item_view.h" #include "chrome/browser/ui/views/passwords/credentials_selection_view.h"
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc index 371e4c5..81170e071 100644 --- a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc +++ b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc
@@ -6,10 +6,10 @@ #include "base/command_line.h" #include "base/metrics/histogram_samples.h" +#include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/browser.h" -#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" #include "chrome/browser/ui/passwords/manage_passwords_test.h" -#include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" +#include "chrome/browser/ui/passwords/passwords_model_delegate.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h" @@ -17,13 +17,11 @@ #include "chrome/browser/ui/views/toolbar/toolbar_view.h" #include "chrome/test/base/interactive_test_utils.h" #include "components/password_manager/core/browser/password_bubble_experiment.h" -#include "components/password_manager/core/browser/password_manager_metrics_util.h" -#include "components/password_manager/core/browser/stub_password_manager_client.h" #include "content/public/browser/notification_types.h" #include "content/public/browser/render_view_host.h" #include "content/public/common/content_switches.h" #include "net/url_request/test_url_fetcher_factory.h" -#include "testing/gtest/include/gtest/gtest.h" +#include "testing/gmock/include/gmock/gmock.h" using testing::Eq; using testing::Field; @@ -366,7 +364,10 @@ ManagePasswordsBubbleView::CloseBubble(); EXPECT_FALSE(IsBubbleShowing()); content::RunAllPendingInMessageLoop(); - EXPECT_EQ(password_manager::ui::MANAGE_STATE, GetController()->state()); + content::WebContents* web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + EXPECT_EQ(password_manager::ui::MANAGE_STATE, + PasswordsModelDelegateFromWebContents(web_contents)->GetState()); } IN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, AutoSigninNoFocus) {
diff --git a/chrome/browser/ui/views/profiles/user_manager_view.h b/chrome/browser/ui/views/profiles/user_manager_view.h index ae9e7ca0..5f22b03 100644 --- a/chrome/browser/ui/views/profiles/user_manager_view.h +++ b/chrome/browser/ui/views/profiles/user_manager_view.h
@@ -5,6 +5,8 @@ #ifndef CHROME_BROWSER_UI_VIEWS_PROFILES_USER_MANAGER_VIEW_H_ #define CHROME_BROWSER_UI_VIEWS_PROFILES_USER_MANAGER_VIEW_H_ +#include <memory> + #include "base/auto_reset.h" #include "base/memory/scoped_ptr.h" #include "chrome/browser/profiles/profile.h" @@ -41,7 +43,7 @@ private: ~UserManagerView() override; - friend struct base::DefaultDeleter<UserManagerView>; + friend std::default_delete<UserManagerView>; // Creates dialog and initializes UI. void Init(Profile* guest_profile, const GURL& url);
diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi index 85f7522..74b9599 100644 --- a/chrome/chrome_browser_ui.gypi +++ b/chrome/chrome_browser_ui.gypi
@@ -117,6 +117,8 @@ 'browser/ui/passwords/manage_passwords_ui_controller.h', 'browser/ui/passwords/manage_passwords_view_utils.cc', 'browser/ui/passwords/manage_passwords_view_utils.h', + 'browser/ui/passwords/passwords_model_delegate.cc', + 'browser/ui/passwords/passwords_model_delegate.h', 'browser/ui/passwords/password_manager_presenter.cc', 'browser/ui/passwords/password_manager_presenter.h', 'browser/ui/passwords/password_ui_view.h',
diff --git a/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/background.js b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/background.js new file mode 100644 index 0000000..d27f3af8 --- /dev/null +++ b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/background.js
@@ -0,0 +1,20 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +chrome.runtime.onConnect.addListener(function(port) { + chrome.test.log('got connect'); + port.onMessage.addListener(function(msg) { + chrome.test.log('got message: ' + msg); + chrome.test.assertEq('Success', msg); + chrome.test.notifyPass(); + }); +}); + +chrome.test.getConfig(function(config) { + chrome.test.log('Creating tab...'); + chrome.tabs.create({ + url: 'http://127.0.0.1:PORT/extensions/api_test/service_worker/content_script_fetch/controlled_page/index.html' + .replace(/PORT/, config.testServer.port) + }); +});
diff --git a/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/content_script.js b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/content_script.js new file mode 100644 index 0000000..6f7a0f3 --- /dev/null +++ b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/content_script.js
@@ -0,0 +1,26 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +fetch(chrome.runtime.getURL('data_for_content_script')) + .then(function(res) { return res.text(); }) + .then(function(txt) { + if (txt != 'original data\n') + throw 'Fetch() result error: ' + txt; + return new Promise(function(resolve) { + var xhr = new XMLHttpRequest(); + xhr.addEventListener('load', function() { + resolve(xhr.response); + }); + xhr.open('GET', chrome.runtime.getURL('data_for_content_script')); + xhr.send(); + }); + }) + .then(function(txt) { + if (txt != 'original data\n') + throw 'XMLHttpRequest result error: ' + txt; + chrome.runtime.connect().postMessage('Success'); + }) + .catch(function(e) { + chrome.runtime.connect().postMessage('Failure: ' + e); + });
diff --git a/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/index.html b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/index.html new file mode 100644 index 0000000..1820012 --- /dev/null +++ b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/index.html
@@ -0,0 +1 @@ +<script src="register_sw.js"></script>
diff --git a/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/register_sw.js b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/register_sw.js new file mode 100644 index 0000000..7e5c46f --- /dev/null +++ b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/register_sw.js
@@ -0,0 +1,27 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +function register() { + var script = './sw.js'; + var scope = './'; + navigator.serviceWorker.register(script, {scope: scope}) + .then(function() { return navigator.serviceWorker.ready; }) + .then(function(registration) { + var channel = new MessageChannel(); + var saw_message = new Promise(function(resolve, reject) { + channel.port1.onmessage = function (e) { + if (e.data == 'clients claimed') + resolve(); + else + reject(e.data) + }; + }); + registration.active.postMessage({port: channel.port2}, [channel.port2]); + return saw_message; + }) + .then(function() { return fetch('./sw_controlled_check'); }) + .then(function(res) { return res.text(); }) + .then(function(txt) { window.domAutomationController.send(txt); }) + .catch(function(e) { window.domAutomationController.send('Fail: ' + e); }); +}
diff --git a/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/sw.js b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/sw.js new file mode 100644 index 0000000..c62f60f --- /dev/null +++ b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/sw.js
@@ -0,0 +1,21 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +self.addEventListener('fetch', function(event) { + if (event.request.url.indexOf('sw_controlled_check') != -1) { + event.respondWith(new Response('SW controlled')); + } else if (event.request.url.indexOf('data_for_content_script') != -1) { + event.respondWith(new Response('SW served data')); + } + }); + +self.addEventListener('message', function(event) { + self.clients.claim() + .then(function(result) { + event.data.port.postMessage('clients claimed'); + }) + .catch(function(error) { + event.data.port.postMessage('FAIL: exception: ' + error.name); + }); + });
diff --git a/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/sw.js.mock-http-headers b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/sw.js.mock-http-headers new file mode 100644 index 0000000..c9a3625 --- /dev/null +++ b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/controlled_page/sw.js.mock-http-headers
@@ -0,0 +1,2 @@ +HTTP/1.1 200 OK +Content-Type: text/javascript
diff --git a/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/data_for_content_script b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/data_for_content_script new file mode 100644 index 0000000..cdc3bcd --- /dev/null +++ b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/data_for_content_script
@@ -0,0 +1 @@ +original data
diff --git a/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/manifest.json b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/manifest.json new file mode 100644 index 0000000..1f458c4 --- /dev/null +++ b/chrome/test/data/extensions/api_test/service_worker/content_script_fetch/manifest.json
@@ -0,0 +1,19 @@ +{ + "name": "content script fetch", + "version": "0.1", + "manifest_version": 2, + "description": "tests that content script initiated fetch should not go to the SW of page", + "background": { + "scripts": ["background.js"] + }, + "permissions": ["http://*/*", "tabs"], + "content_scripts": [ + { + "matches": ["http://*/*"], + "js": ["content_script.js"] + } + ], + "web_accessible_resources": [ + "data_for_content_script" + ] +}
diff --git a/chromecast/media/audio/cast_audio_output_stream.cc b/chromecast/media/audio/cast_audio_output_stream.cc index 98aae10..3d1419ae 100644 --- a/chromecast/media/audio/cast_audio_output_stream.cc +++ b/chromecast/media/audio/cast_audio_output_stream.cc
@@ -175,6 +175,10 @@ OnPushBufferComplete(decoder_, MediaPipelineBackend::kBufferFailed); } + void OnKeyStatusChanged(const std::string& key_id, + CastKeyStatus key_status, + uint32_t system_code) override {} + base::WeakPtr<CastAudioOutputStream::Backend> GetWeakPtr() { return weak_factory_.GetWeakPtr(); }
diff --git a/chromecast/media/cdm/browser_cdm_cast.cc b/chromecast/media/cdm/browser_cdm_cast.cc index 9e7042d..f6a845d7 100644 --- a/chromecast/media/cdm/browser_cdm_cast.cc +++ b/chromecast/media/cdm/browser_cdm_cast.cc
@@ -126,17 +126,25 @@ session_closed_cb_.Run(session_id); } -void BrowserCdmCast::OnSessionKeysChange( - const std::string& session_id, - const ::media::KeyIdAndKeyPairs& keys) { - ::media::CdmKeysInfo cdm_keys_info; - for (const std::pair<std::string, std::string>& key : keys) { - cdm_keys_info.push_back(new ::media::CdmKeyInformation( - key.first, ::media::CdmKeyInformation::USABLE, 0)); - } - session_keys_change_cb_.Run(session_id, true, cdm_keys_info.Pass()); +void BrowserCdmCast::OnSessionKeysChange(const std::string& session_id, + bool newly_usable_keys, + ::media::CdmKeysInfo keys_info) { + session_keys_change_cb_.Run(session_id, newly_usable_keys, keys_info.Pass()); - player_tracker_impl_->NotifyNewKey(); + if (newly_usable_keys) + player_tracker_impl_->NotifyNewKey(); +} + +void BrowserCdmCast::KeyIdAndKeyPairsToInfo( + const ::media::KeyIdAndKeyPairs& keys, + ::media::CdmKeysInfo* keys_info) { + DCHECK(keys_info); + for (const std::pair<std::string, std::string>& key : keys) { + scoped_ptr<::media::CdmKeyInformation> cdm_key_information( + new ::media::CdmKeyInformation(key.first, + ::media::CdmKeyInformation::USABLE, 0)); + keys_info->push_back(cdm_key_information.release()); + } } // A macro runs current member function on |task_runner_| thread.
diff --git a/chromecast/media/cdm/browser_cdm_cast.h b/chromecast/media/cdm/browser_cdm_cast.h index 72fbce2d..836b401 100644 --- a/chromecast/media/cdm/browser_cdm_cast.h +++ b/chromecast/media/cdm/browser_cdm_cast.h
@@ -16,6 +16,7 @@ #include "base/memory/ref_counted.h" #include "base/sequenced_task_runner_helpers.h" #include "base/threading/thread_checker.h" +#include "chromecast/public/media/cast_key_status.h" #include "media/base/media_keys.h" #include "media/base/player_tracker.h" #include "media/cdm/json_web_key.h" @@ -62,6 +63,12 @@ virtual scoped_ptr<DecryptContextImpl> GetDecryptContext( const std::string& key_id) const = 0; + // Notifies that key status has changed (e.g. if expiry is detected by + // hardware decoder). + virtual void SetKeyStatus(const std::string& key_id, + CastKeyStatus key_status, + uint32_t system_code) = 0; + protected: ~BrowserCdmCast() override; @@ -71,7 +78,11 @@ ::media::MediaKeys::MessageType message_type); void OnSessionClosed(const std::string& session_id); void OnSessionKeysChange(const std::string& session_id, - const ::media::KeyIdAndKeyPairs& keys); + bool newly_usable_keys, + ::media::CdmKeysInfo keys_info); + + void KeyIdAndKeyPairsToInfo(const ::media::KeyIdAndKeyPairs& keys, + ::media::CdmKeysInfo* key_info); private: friend class BrowserCdmCastUi;
diff --git a/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc b/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc index 25524a78..f255295 100644 --- a/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc +++ b/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc
@@ -99,6 +99,9 @@ MediaPipelineBackend::BufferStatus status) override; void OnEndOfStream(MediaPipelineBackend::Decoder* decoder) override; void OnDecoderError(MediaPipelineBackend::Decoder* decoder) override; + void OnKeyStatusChanged(const std::string& key_id, + CastKeyStatus key_status, + uint32_t system_code) override; private: void Initialize(); @@ -342,6 +345,12 @@ ASSERT_TRUE(false); } +void AudioVideoPipelineDeviceTest::OnKeyStatusChanged(const std::string& key_id, + CastKeyStatus key_status, + uint32_t system_code) { + ASSERT_TRUE(false); +} + void AudioVideoPipelineDeviceTest::OnPushBufferComplete( MediaPipelineBackend::Decoder* decoder, MediaPipelineBackend::BufferStatus status) {
diff --git a/chromecast/media/cma/pipeline/media_pipeline_impl.cc b/chromecast/media/cma/pipeline/media_pipeline_impl.cc index da9b0752..4be7402 100644 --- a/chromecast/media/cma/pipeline/media_pipeline_impl.cc +++ b/chromecast/media/cma/pipeline/media_pipeline_impl.cc
@@ -155,6 +155,15 @@ } } +void MediaPipelineImpl::OnKeyStatusChanged(const std::string& key_id, + CastKeyStatus key_status, + uint32_t system_code) { + CMALOG(kLogControl) << __FUNCTION__; + DCHECK(thread_checker_.CalledOnValidThread()); + DCHECK(cdm_); + cdm_->SetKeyStatus(key_id, key_status, system_code); +} + void MediaPipelineImpl::SetCdm(BrowserCdmCast* cdm) { CMALOG(kLogControl) << __FUNCTION__; DCHECK(thread_checker_.CalledOnValidThread());
diff --git a/chromecast/media/cma/pipeline/media_pipeline_impl.h b/chromecast/media/cma/pipeline/media_pipeline_impl.h index ac84e84..87611df 100644 --- a/chromecast/media/cma/pipeline/media_pipeline_impl.h +++ b/chromecast/media/cma/pipeline/media_pipeline_impl.h
@@ -51,6 +51,9 @@ MediaPipelineBackend::BufferStatus status) override; void OnEndOfStream(MediaPipelineBackend::Decoder* decoder) override; void OnDecoderError(MediaPipelineBackend::Decoder* decoder) override; + void OnKeyStatusChanged(const std::string& key_id, + CastKeyStatus key_status, + uint32_t system_code) override; void InitializeAudio(const ::media::AudioDecoderConfig& config, const AvPipelineClient& client,
diff --git a/chromecast/public/media/cast_key_status.h b/chromecast/public/media/cast_key_status.h new file mode 100644 index 0000000..60c2b99 --- /dev/null +++ b/chromecast/public/media/cast_key_status.h
@@ -0,0 +1,19 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_PUBLIC_MEDIA_CAST_KEY_STATUS_H_ +#define CHROMECAST_PUBLIC_MEDIA_CAST_KEY_STATUS_H_ + +namespace chromecast { +namespace media { + +// Status of encryption key. See EME spec for details: +// https://w3c.github.io/encrypted-media/ - not all key status values +// are supported currently. +enum CastKeyStatus { KEY_STATUS_USABLE = 0, KEY_STATUS_EXPIRED }; + +} // namespace media +} // namespace chromecast + +#endif // CHROMECAST_PUBLIC_MEDIA_CAST_KEY_STATUS_H_
diff --git a/chromecast/public/media/media_pipeline_backend.h b/chromecast/public/media/media_pipeline_backend.h index 6c2b286..ece8452a 100644 --- a/chromecast/public/media/media_pipeline_backend.h +++ b/chromecast/public/media/media_pipeline_backend.h
@@ -5,6 +5,10 @@ #ifndef CHROMECAST_PUBLIC_MEDIA_MEDIA_PIPELINE_BACKEND_H_ #define CHROMECAST_PUBLIC_MEDIA_MEDIA_PIPELINE_BACKEND_H_ +#include <stdint.h> +#include <string> + +#include "cast_key_status.h" #include "decoder_config.h" namespace chromecast { @@ -142,6 +146,11 @@ // will be made after this is called. virtual void OnDecoderError(Decoder* decoder) = 0; + // Must be called when a decryption key status changes. + virtual void OnKeyStatusChanged(const std::string& key_id, + CastKeyStatus key_status, + uint32_t system_code) = 0; + protected: virtual ~Delegate() {} };
diff --git a/chromeos/dbus/fake_modem_messaging_client.cc b/chromeos/dbus/fake_modem_messaging_client.cc index d68cfde..43ff75a 100644 --- a/chromeos/dbus/fake_modem_messaging_client.cc +++ b/chromeos/dbus/fake_modem_messaging_client.cc
@@ -4,6 +4,7 @@ #include "chromeos/dbus/fake_modem_messaging_client.h" +#include <algorithm> #include <string> #include <vector>
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h index bd1a7de..8d003bc 100644 --- a/components/autofill/core/browser/personal_data_manager.h +++ b/components/autofill/core/browser/personal_data_manager.h
@@ -5,6 +5,7 @@ #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_PERSONAL_DATA_MANAGER_H_ #define COMPONENTS_AUTOFILL_CORE_BROWSER_PERSONAL_DATA_MANAGER_H_ +#include <memory> #include <set> #include <vector> @@ -244,7 +245,7 @@ #endif friend class ProfileSyncServiceAutofillTest; friend class ::RemoveAutofillTester; - friend struct base::DefaultDeleter<PersonalDataManager>; + friend std::default_delete<PersonalDataManager>; friend void autofill_helper::SetProfiles( int, std::vector<autofill::AutofillProfile>*); friend void autofill_helper::SetCreditCards(
diff --git a/components/certificate_reporting/error_reporter.cc b/components/certificate_reporting/error_reporter.cc index d811112..a013063 100644 --- a/components/certificate_reporting/error_reporter.cc +++ b/components/certificate_reporting/error_reporter.cc
@@ -34,11 +34,13 @@ static const char kHkdfLabel[] = "certificate report"; -std::string GetHkdfSubkeySecret(size_t subkey_length, - const uint8* private_key, - const uint8* public_key) { +bool GetHkdfSubkeySecret(size_t subkey_length, + const uint8* private_key, + const uint8* public_key, + std::string* secret) { uint8 shared_secret[crypto::curve25519::kBytes]; - crypto::curve25519::ScalarMult(private_key, public_key, shared_secret); + if (!crypto::curve25519::ScalarMult(private_key, public_key, shared_secret)) + return false; // By mistake, the HKDF label here ends up with an extra null byte on // the end, due to using sizeof(kHkdfLabel) in the StringPiece @@ -55,7 +57,8 @@ base::StringPiece(kHkdfLabel, sizeof(kHkdfLabel)), 0 /* key bytes */, 0 /* iv bytes */, subkey_length); - return hkdf.subkey_secret().as_string(); + *secret = hkdf.subkey_secret().as_string(); + return true; } bool EncryptSerializedReport(const uint8* server_public_key, @@ -70,9 +73,13 @@ crypto::curve25519::ScalarBaseMult(private_key, public_key); crypto::Aead aead(crypto::Aead::AES_128_CTR_HMAC_SHA256); - const std::string key = - GetHkdfSubkeySecret(aead.KeyLength(), private_key, - reinterpret_cast<const uint8*>(server_public_key)); + std::string key; + if (!GetHkdfSubkeySecret(aead.KeyLength(), private_key, + reinterpret_cast<const uint8*>(server_public_key), + &key)) { + LOG(ERROR) << "Error getting subkey secret."; + return false; + } aead.Init(&key); // Use an all-zero nonce because the key is random per-message. @@ -157,10 +164,14 @@ const EncryptedCertLoggerRequest& encrypted_report, std::string* decrypted_serialized_report) { crypto::Aead aead(crypto::Aead::AES_128_CTR_HMAC_SHA256); - const std::string key = - GetHkdfSubkeySecret(aead.KeyLength(), server_private_key, - reinterpret_cast<const uint8*>( - encrypted_report.client_public_key().data())); + std::string key; + if (!GetHkdfSubkeySecret(aead.KeyLength(), server_private_key, + reinterpret_cast<const uint8*>( + encrypted_report.client_public_key().data()), + &key)) { + LOG(ERROR) << "Error getting subkey secret."; + return false; + } aead.Init(&key); // Use an all-zero nonce because the key is random per-message.
diff --git a/components/cloud_devices/common/description_items.h b/components/cloud_devices/common/description_items.h index 1e8ed53..cd30ac1 100644 --- a/components/cloud_devices/common/description_items.h +++ b/components/cloud_devices/common/description_items.h
@@ -8,6 +8,7 @@ // Defines common templates that could be used to create device specific // capabilities and print tickets. +#include <algorithm> #include <vector> #include "base/logging.h"
diff --git a/components/components_tests.gyp b/components/components_tests.gyp index e71cf231..4eb1410 100644 --- a/components/components_tests.gyp +++ b/components/components_tests.gyp
@@ -225,6 +225,9 @@ 'copresence/rpc/rpc_handler_unittest.cc', 'copresence/timed_map_unittest.cc', ], + 'cronet_unittest_sources': [ + 'cronet/histogram_manager_unittest.cc', + ], 'data_use_measurement_unittest_sources': [ 'data_use_measurement/content/data_use_measurement_unittest.cc', ], @@ -1284,6 +1287,7 @@ }], ['OS == "android"', { 'sources': [ + '<@(cronet_unittest_sources)', 'data_reduction_proxy/content/browser/data_reduction_proxy_debug_blocking_page_unittest.cc', 'data_reduction_proxy/content/browser/data_reduction_proxy_debug_resource_throttle_unittest.cc', 'data_reduction_proxy/content/browser/data_reduction_proxy_debug_ui_manager_unittest.cc',
diff --git a/components/cronet.gypi b/components/cronet.gypi index 1b8894b..71d2794 100644 --- a/components/cronet.gypi +++ b/components/cronet.gypi
@@ -446,36 +446,6 @@ 'includes': [ '../build/java_apk.gypi' ], }, { - 'target_name': 'cronet_unittests', - 'type': '<(gtest_target_type)', - 'dependencies': [ - 'cronet_static_small', - 'metrics', - '../base/base.gyp:base', - '../base/base.gyp:test_support_base', - '../testing/gtest.gyp:gtest', - '../testing/android/native_test.gyp:native_test_native_code', - ], - 'sources': [ - 'cronet/run_all_unittests.cc', - 'cronet/url_request_context_config_unittest.cc', - 'cronet/histogram_manager_unittest.cc', - ], - }, - { - 'target_name': 'cronet_unittests_apk', - 'type': 'none', - 'dependencies': [ - 'cronet_unittests', - ], - 'variables': { - 'test_suite_name': 'cronet_unittests', - }, - 'includes': [ - '../build/apk_test.gypi', - ], - }, - { 'target_name': 'cronet_package', 'type': 'none', 'dependencies': [
diff --git a/components/cronet/android/cronet_url_request_context_adapter.cc b/components/cronet/android/cronet_url_request_context_adapter.cc index 67dad4e..0e6d9f02 100644 --- a/components/cronet/android/cronet_url_request_context_adapter.cc +++ b/components/cronet/android/cronet_url_request_context_adapter.cc
@@ -171,7 +171,7 @@ GetNetworkTaskRunner()->PostTask( FROM_HERE, base::Bind(&CronetURLRequestContextAdapter::InitializeOnNetworkThread, - base::Unretained(this), Passed(&context_config_), + base::Unretained(this), base::Passed(&context_config_), jcaller_ref)); }
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java index 8301ac1..349b0030 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java
@@ -38,12 +38,8 @@ builder.addQuicHint(QuicTestServer.getServerHost(), QuicTestServer.getServerPort(), QuicTestServer.getServerPort()); - JSONObject quicParams = new JSONObject() - .put("connection_options", "PACE,IW10,FOO,DEADBEEF") - .put("store_server_configs_in_properties", true) - .put("delay_tcp_race", true) - .put("max_number_of_lossy_connections", 10) - .put("packet_loss_threshold", 0.5); + JSONObject quicParams = + new JSONObject().put("connection_options", "PACE,IW10,FOO,DEADBEEF"); JSONObject experimentalOptions = new JSONObject().put("QUIC", quicParams); builder.setExperimentalOptions(experimentalOptions.toString());
diff --git a/components/cronet/android/url_request_adapter.cc b/components/cronet/android/url_request_adapter.cc index 43fb8f4..3195c27 100644 --- a/components/cronet/android/url_request_adapter.cc +++ b/components/cronet/android/url_request_adapter.cc
@@ -86,11 +86,8 @@ memcpy(buf.get(), bytes, bytes_len); context_->PostTaskToNetworkThread( FROM_HERE, - base::Bind(&URLRequestAdapter::OnAppendChunk, - base::Unretained(this), - Passed(buf.Pass()), - bytes_len, - is_last_chunk)); + base::Bind(&URLRequestAdapter::OnAppendChunk, base::Unretained(this), + base::Passed(&buf), bytes_len, is_last_chunk)); } std::string URLRequestAdapter::GetHeader(const std::string& name) const {
diff --git a/components/cronet/run_all_unittests.cc b/components/cronet/run_all_unittests.cc deleted file mode 100644 index caf318b3..0000000 --- a/components/cronet/run_all_unittests.cc +++ /dev/null
@@ -1,14 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/bind.h" -#include "base/test/launcher/unit_test_launcher.h" -#include "base/test/test_suite.h" - -int main(int argc, char** argv) { - base::TestSuite test_suite(argc, argv); - return base::LaunchUnitTests( - argc, argv, - base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite))); -}
diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc index ef94d0d..5cd24b8 100644 --- a/components/cronet/url_request_context_config.cc +++ b/components/cronet/url_request_context_config.cc
@@ -22,12 +22,6 @@ // TODO(xunjieli): Refactor constants in io_thread.cc. const char kQuicFieldTrialName[] = "QUIC"; const char kQuicConnectionOptions[] = "connection_options"; -const char kQuicStoreServerConfigsInProperties[] = - "store_server_configs_in_properties"; -const char kQuicDelayTcpRace[] = "delay_tcp_race"; -const char kQuicMaxNumberOfLossyConnections[] = - "max_number_of_lossy_connections"; -const char kQuicPacketLossThreshold[] = "packet_loss_threshold"; // Using a reference to scoped_ptr is unavoidable because of the semantics of // RegisterCustomField. @@ -47,7 +41,6 @@ if (experimental_options.empty()) return; - DVLOG(1) << "Experimental Options:" << experimental_options; scoped_ptr<base::Value> options = base::JSONReader::Read(experimental_options); @@ -74,32 +67,6 @@ context_builder->set_quic_connection_options( net::QuicUtils::ParseQuicConnectionOptions(quic_connection_options)); } - - bool quic_store_server_configs_in_properties = false; - if (quic_args->GetBoolean(kQuicStoreServerConfigsInProperties, - &quic_store_server_configs_in_properties)) { - context_builder->set_quic_store_server_configs_in_properties( - quic_store_server_configs_in_properties); - } - - bool quic_delay_tcp_race = false; - if (quic_args->GetBoolean(kQuicDelayTcpRace, &quic_delay_tcp_race)) { - context_builder->set_quic_delay_tcp_race(quic_delay_tcp_race); - } - - int quic_max_number_of_lossy_connections = 0; - if (quic_args->GetInteger(kQuicMaxNumberOfLossyConnections, - &quic_max_number_of_lossy_connections)) { - context_builder->set_quic_max_number_of_lossy_connections( - quic_max_number_of_lossy_connections); - } - - double quic_packet_loss_threshold = 0.0; - if (quic_args->GetDouble(kQuicPacketLossThreshold, - &quic_packet_loss_threshold)) { - context_builder->set_quic_packet_loss_threshold( - quic_packet_loss_threshold); - } } }
diff --git a/components/cronet/url_request_context_config_unittest.cc b/components/cronet/url_request_context_config_unittest.cc deleted file mode 100644 index ac4ace5..0000000 --- a/components/cronet/url_request_context_config_unittest.cc +++ /dev/null
@@ -1,62 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "components/cronet/url_request_context_config.h" - -#include "net/http/http_network_session.h" -#include "net/proxy/proxy_config.h" -#include "net/proxy/proxy_config_service_fixed.h" -#include "net/url_request/url_request_context.h" -#include "net/url_request/url_request_context_builder.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace cronet { - -TEST(URLRequestContextConfigTest, SetQuicExperimentalOptions) { - URLRequestContextConfig config; - - std::string args = - "{\"QUIC_HINTS\":[{\"QUIC_HINT_ALT_PORT\":6121,\"QUIC_HINT_PORT\":6121," - "\"QUIC_HINT_HOST\":\"test.example.com\"}]," - "\"HTTP_CACHE\":\"HTTP_CACHE_DISK\",\"ENABLE_SDCH\":false," - "\"ENABLE_LEGACY_MODE\":false,\"HTTP_CACHE_MAX_SIZE\":1024000," - "\"NATIVE_LIBRARY_NAME\":\"cronet_tests\",\"USER_AGENT\":\"fake agent\"," - "\"STORAGE_PATH\":" - "\"\\/data\\/data\\/org.chromium.net\\/app_cronet_test\\/test_storage\"," - "\"ENABLE_SPDY\":true," - "\"ENABLE_QUIC\":true,\"LOAD_DISABLE_CACHE\":true," - "\"EXPERIMENTAL_OPTIONS\":" - "\"{\\\"QUIC\\\":{\\\"store_server_configs_in_properties\\\":true," - "\\\"delay_tcp_race\\\":true," - "\\\"max_number_of_lossy_connections\\\":10," - "\\\"packet_loss_threshold\\\":0.5," - "\\\"connection_options\\\":\\\"TIME,TBBR,REJ\\\"}}\"}"; - config.LoadFromJSON(args); - net::URLRequestContextBuilder builder; - config.ConfigureURLRequestContextBuilder(&builder); - // Set a ProxyConfigService to avoid DCHECK failure when building. - builder.set_proxy_config_service(make_scoped_ptr( - new net::ProxyConfigServiceFixed(net::ProxyConfig::CreateDirect()))); - scoped_ptr<net::URLRequestContext> context(builder.Build()); - const net::HttpNetworkSession::Params* params = - context->GetNetworkSessionParams(); - // Check Quic Connection options. - net::QuicTagVector quic_connection_options; - quic_connection_options.push_back(net::kTIME); - quic_connection_options.push_back(net::kTBBR); - quic_connection_options.push_back(net::kREJ); - EXPECT_EQ(quic_connection_options, params->quic_connection_options); - - // Check store_server_configs_in_properties. - EXPECT_TRUE(params->quic_store_server_configs_in_properties); - - // Check delay_tcp_race. - EXPECT_TRUE(params->quic_delay_tcp_race); - - // Check max_number_of_lossy_connections and packet_loss_threshold. - EXPECT_EQ(10, params->quic_max_number_of_lossy_connections); - EXPECT_FLOAT_EQ(0.5f, params->quic_packet_loss_threshold); -} - -} // namespace cronet
diff --git a/components/gcm_driver/fake_gcm_client.cc b/components/gcm_driver/fake_gcm_client.cc index e650009..6b71ebb 100644 --- a/components/gcm_driver/fake_gcm_client.cc +++ b/components/gcm_driver/fake_gcm_client.cc
@@ -4,6 +4,8 @@ #include "components/gcm_driver/fake_gcm_client.h" +#include <algorithm> + #include "base/bind.h" #include "base/location.h" #include "base/logging.h"
diff --git a/components/invalidation/impl/mock_ack_handler.cc b/components/invalidation/impl/mock_ack_handler.cc index 859c77a..a0fbd69 100644 --- a/components/invalidation/impl/mock_ack_handler.cc +++ b/components/invalidation/impl/mock_ack_handler.cc
@@ -4,6 +4,8 @@ #include "components/invalidation/impl/mock_ack_handler.h" +#include <algorithm> + #include "base/thread_task_runner_handle.h" #include "components/invalidation/public/ack_handle.h" #include "components/invalidation/public/invalidation.h"
diff --git a/components/memory_pressure/filtered_memory_pressure_calculator.cc b/components/memory_pressure/filtered_memory_pressure_calculator.cc index bf10f5a..ce4e6071 100644 --- a/components/memory_pressure/filtered_memory_pressure_calculator.cc +++ b/components/memory_pressure/filtered_memory_pressure_calculator.cc
@@ -4,6 +4,7 @@ #include "components/memory_pressure/filtered_memory_pressure_calculator.h" +#include <algorithm> #include "base/time/tick_clock.h" namespace memory_pressure {
diff --git a/components/mus/example/window_type_launcher/main.cc b/components/mus/example/window_type_launcher/main.cc index 9cecc39c..c2e94f9 100644 --- a/components/mus/example/window_type_launcher/main.cc +++ b/components/mus/example/window_type_launcher/main.cc
@@ -61,19 +61,17 @@ io_thread.task_runner().get(), mojo::embedder::ScopedPlatformHandle()); - mojo::InterfaceRequest<mojo::Application> application_request; - scoped_ptr<mojo::runner::RunnerConnection> connection( - mojo::runner::RunnerConnection::ConnectToRunner(&application_request)); - + base::MessageLoop loop(mojo::common::MessagePumpMojo::Create()); WindowTypeLauncher delegate; { - base::MessageLoop loop(mojo::common::MessagePumpMojo::Create()); + mojo::InterfaceRequest<mojo::Application> application_request; + scoped_ptr<mojo::runner::RunnerConnection> connection( + mojo::runner::RunnerConnection::ConnectToRunner( + &application_request, mojo::ScopedMessagePipeHandle())); mojo::ApplicationImpl impl(&delegate, application_request.Pass()); loop.Run(); } - connection.reset(); - mojo::embedder::ShutdownIPCSupport(); }
diff --git a/components/nacl/renderer/histogram.cc b/components/nacl/renderer/histogram.cc index 7f14657..970bf73 100644 --- a/components/nacl/renderer/histogram.cc +++ b/components/nacl/renderer/histogram.cc
@@ -4,6 +4,8 @@ #include "components/nacl/renderer/histogram.h" +#include <algorithm> + #include "base/metrics/histogram.h" namespace nacl {
diff --git a/components/proximity_auth/metrics.cc b/components/proximity_auth/metrics.cc index 7b4db8f..1e388032 100644 --- a/components/proximity_auth/metrics.cc +++ b/components/proximity_auth/metrics.cc
@@ -4,6 +4,8 @@ #include "components/proximity_auth/metrics.h" +#include <algorithm> + #include "base/logging.h" #include "base/md5.h" #include "base/metrics/histogram_macros.h"
diff --git a/components/proximity_auth/screenlock_bridge.h b/components/proximity_auth/screenlock_bridge.h index 9b47392..21a32dd7 100644 --- a/components/proximity_auth/screenlock_bridge.h +++ b/components/proximity_auth/screenlock_bridge.h
@@ -5,6 +5,7 @@ #ifndef COMPONENTS_PROXIMITY_AUTH_SCREENLOCK_BRIDGE_H_ #define COMPONENTS_PROXIMITY_AUTH_SCREENLOCK_BRIDGE_H_ +#include <memory> #include <string> #include "base/basictypes.h" @@ -172,7 +173,7 @@ private: friend struct base::DefaultLazyInstanceTraits<ScreenlockBridge>; - friend struct base::DefaultDeleter<ScreenlockBridge>; + friend std::default_delete<ScreenlockBridge>; ScreenlockBridge(); ~ScreenlockBridge();
diff --git a/components/rappor/byte_vector_utils.cc b/components/rappor/byte_vector_utils.cc index 433f97a..ca64fd18 100644 --- a/components/rappor/byte_vector_utils.cc +++ b/components/rappor/byte_vector_utils.cc
@@ -4,6 +4,7 @@ #include "components/rappor/byte_vector_utils.h" +#include <algorithm> #include <string> #include "base/logging.h"
diff --git a/components/safe_json/json_sanitizer.cc b/components/safe_json/json_sanitizer.cc index e00043e..43ede85f 100644 --- a/components/safe_json/json_sanitizer.cc +++ b/components/safe_json/json_sanitizer.cc
@@ -8,6 +8,8 @@ #error Build json_sanitizer_android.cc instead of this file on Android. #endif +#include <memory> + #include "base/bind.h" #include "base/callback.h" #include "base/json/json_writer.h" @@ -27,7 +29,7 @@ const StringCallback& error_callback); private: - friend struct base::DefaultDeleter<OopJsonSanitizer>; + friend std::default_delete<OopJsonSanitizer>; ~OopJsonSanitizer() {} void OnParseSuccess(scoped_ptr<base::Value> value);
diff --git a/components/safe_json/safe_json_parser_android.h b/components/safe_json/safe_json_parser_android.h index 2058731..ba29698a 100644 --- a/components/safe_json/safe_json_parser_android.h +++ b/components/safe_json/safe_json_parser_android.h
@@ -5,7 +5,8 @@ #ifndef COMPONENTS_SAFE_JSON_SAFE_JSON_PARSER_ANDROID_H_ #define COMPONENTS_SAFE_JSON_SAFE_JSON_PARSER_ANDROID_H_ -#include "base/memory/scoped_ptr.h" +#include <memory> + #include "components/safe_json/safe_json_parser.h" namespace safe_json { @@ -19,7 +20,7 @@ const ErrorCallback& error_callback); private: - friend struct base::DefaultDeleter<SafeJsonParserAndroid>; + friend std::default_delete<SafeJsonParserAndroid>; ~SafeJsonParserAndroid() override;
diff --git a/components/search_provider_logos/google_logo_api.cc b/components/search_provider_logos/google_logo_api.cc index 83542e9..227f9c94 100644 --- a/components/search_provider_logos/google_logo_api.cc +++ b/components/search_provider_logos/google_logo_api.cc
@@ -4,6 +4,8 @@ #include "components/search_provider_logos/google_logo_api.h" +#include <algorithm> + #include "base/base64.h" #include "base/json/json_reader.h" #include "base/memory/ref_counted_memory.h"
diff --git a/components/test_runner/test_plugin.cc b/components/test_runner/test_plugin.cc index fed9a2c8..76f608c 100644 --- a/components/test_runner/test_plugin.cc +++ b/components/test_runner/test_plugin.cc
@@ -312,11 +312,9 @@ gpu::Mailbox mailbox; context_->genMailboxCHROMIUM(mailbox.name); context_->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); - const blink::WGC3Duint64 fence_sync = context_->insertFenceSyncCHROMIUM(); context_->flush(); - gpu::SyncToken sync_token; - context_->genSyncTokenCHROMIUM(fence_sync, sync_token.GetData()); + context_->insertSyncPoint(sync_token.GetData()); texture_mailbox_ = cc::TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D); } else { scoped_ptr<cc::SharedBitmap> bitmap =
diff --git a/components/webcrypto/webcrypto_impl.cc b/components/webcrypto/webcrypto_impl.cc index 71d4b2b..0647b77d 100644 --- a/components/webcrypto/webcrypto_impl.cc +++ b/components/webcrypto/webcrypto_impl.cc
@@ -385,7 +385,7 @@ webcrypto::Encrypt(state->algorithm, state->key, webcrypto::CryptoData(state->data), &state->buffer); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoEncryptReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoEncryptReply, base::Passed(&passed_state))); } void DoDecryptReply(scoped_ptr<DecryptState> state) { @@ -400,7 +400,7 @@ webcrypto::Decrypt(state->algorithm, state->key, webcrypto::CryptoData(state->data), &state->buffer); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoDecryptReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoDecryptReply, base::Passed(&passed_state))); } void DoDigestReply(scoped_ptr<DigestState> state) { @@ -414,7 +414,7 @@ state->status = webcrypto::Digest( state->algorithm, webcrypto::CryptoData(state->data), &state->buffer); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoDigestReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoDigestReply, base::Passed(&passed_state))); } void DoGenerateKeyReply(scoped_ptr<GenerateKeyState> state) { @@ -433,7 +433,7 @@ webcrypto::GenerateKey(state->algorithm, state->extractable, state->usages, &state->generate_key_result); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoGenerateKeyReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoGenerateKeyReply, base::Passed(&passed_state))); } void DoImportKeyReply(scoped_ptr<ImportKeyState> state) { @@ -454,7 +454,7 @@ } state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoImportKeyReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoImportKeyReply, base::Passed(&passed_state))); } void DoExportKeyReply(scoped_ptr<ExportKeyState> state) { @@ -479,7 +479,7 @@ state->status = webcrypto::ExportKey(state->format, state->key, &state->buffer); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoExportKeyReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoExportKeyReply, base::Passed(&passed_state))); } void DoSignReply(scoped_ptr<SignState> state) { @@ -495,7 +495,7 @@ webcrypto::CryptoData(state->data), &state->buffer); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoSignReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoSignReply, base::Passed(&passed_state))); } void DoVerifyReply(scoped_ptr<VerifySignatureState> state) { @@ -515,7 +515,7 @@ webcrypto::CryptoData(state->data), &state->verify_result); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoVerifyReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoVerifyReply, base::Passed(&passed_state))); } void DoWrapKeyReply(scoped_ptr<WrapKeyState> state) { @@ -531,7 +531,7 @@ state->wrap_algorithm, &state->buffer); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoWrapKeyReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoWrapKeyReply, base::Passed(&passed_state))); } void DoUnwrapKeyReply(scoped_ptr<UnwrapKeyState> state) { @@ -549,7 +549,7 @@ &state->unwrapped_key); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoUnwrapKeyReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoUnwrapKeyReply, base::Passed(&passed_state))); } void DoDeriveBitsReply(scoped_ptr<DeriveBitsState> state) { @@ -565,7 +565,7 @@ webcrypto::DeriveBits(state->algorithm, state->base_key, state->length_bits, &state->derived_bytes); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoDeriveBitsReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoDeriveBitsReply, base::Passed(&passed_state))); } void DoDeriveKeyReply(scoped_ptr<DeriveKeyState> state) { @@ -581,7 +581,7 @@ state->key_length_algorithm, state->extractable, state->usages, &state->derived_key); state->origin_thread->PostTask( - FROM_HERE, base::Bind(DoDeriveKeyReply, Passed(&passed_state))); + FROM_HERE, base::Bind(DoDeriveKeyReply, base::Passed(&passed_state))); } } // namespace @@ -601,8 +601,8 @@ scoped_ptr<EncryptState> state( new EncryptState(algorithm, key, data, data_size, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoEncrypt, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoEncrypt, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -616,8 +616,8 @@ scoped_ptr<DecryptState> state( new DecryptState(algorithm, key, data, data_size, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoDecrypt, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoDecrypt, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -631,7 +631,7 @@ scoped_ptr<DigestState> state(new DigestState( algorithm, blink::WebCryptoKey::createNull(), data, data_size, result)); if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoDigest, Passed(&state)))) { + base::Bind(DoDigest, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -644,8 +644,8 @@ scoped_ptr<GenerateKeyState> state( new GenerateKeyState(algorithm, extractable, usages, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoGenerateKey, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoGenerateKey, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -659,8 +659,8 @@ blink::WebCryptoResult result) { scoped_ptr<ImportKeyState> state(new ImportKeyState( format, key_data, key_data_size, algorithm, extractable, usages, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoImportKey, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoImportKey, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -669,8 +669,8 @@ const blink::WebCryptoKey& key, blink::WebCryptoResult result) { scoped_ptr<ExportKeyState> state(new ExportKeyState(format, key, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoExportKey, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoExportKey, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -683,7 +683,7 @@ scoped_ptr<SignState> state( new SignState(algorithm, key, data, data_size, result)); if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoSign, Passed(&state)))) { + base::Bind(DoSign, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -698,7 +698,7 @@ scoped_ptr<VerifySignatureState> state(new VerifySignatureState( algorithm, key, signature, signature_size, data, data_size, result)); if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoVerify, Passed(&state)))) { + base::Bind(DoVerify, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -710,8 +710,8 @@ blink::WebCryptoResult result) { scoped_ptr<WrapKeyState> state( new WrapKeyState(format, key, wrapping_key, wrap_algorithm, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoWrapKey, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoWrapKey, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -729,8 +729,8 @@ scoped_ptr<UnwrapKeyState> state(new UnwrapKeyState( format, wrapped_key, wrapped_key_size, wrapping_key, unwrap_algorithm, unwrapped_key_algorithm, extractable, usages, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoUnwrapKey, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoUnwrapKey, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -741,8 +741,8 @@ blink::WebCryptoResult result) { scoped_ptr<DeriveBitsState> state( new DeriveBitsState(algorithm, base_key, length_bits, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoDeriveBits, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoDeriveBits, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } } @@ -758,8 +758,8 @@ scoped_ptr<DeriveKeyState> state( new DeriveKeyState(algorithm, base_key, import_algorithm, key_length_algorithm, extractable, usages, result)); - if (!CryptoThreadPool::PostTask(FROM_HERE, - base::Bind(DoDeriveKey, Passed(&state)))) { + if (!CryptoThreadPool::PostTask( + FROM_HERE, base::Bind(DoDeriveKey, base::Passed(&state)))) { CompleteWithThreadPoolError(&result); } }
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index e98e681..68dc8d1 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -12,7 +12,10 @@ # internal content ones) should depend on the public one. visibility = [ "//content/public/browser:browser_sources" ] - configs += [ "//build/config:precompiled_headers" ] + configs += [ + "//build/config:precompiled_headers", + "//content/public/common:mojo_shell_client", + ] defines = [] libs = [] ldflags = [] @@ -104,7 +107,10 @@ ], ".") - defines += [ "MOJO_SHELL_CLIENT" ] + sources += [ + "mojo/mojo_shell_client_host.cc", + "mojo/mojo_shell_client_host.h", + ] # Non-iOS deps. deps += [
diff --git a/content/browser/child_process_launcher.cc b/content/browser/child_process_launcher.cc index 830d5b93..e54cada9 100644 --- a/content/browser/child_process_launcher.cc +++ b/content/browser/child_process_launcher.cc
@@ -48,17 +48,6 @@ #include "gin/v8_initializer.h" #endif -#if defined(MOJO_SHELL_CLIENT) -#include "base/thread_task_runner_handle.h" -#include "content/public/common/mojo_shell_connection.h" -#include "mojo/application/public/cpp/application_impl.h" -#include "mojo/converters/network/network_type_converters.h" -#include "mojo/shell/application_manager.mojom.h" -#include "third_party/mojo/src/mojo/edk/embedder/embedder.h" -#include "third_party/mojo/src/mojo/edk/embedder/platform_channel_pair.h" -#include "third_party/mojo/src/mojo/edk/embedder/scoped_platform_handle.h" -#endif - namespace content { namespace { @@ -333,10 +322,6 @@ #endif } -#if defined(MOJO_SHELL_CLIENT) -void DidCreateChannel(mojo::embedder::ChannelInfo* info) {} -#endif - } // namespace ChildProcessLauncher::ChildProcessLauncher( @@ -380,10 +365,6 @@ int child_process_id) { DCHECK(CalledOnValidThread()); -#if defined(MOJO_SHELL_CLIENT) - CreateMojoShellChannel(cmd_line, child_process_id); -#endif - #if defined(OS_ANDROID) // Android only supports renderer, sandboxed utility and gpu. std::string process_type = @@ -523,46 +504,6 @@ } } -#if defined(MOJO_SHELL_CLIENT) -void ChildProcessLauncher::CreateMojoShellChannel( - base::CommandLine* command_line, - int child_process_id) { - // Some process types get created before the main message loop. - if (!MojoShellConnection::Get()) - return; - - // Create the channel to be shared with the target process. - mojo::embedder::HandlePassingInformation handle_passing_info; - mojo::embedder::PlatformChannelPair platform_channel_pair; - - // Give one end to the shell so that it can create an instance. - mojo::embedder::ScopedPlatformHandle platform_channel = - platform_channel_pair.PassServerHandle(); - mojo::ScopedMessagePipeHandle handle(mojo::embedder::CreateChannel( - platform_channel.Pass(), base::Bind(&DidCreateChannel), - base::ThreadTaskRunnerHandle::Get())); - mojo::shell::mojom::ApplicationManagerPtr application_manager; - MojoShellConnection::Get()->GetApplication()->ConnectToService( - mojo::URLRequest::From(std::string("mojo:shell")), - &application_manager); - // The content of the URL/qualifier we pass is actually meaningless, it's only - // important that they're unique per process. - // TODO(beng): We need to specify a restrictive CapabilityFilter here that - // matches the needs of the target process. Figure out where that - // specification is best determined (not here, this is a common - // chokepoint for all process types) and how to wire it through. - // http://crbug.com/555393 - application_manager->CreateInstanceForHandle( - mojo::ScopedHandle(mojo::Handle(handle.release().value())), - "exe:chrome_renderer", // See above about how this string is meaningless. - base::IntToString(child_process_id)); - - // Put the other end on the command line used to launch the target. - platform_channel_pair.PrepareToPassClientHandleToChildProcess( - command_line, &handle_passing_info); -} -#endif // defined(MOJO_SHELL_CLIENT) - bool ChildProcessLauncher::IsStarting() { // TODO(crbug.com/469248): This fails in some tests. // DCHECK(CalledOnValidThread());
diff --git a/content/browser/compositor/buffer_queue.cc b/content/browser/compositor/buffer_queue.cc index b9b750ac..c827416 100644 --- a/content/browser/compositor/buffer_queue.cc +++ b/content/browser/compositor/buffer_queue.cc
@@ -81,7 +81,7 @@ } void BufferQueue::SwapBuffers(const gfx::Rect& damage) { - if (damage != gfx::Rect(size_)) { + if (!damage.IsEmpty() && damage != gfx::Rect(size_)) { // We must have a frame available to copy from. DCHECK(!in_flight_surfaces_.empty() || displayed_surface_.texture); unsigned int texture_id = !in_flight_surfaces_.empty()
diff --git a/content/browser/indexed_db/indexed_db_database.cc b/content/browser/indexed_db/indexed_db_database.cc index 5334541..ffbf464 100644 --- a/content/browser/indexed_db/indexed_db_database.cc +++ b/content/browser/indexed_db/indexed_db_database.cc
@@ -552,7 +552,7 @@ transaction->ScheduleTask(base::Bind( &IndexedDBDatabase::GetAllOperation, this, object_store_id, index_id, - Passed(&key_range), + base::Passed(&key_range), key_only ? indexed_db::CURSOR_KEY_ONLY : indexed_db::CURSOR_KEY_AND_VALUE, max_count, callbacks)); } @@ -572,11 +572,8 @@ return; transaction->ScheduleTask(base::Bind( - &IndexedDBDatabase::GetOperation, - this, - object_store_id, - index_id, - Passed(&key_range), + &IndexedDBDatabase::GetOperation, this, object_store_id, index_id, + base::Passed(&key_range), key_only ? indexed_db::CURSOR_KEY_ONLY : indexed_db::CURSOR_KEY_AND_VALUE, callbacks)); }
diff --git a/content/browser/mojo/mojo_shell_client_host.cc b/content/browser/mojo/mojo_shell_client_host.cc new file mode 100644 index 0000000..f58065b --- /dev/null +++ b/content/browser/mojo/mojo_shell_client_host.cc
@@ -0,0 +1,72 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/thread_task_runner_handle.h" +#include "content/browser/mojo/mojo_shell_client_host.h" +#include "content/common/mojo/mojo_messages.h" +#include "content/public/common/mojo_shell_connection.h" +#include "ipc/ipc_sender.h" +#include "mojo/application/public/cpp/application_impl.h" +#include "mojo/converters/network/network_type_converters.h" +#include "mojo/shell/application_manager.mojom.h" +#include "third_party/mojo/src/mojo/edk/embedder/embedder.h" +#include "third_party/mojo/src/mojo/edk/embedder/platform_channel_pair.h" +#include "third_party/mojo/src/mojo/edk/embedder/scoped_platform_handle.h" + +namespace content { +namespace { +void DidCreateChannel(mojo::embedder::ChannelInfo* info) {} + +base::PlatformFile PlatformFileFromScopedPlatformHandle( + mojo::embedder::ScopedPlatformHandle handle) { +#if defined(OS_POSIX) + return handle.release().fd; +#elif defined(OS_WIN) + return handle.release().handle; +#endif +} + +} // namespace + +void RegisterChildWithExternalShell(int child_process_id, + base::ProcessHandle process_handle, + IPC::Sender* sender) { + // Some process types get created before the main message loop. + if (!MojoShellConnection::Get()) + return; + + // Create the channel to be shared with the target process. + mojo::embedder::HandlePassingInformation handle_passing_info; + mojo::embedder::PlatformChannelPair platform_channel_pair; + + // Give one end to the shell so that it can create an instance. + mojo::embedder::ScopedPlatformHandle platform_channel = + platform_channel_pair.PassServerHandle(); + mojo::ScopedMessagePipeHandle handle(mojo::embedder::CreateChannel( + platform_channel.Pass(), base::Bind(&DidCreateChannel), + base::ThreadTaskRunnerHandle::Get())); + mojo::shell::mojom::ApplicationManagerPtr application_manager; + MojoShellConnection::Get()->GetApplication()->ConnectToService( + mojo::URLRequest::From(std::string("mojo:shell")), + &application_manager); + // The content of the URL/qualifier we pass is actually meaningless, it's only + // important that they're unique per process. + // TODO(beng): We need to specify a restrictive CapabilityFilter here that + // matches the needs of the target process. Figure out where that + // specification is best determined (not here, this is a common + // chokepoint for all process types) and how to wire it through. + // http://crbug.com/555393 + application_manager->CreateInstanceForHandle( + mojo::ScopedHandle(mojo::Handle(handle.release().value())), + "exe:chrome_renderer", // See above about how this string is meaningless. + base::IntToString(child_process_id)); + + // Send the other end to the child via Chrome IPC. + base::PlatformFile client_file = PlatformFileFromScopedPlatformHandle( + platform_channel_pair.PassClientHandle()); + sender->Send(new MojoMsg_BindExternalMojoShellHandle( + IPC::GetFileHandleForProcess(client_file, process_handle, true))); +} + +} // namespace content
diff --git a/content/browser/mojo/mojo_shell_client_host.h b/content/browser/mojo/mojo_shell_client_host.h new file mode 100644 index 0000000..3f2b4da --- /dev/null +++ b/content/browser/mojo/mojo_shell_client_host.h
@@ -0,0 +1,27 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_BROWSER_MOJO_MOJO_SHELL_CLIENT_HOST_H_ +#define CONTENT_BROWSER_MOJO_MOJO_SHELL_CLIENT_HOST_H_ + +#include "base/process/process_handle.h" + +namespace IPC { +class Sender; +} + +namespace content { + +// Creates a communication channel between the external Mojo shell and the +// child. The server handle of this channel is shared with the external shell +// via Mojo IPC and the client handle is shared with the child via Chrome IPC. +// |child_process_id| is used to uniquify the child in the external shell's +// instance map. +void RegisterChildWithExternalShell(int child_process_id, + base::ProcessHandle process_handle, + IPC::Sender* sender); + +} // namespace content + +#endif // CONTENT_BROWSER_MOJO_MOJO_SHELL_CLIENT_HOST_H_
diff --git a/content/browser/renderer_host/p2p/socket_host.cc b/content/browser/renderer_host/p2p/socket_host.cc index f2e76c37..fefc4a5 100644 --- a/content/browser/renderer_host/p2p/socket_host.cc +++ b/content/browser/renderer_host/p2p/socket_host.cc
@@ -638,14 +638,11 @@ // Posts to the IO thread as the data members should be accessed on the IO // thread only. - BrowserThread::PostTask(BrowserThread::IO, - FROM_HERE, - base::Bind(&P2PSocketHost::DumpRtpPacketOnIOThread, - weak_ptr_factory_.GetWeakPtr(), - Passed(&header_buffer), - header_length, - rtp_packet_length, - incoming)); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::Bind(&P2PSocketHost::DumpRtpPacketOnIOThread, + weak_ptr_factory_.GetWeakPtr(), base::Passed(&header_buffer), + header_length, rtp_packet_length, incoming)); } void P2PSocketHost::DumpRtpPacketOnIOThread(scoped_ptr<uint8[]> packet_header, @@ -661,13 +658,10 @@ } // |packet_dump_callback_| must be called on the UI thread. - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(packet_dump_callback_, - Passed(&packet_header), - header_length, - packet_length, - incoming)); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::Bind(packet_dump_callback_, base::Passed(&packet_header), + header_length, packet_length, incoming)); } void P2PSocketHost::IncrementDelayedPackets() {
diff --git a/content/browser/renderer_host/pepper/pepper_truetype_font_win.cc b/content/browser/renderer_host/pepper/pepper_truetype_font_win.cc index 633a326..5d572cd 100644 --- a/content/browser/renderer_host/pepper/pepper_truetype_font_win.cc +++ b/content/browser/renderer_host/pepper/pepper_truetype_font_win.cc
@@ -5,6 +5,7 @@ #include "content/browser/renderer_host/pepper/pepper_truetype_font.h" #include <windows.h> +#include <algorithm> #include <set> #include "base/compiler_specific.h"
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 75334a2..0aa3ee339 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -221,6 +221,10 @@ #include "content/common/media/media_stream_messages.h" #endif +#if defined(MOJO_SHELL_CLIENT) +#include "content/browser/mojo/mojo_shell_client_host.h" +#endif + #if defined(OS_WIN) #define IntToStringType base::IntToString16 #else @@ -2450,6 +2454,12 @@ Source<RenderProcessHost>(this), NotificationService::NoDetails()); +#if defined(MOJO_SHELL_CLIENT) + // Send a handle that the external Mojo shell can use to pass an Application + // request to the child. + RegisterChildWithExternalShell(id_, GetHandle(), this); +#endif + // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/465841 // is fixed. tracked_objects::ScopedTracker tracking_profile4(
diff --git a/content/browser/service_worker/service_worker_process_manager.cc b/content/browser/service_worker/service_worker_process_manager.cc index a310bcc1..fbeaead 100644 --- a/content/browser/service_worker/service_worker_process_manager.cc +++ b/content/browser/service_worker/service_worker_process_manager.cc
@@ -267,13 +267,13 @@ } // namespace content -namespace base { +namespace std { // Destroying ServiceWorkerProcessManagers only on the UI thread allows the // member WeakPtr to safely guard the object's lifetime when used on that // thread. -void DefaultDeleter<content::ServiceWorkerProcessManager>::operator()( +void default_delete<content::ServiceWorkerProcessManager>::operator()( content::ServiceWorkerProcessManager* ptr) const { content::BrowserThread::DeleteSoon( content::BrowserThread::UI, FROM_HERE, ptr); } -} // namespace base +} // namespace std
diff --git a/content/browser/service_worker/service_worker_process_manager.h b/content/browser/service_worker/service_worker_process_manager.h index 10a43e8fa..0cb370b1 100644 --- a/content/browser/service_worker/service_worker_process_manager.h +++ b/content/browser/service_worker/service_worker_process_manager.h
@@ -6,6 +6,7 @@ #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_PROCESS_MANAGER_H_ #include <map> +#include <memory> #include <vector> #include "base/callback.h" @@ -130,12 +131,12 @@ } // namespace content -namespace base { +namespace std { // Specialized to post the deletion to the UI thread. template <> -struct CONTENT_EXPORT DefaultDeleter<content::ServiceWorkerProcessManager> { +struct CONTENT_EXPORT default_delete<content::ServiceWorkerProcessManager> { void operator()(content::ServiceWorkerProcessManager* ptr) const; }; -} // namespace base +} // namespace std #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_PROCESS_MANAGER_H_
diff --git a/content/browser/service_worker/service_worker_script_cache_map.cc b/content/browser/service_worker/service_worker_script_cache_map.cc index 51a62b3..3607240 100644 --- a/content/browser/service_worker/service_worker_script_cache_map.cc +++ b/content/browser/service_worker/service_worker_script_cache_map.cc
@@ -114,7 +114,7 @@ raw_writer->WriteMetadata( buffer.get(), data.size(), base::Bind(&ServiceWorkerScriptCacheMap::OnMetadataWritten, - weak_factory_.GetWeakPtr(), Passed(&writer), callback)); + weak_factory_.GetWeakPtr(), base::Passed(&writer), callback)); } void ServiceWorkerScriptCacheMap::ClearMetadata(
diff --git a/content/browser/speech/speech_recognition_manager_impl.h b/content/browser/speech/speech_recognition_manager_impl.h index 9b8da39f..634cd79 100644 --- a/content/browser/speech/speech_recognition_manager_impl.h +++ b/content/browser/speech/speech_recognition_manager_impl.h
@@ -6,6 +6,7 @@ #define CONTENT_BROWSER_SPEECH_SPEECH_RECOGNITION_MANAGER_IMPL_H_ #include <map> +#include <memory> #include <string> #include "base/basictypes.h" @@ -98,7 +99,7 @@ // BrowserMainLoop is the only one allowed to istantiate and free us. friend class BrowserMainLoop; // Needed for dtor. - friend struct base::DefaultDeleter<SpeechRecognitionManagerImpl>; + friend std::default_delete<SpeechRecognitionManagerImpl>; SpeechRecognitionManagerImpl(media::AudioManager* audio_manager, MediaStreamManager* media_stream_manager); ~SpeechRecognitionManagerImpl() override;
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn index 02dec55..3ebac31 100644 --- a/content/child/BUILD.gn +++ b/content/child/BUILD.gn
@@ -15,7 +15,10 @@ ".", "//content") - configs += [ "//build/config:precompiled_headers" ] + configs += [ + "//build/config:precompiled_headers", + "//content/public/common:mojo_shell_client", + ] public_deps = [ "//third_party/mojo/src/mojo/edk/system",
diff --git a/content/child/blob_storage/blob_consolidation.cc b/content/child/blob_storage/blob_consolidation.cc index 7bebdbc..4985059e 100644 --- a/content/child/blob_storage/blob_consolidation.cc +++ b/content/child/blob_storage/blob_consolidation.cc
@@ -2,10 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include <string> - #include "content/child/blob_storage/blob_consolidation.h" +#include <algorithm> +#include <string> + using storage::DataElement; using blink::WebThreadSafeData;
diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc index 01cf63a6..be915a0 100644 --- a/content/child/child_thread_impl.cc +++ b/content/child/child_thread_impl.cc
@@ -52,6 +52,7 @@ #include "content/child/websocket_dispatcher.h" #include "content/common/child_process_messages.h" #include "content/common/in_process_child_thread_params.h" +#include "content/common/mojo/mojo_messages.h" #include "content/public/common/content_switches.h" #include "ipc/attachment_broker.h" #include "ipc/attachment_broker_unprivileged.h" @@ -73,6 +74,10 @@ #include "ui/ozone/public/client_native_pixmap_factory.h" #endif +#if defined(MOJO_SHELL_CLIENT) +#include "content/common/mojo/mojo_shell_connection_impl.h" +#endif + using tracked_objects::ThreadData; namespace content { @@ -651,6 +656,8 @@ OnProfilingPhaseCompleted) IPC_MESSAGE_HANDLER(ChildProcessMsg_SetProcessBackgrounded, OnProcessBackgrounded) + IPC_MESSAGE_HANDLER(MojoMsg_BindExternalMojoShellHandle, + OnBindExternalMojoShellHandle) #if defined(USE_TCMALLOC) IPC_MESSAGE_HANDLER(ChildProcessMsg_GetTcmallocStats, OnGetTcmallocStats) #endif @@ -708,6 +715,21 @@ ThreadData::OnProfilingPhaseCompleted(profiling_phase); } +void ChildThreadImpl::OnBindExternalMojoShellHandle( + const IPC::PlatformFileForTransit& file) { +#if defined(MOJO_SHELL_CLIENT) +#if defined(OS_POSIX) + base::PlatformFile handle = file.fd; +#elif defined(OS_WIN) + base::PlatformFile handle = file; +#endif + mojo::ScopedMessagePipeHandle message_pipe = + mojo_shell_channel_init_.Init(handle, GetIOTaskRunner()); + DCHECK(message_pipe.is_valid()); + MojoShellConnectionImpl::CreateWithMessagePipe(message_pipe.Pass()); +#endif // defined(MOJO_SHELL_CLIENT) +} + #if defined(USE_TCMALLOC) void ChildThreadImpl::OnGetTcmallocStats() { std::string result;
diff --git a/content/child/child_thread_impl.h b/content/child/child_thread_impl.h index 2914b00d..83d07be4 100644 --- a/content/child/child_thread_impl.h +++ b/content/child/child_thread_impl.h
@@ -17,8 +17,10 @@ #include "content/child/mojo/mojo_application.h" #include "content/common/content_export.h" #include "content/common/message_router.h" +#include "content/common/mojo/channel_init.h" #include "content/public/child/child_thread.h" #include "ipc/ipc_message.h" // For IPC_MESSAGE_LOG_ENABLED. +#include "ipc/ipc_platform_file.h" namespace base { class MessageLoop; @@ -229,6 +231,7 @@ void OnSetProfilerStatus(tracked_objects::ThreadData::Status status); void OnGetChildProfilerData(int sequence_number, int current_profiling_phase); void OnProfilingPhaseCompleted(int profiling_phase); + void OnBindExternalMojoShellHandle(const IPC::PlatformFileForTransit& file); #ifdef IPC_MESSAGE_LOG_ENABLED void OnSetIPCLoggingEnabled(bool enable); #endif @@ -297,6 +300,8 @@ scoped_refptr<base::SequencedTaskRunner> browser_process_io_runner_; + ChannelInit mojo_shell_channel_init_; + base::WeakPtrFactory<ChildThreadImpl> channel_connected_factory_; DISALLOW_COPY_AND_ASSIGN(ChildThreadImpl);
diff --git a/content/child/service_worker/service_worker_provider_context.cc b/content/child/service_worker/service_worker_provider_context.cc index 9ef323e..bc14621 100644 --- a/content/child/service_worker/service_worker_provider_context.cc +++ b/content/child/service_worker/service_worker_provider_context.cc
@@ -92,7 +92,7 @@ scoped_ptr<ServiceWorkerHandleReference> active) override { DCHECK(!registration_); registration_ = registration.Pass(); - installing_ = active.Pass(); + installing_ = installing.Pass(); waiting_ = waiting.Pass(); active_ = active.Pass(); }
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn index be9766f7..fef64c5 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn
@@ -209,7 +209,7 @@ ] } - defines = [ "MOJO_SHELL_CLIENT" ] + defines = [] include_dirs = [] libs = [] ldflags = []
diff --git a/content/common/ax_content_node_data.cc b/content/common/ax_content_node_data.cc index 0c7359a..c7053b9 100644 --- a/content/common/ax_content_node_data.cc +++ b/content/common/ax_content_node_data.cc
@@ -2,9 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/strings/string_number_conversions.h" #include "content/common/ax_content_node_data.h" +#include <algorithm> + +#include "base/strings/string_number_conversions.h" + using base::IntToString; namespace content {
diff --git a/content/common/gpu/client/gl_helper_unittest.cc b/content/common/gpu/client/gl_helper_unittest.cc index 15b119c..e5382931 100644 --- a/content/common/gpu/client/gl_helper_unittest.cc +++ b/content/common/gpu/client/gl_helper_unittest.cc
@@ -1363,12 +1363,8 @@ context_->genMailboxCHROMIUM(mailbox.name); EXPECT_FALSE(mailbox.IsZero()); context_->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); - const blink::WGC3Duint64 fence_sync = context_->insertFenceSyncCHROMIUM(); - context_->shallowFlushCHROMIUM(); - gpu::SyncToken sync_token; - ASSERT_TRUE(context_->genSyncTokenCHROMIUM(fence_sync, - sync_token.GetData())); + ASSERT_TRUE(context_->insertSyncPoint(sync_token.GetData())); std::string message = base::StringPrintf( "input size: %dx%d "
diff --git a/content/common/gpu/client/gpu_context_tests.h b/content/common/gpu/client/gpu_context_tests.h index 372c34e..814f59a0 100644 --- a/content/common/gpu/client/gpu_context_tests.h +++ b/content/common/gpu/client/gpu_context_tests.h
@@ -23,9 +23,9 @@ } // These tests should time out if the callback doesn't get called. - void TestSignalSyncToken(const gpu::SyncToken& sync_token) { + void TestSignalSyncPoint(unsigned sync_point) { base::RunLoop run_loop; - context_support_->SignalSyncToken(sync_token, run_loop.QuitClosure()); + context_support_->SignalSyncPoint(sync_point, run_loop.QuitClosure()); run_loop.Run(); } @@ -40,39 +40,22 @@ } }; -CONTEXT_TEST_F(SignalTest, BasicSignalSyncTokenTest) { +CONTEXT_TEST_F(SignalTest, BasicSignalSyncPointTest) { if (!context_) return; - const blink::WGC3Duint64 fence_sync = context_->insertFenceSyncCHROMIUM(); - context_->shallowFlushCHROMIUM(); - gpu::SyncToken sync_token; - ASSERT_TRUE(context_->genSyncTokenCHROMIUM(fence_sync, sync_token.GetData())); - - TestSignalSyncToken(sync_token); + ASSERT_TRUE(context_->insertSyncPoint(sync_token.GetData())); + TestSignalSyncPoint(static_cast<unsigned>(sync_token.release_count())); }; -CONTEXT_TEST_F(SignalTest, EmptySignalSyncTokenTest) { +CONTEXT_TEST_F(SignalTest, InvalidSignalSyncPointTest) { if (!context_) return; // Signalling something that doesn't exist should run the callback // immediately. - gpu::SyncToken sync_token; - TestSignalSyncToken(sync_token); -}; - -CONTEXT_TEST_F(SignalTest, InvalidSignalSyncTokenTest) { - if (!context_) - return; - - // Signalling something that doesn't exist should run the callback - // immediately. - gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, - 1297824234, - 9123743439); - TestSignalSyncToken(sync_token); + TestSignalSyncPoint(1297824234); }; CONTEXT_TEST_F(SignalTest, BasicSignalQueryTest) {
diff --git a/content/common/mojo/mojo_messages.h b/content/common/mojo/mojo_messages.h index 45133d7..c7fab2b1 100644 --- a/content/common/mojo/mojo_messages.h +++ b/content/common/mojo/mojo_messages.h
@@ -21,3 +21,8 @@ // Mojo IPC is bootstrapped over Chrome IPC via this message. IPC_MESSAGE_CONTROL1(MojoMsg_Activate, IPC::PlatformFileForTransit /* handle */) + +// Mojo IPC to an external shell is bootstrapped over Chrome IPC via this +// message. +IPC_MESSAGE_CONTROL1(MojoMsg_BindExternalMojoShellHandle, + IPC::PlatformFileForTransit /* handle */)
diff --git a/content/common/mojo/mojo_shell_connection_impl.cc b/content/common/mojo/mojo_shell_connection_impl.cc index 5125df35..25c8be1c 100644 --- a/content/common/mojo/mojo_shell_connection_impl.cc +++ b/content/common/mojo/mojo_shell_connection_impl.cc
@@ -31,19 +31,26 @@ // static void MojoShellConnectionImpl::Create() { DCHECK(IsRunningInMojoShell()); + CreateWithMessagePipe(mojo::ScopedMessagePipeHandle()); +} + +// static +void MojoShellConnectionImpl::CreateWithMessagePipe( + mojo::ScopedMessagePipeHandle handle) { DCHECK(!lazy_tls_ptr.Pointer()->Get()); MojoShellConnectionImpl* connection = new MojoShellConnectionImpl; lazy_tls_ptr.Pointer()->Set(connection); - connection->WaitForShell(); + connection->WaitForShell(handle.Pass()); } MojoShellConnectionImpl::MojoShellConnectionImpl() : initialized_(false) {} MojoShellConnectionImpl::~MojoShellConnectionImpl() {} -void MojoShellConnectionImpl::WaitForShell() { +void MojoShellConnectionImpl::WaitForShell( + mojo::ScopedMessagePipeHandle handle) { mojo::InterfaceRequest<mojo::Application> application_request; - runner_connection_.reset( - mojo::runner::RunnerConnection::ConnectToRunner(&application_request)); + runner_connection_.reset(mojo::runner::RunnerConnection::ConnectToRunner( + &application_request, handle.Pass())); application_impl_.reset(new mojo::ApplicationImpl( this, application_request.Pass())); application_impl_->WaitForInitialize();
diff --git a/content/common/mojo/mojo_shell_connection_impl.h b/content/common/mojo/mojo_shell_connection_impl.h index 484e2ab7..8891acb 100644 --- a/content/common/mojo/mojo_shell_connection_impl.h +++ b/content/common/mojo/mojo_shell_connection_impl.h
@@ -11,6 +11,7 @@ #include "base/memory/scoped_ptr.h" #include "content/public/common/mojo_shell_connection.h" #include "mojo/application/public/cpp/application_delegate.h" +#include "mojo/public/cpp/system/message_pipe.h" namespace mojo { namespace runner { @@ -20,8 +21,7 @@ namespace content { -// Returns true if the Chrome browser process was launched from the external -// Mojo shell. +// Returns true for processes launched from an external mojo shell. bool IsRunningInMojoShell(); class MojoShellConnectionImpl : public MojoShellConnection, @@ -32,6 +32,9 @@ // thread until calling GetApplication() will return an Initialized() // application with a bound ShellPtr. static void Create(); + // Same as Create(), but receives a handle instead of looking for one on the + // command line. + static void CreateWithMessagePipe(mojo::ScopedMessagePipeHandle handle); private: MojoShellConnectionImpl(); @@ -50,7 +53,7 @@ // Blocks the calling thread until a connection to the spawning shell is // established, an Application request from it is bound, and the Initialize() // method on that application is called. - void WaitForShell(); + void WaitForShell(mojo::ScopedMessagePipeHandle handle); bool initialized_; scoped_ptr<mojo::runner::RunnerConnection> runner_connection_;
diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn index 63f5fa9..9c1e0f7 100644 --- a/content/public/common/BUILD.gn +++ b/content/public/common/BUILD.gn
@@ -44,6 +44,15 @@ defines = [ "COMPILE_CONTENT_STATICALLY" ] } +# Set in GN builds, triggering behavior in content when run from an external +# Mojo shell. +config("mojo_shell_client") { + # This configuration has only been tested on these platforms. + if (is_win || is_linux || is_chromeos) { + defines = [ "MOJO_SHELL_CLIENT" ] + } +} + # This target allows you to use the content_switches constants and statically # link to it, without depending on the rest of content. This is only for use # without content, or you will get multiply defined symbols.
diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc index b07e2226..6d5a317 100644 --- a/content/renderer/media/android/webmediaplayer_android.cc +++ b/content/renderer/media/android/webmediaplayer_android.cc
@@ -137,15 +137,12 @@ : web_graphics_context_(web_graphics_context) {} ~SyncTokenClientImpl() override {} void GenerateSyncToken(gpu::SyncToken* sync_token) override { - const blink::WGC3Duint64 fence_sync = - web_graphics_context_->insertFenceSyncCHROMIUM(); - if (!web_graphics_context_->genSyncTokenCHROMIUM(fence_sync, - sync_token->GetData())) { + if (!web_graphics_context_->insertSyncPoint(sync_token->GetData())) { sync_token->Clear(); } } void WaitSyncToken(const gpu::SyncToken& sync_token) override { - web_graphics_context_->waitSyncTokenCHROMIUM(sync_token.GetConstData()); + web_graphics_context_->waitSyncToken(sync_token.GetConstData()); } private: @@ -690,8 +687,7 @@ mailbox_holder.texture_target == GL_TEXTURE_EXTERNAL_OES) || (is_remote_ && mailbox_holder.texture_target == GL_TEXTURE_2D)); - web_graphics_context->waitSyncTokenCHROMIUM( - mailbox_holder.sync_token.GetConstData()); + web_graphics_context->waitSyncToken(mailbox_holder.sync_token.GetConstData()); // Ensure the target of texture is set before copyTextureCHROMIUM, otherwise // an invalid texture target may be used for copy texture.
diff --git a/content/renderer/media/media_stream_center.cc b/content/renderer/media/media_stream_center.cc index f5f5e7ad..ef76b054 100644 --- a/content/renderer/media/media_stream_center.cc +++ b/content/renderer/media/media_stream_center.cc
@@ -165,16 +165,8 @@ void MediaStreamCenter::didCreateMediaStream(blink::WebMediaStream& stream) { DVLOG(1) << "MediaStreamCenter::didCreateMediaStream"; blink::WebMediaStream writable_stream(stream); - MediaStream* native_stream( - new MediaStream(stream)); + MediaStream* native_stream(new MediaStream(stream)); writable_stream.setExtraData(native_stream); - - blink::WebVector<blink::WebMediaStreamTrack> video_tracks; - stream.videoTracks(video_tracks); - for (size_t i = 0; i < video_tracks.size(); ++i) { - if (!MediaStreamTrack::GetTrack(video_tracks[i])) - CreateNativeMediaStreamTrack(video_tracks[i], rtc_factory_); - } } bool MediaStreamCenter::didAddMediaStreamTrack(
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index c9f5fa0..69fff6e 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -549,7 +549,9 @@ } } - configs += [ "//build/config:precompiled_headers" ] + configs += [ + "//build/config:precompiled_headers", + ] deps = [ ":test_support",
diff --git a/crypto/BUILD.gn b/crypto/BUILD.gn index bf03af7..8d24e60 100644 --- a/crypto/BUILD.gn +++ b/crypto/BUILD.gn
@@ -19,8 +19,9 @@ "cssm_init.cc", "cssm_init.h", "curve25519-donna.c", - "curve25519.cc", "curve25519.h", + "curve25519_nss.cc", + "curve25519_openssl.cc", "ec_private_key.h", "ec_private_key_nss.cc", "ec_private_key_openssl.cc", @@ -136,6 +137,8 @@ if (use_openssl) { # Remove NSS files when using OpenSSL sources -= [ + "curve25519-donna.c", + "curve25519_nss.cc", "ec_private_key_nss.cc", "ec_signature_creator_nss.cc", "encryptor_nss.cc", @@ -157,6 +160,7 @@ sources -= [ "aead_openssl.cc", "aead_openssl.h", + "curve25519_openssl.cc", "ec_private_key_openssl.cc", "ec_signature_creator_openssl.cc", "encryptor_openssl.cc",
diff --git a/crypto/crypto.gyp b/crypto/crypto.gyp index c1c1047c4..2590c4f 100644 --- a/crypto/crypto.gyp +++ b/crypto/crypto.gyp
@@ -103,6 +103,8 @@ # TODO(joth): Use a glob to match exclude patterns once the # OpenSSL file set is complete. 'sources!': [ + 'curve25519-donna.c', + 'curve25519_nss.cc', 'ec_private_key_nss.cc', 'ec_signature_creator_nss.cc', 'encryptor_nss.cc', @@ -126,6 +128,7 @@ 'sources!': [ 'aead_openssl.cc', 'aead_openssl.h', + 'curve25519_openssl.cc', 'ec_private_key_openssl.cc', 'ec_signature_creator_openssl.cc', 'encryptor_openssl.cc',
diff --git a/crypto/crypto.gypi b/crypto/crypto.gypi index 73b3332..e5cc4f44 100644 --- a/crypto/crypto.gypi +++ b/crypto/crypto.gypi
@@ -37,9 +37,10 @@ 'crypto_export.h', 'cssm_init.cc', 'cssm_init.h', - 'curve25519.cc', - 'curve25519.h', 'curve25519-donna.c', + 'curve25519.h', + 'curve25519_nss.cc', + 'curve25519_openssl.cc', 'ghash.cc', 'ghash.h', 'ec_private_key.h',
diff --git a/crypto/curve25519.h b/crypto/curve25519.h index ba24c92..534f0bfa 100644 --- a/crypto/curve25519.h +++ b/crypto/curve25519.h
@@ -5,7 +5,9 @@ #ifndef CRYPTO_CURVE25519_H #define CRYPTO_CURVE25519_H -#include "base/basictypes.h" +#include <stddef.h> +#include <stdint.h> + #include "crypto/crypto_export.h" namespace crypto { @@ -14,6 +16,10 @@ // described in "Curve 25519: new Diffie-Hellman Speed Records", // by D.J. Bernstein. Additional information is available at // http://cr.yp.to/ecdh.html. +// +// TODO(davidben): Once iOS is switched to BoringSSL (https://crbug.com/338886), +// remove this file altogether and switch callers to using BoringSSL's +// curve25519.h directly. namespace curve25519 { // kBytes is the number of bytes in the result of the Diffie-Hellman operation, @@ -28,18 +34,20 @@ // |peer_public_key|. This method is a wrapper for |curve25519_donna()|. It // calls that function with |private_key| as |secret| and |peer_public_key| as // basepoint. |private_key| should be of length |kScalarBytes| and -// |peer_public_key| should be of length |kBytes|. -// See "Computing shared secrets" section of/ http://cr.yp.to/ecdh.html. -CRYPTO_EXPORT void ScalarMult(const uint8* private_key, - const uint8* peer_public_key, - uint8* shared_key); +// |peer_public_key| should be of length |kBytes|. It returns true on success +// and false if |peer_public_key| was invalid. +// See the "Computing shared secrets" section of http://cr.yp.to/ecdh.html. +CRYPTO_EXPORT bool ScalarMult(const uint8_t* private_key, + const uint8_t* peer_public_key, + uint8_t* shared_key); // ScalarBaseMult computes the |public_key| from |private_key|. This method is a // wrapper for |curve25519_donna()|. It calls that function with |private_key| // as |secret| and |kBasePoint| as basepoint. |private_key| should be of length // |kScalarBytes|. See "Computing public keys" section of // http://cr.yp.to/ecdh.html. -CRYPTO_EXPORT void ScalarBaseMult(const uint8* private_key, uint8* public_key); +CRYPTO_EXPORT void ScalarBaseMult(const uint8_t* private_key, + uint8_t* public_key); } // namespace curve25519
diff --git a/crypto/curve25519.cc b/crypto/curve25519_nss.cc similarity index 63% rename from crypto/curve25519.cc rename to crypto/curve25519_nss.cc index 3346df9..746356f 100644 --- a/crypto/curve25519.cc +++ b/crypto/curve25519_nss.cc
@@ -4,30 +4,36 @@ #include "crypto/curve25519.h" +#include "crypto/secure_util.h" + // Curve25519 is specified in terms of byte strings, not numbers, so all // implementations take and return the same sequence of bits. So the byte // order is implicitly specified as in, say, SHA1. // // Prototype for |curve25519_donna| function in // third_party/curve25519-donna/curve25519-donna.c -extern "C" int curve25519_donna(uint8*, const uint8*, const uint8*); +extern "C" int curve25519_donna(uint8_t*, const uint8_t*, const uint8_t*); namespace crypto { namespace curve25519 { -void ScalarMult(const uint8* private_key, - const uint8* peer_public_key, - uint8* shared_key) { +bool ScalarMult(const uint8_t* private_key, + const uint8_t* peer_public_key, + uint8_t* shared_key) { curve25519_donna(shared_key, private_key, peer_public_key); + + // The all-zero output results when the input is a point of small order. + static const uint8_t kZeros[32] = {0}; + return !SecureMemEqual(shared_key, kZeros, 32); } // kBasePoint is the base point (generator) of the elliptic curve group. // It is little-endian version of '9' followed by 31 zeros. // See "Computing public keys" section of http://cr.yp.to/ecdh.html. -static const unsigned char kBasePoint[32] = {9}; +static const uint8_t kBasePoint[32] = {9}; -void ScalarBaseMult(const uint8* private_key, uint8* public_key) { +void ScalarBaseMult(const uint8_t* private_key, uint8_t* public_key) { curve25519_donna(public_key, private_key, kBasePoint); }
diff --git a/crypto/curve25519_openssl.cc b/crypto/curve25519_openssl.cc new file mode 100644 index 0000000..067e19c --- /dev/null +++ b/crypto/curve25519_openssl.cc
@@ -0,0 +1,25 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "crypto/curve25519.h" + +#include <openssl/curve25519.h> + +namespace crypto { + +namespace curve25519 { + +bool ScalarMult(const uint8_t* private_key, + const uint8_t* peer_public_key, + uint8_t* shared_key) { + return !!X25519(shared_key, private_key, peer_public_key); +} + +void ScalarBaseMult(const uint8_t* private_key, uint8_t* public_key) { + X25519_public_from_private(public_key, private_key); +} + +} // namespace curve25519 + +} // namespace crypto
diff --git a/crypto/curve25519_unittest.cc b/crypto/curve25519_unittest.cc index 0ddc4224..48144ba 100644 --- a/crypto/curve25519_unittest.cc +++ b/crypto/curve25519_unittest.cc
@@ -17,28 +17,41 @@ // public key and shared key for alice and bob. It asserts that alice and bob // have the same shared key. TEST(Curve25519, SharedKeyIdentity) { - uint8 alice_private_key[curve25519::kScalarBytes] = {3}; - uint8 bob_private_key[curve25519::kScalarBytes] = {5}; + uint8_t alice_private_key[curve25519::kScalarBytes] = {3}; + uint8_t bob_private_key[curve25519::kScalarBytes] = {5}; // Get public key for alice and bob. - uint8 alice_public_key[curve25519::kBytes]; + uint8_t alice_public_key[curve25519::kBytes]; curve25519::ScalarBaseMult(alice_private_key, alice_public_key); - uint8 bob_public_key[curve25519::kBytes]; + uint8_t bob_public_key[curve25519::kBytes]; curve25519::ScalarBaseMult(bob_private_key, bob_public_key); // Get the shared key for alice, by using alice's private key and bob's // public key. - uint8 alice_shared_key[curve25519::kBytes]; + uint8_t alice_shared_key[curve25519::kBytes]; curve25519::ScalarMult(alice_private_key, bob_public_key, alice_shared_key); // Get the shared key for bob, by using bob's private key and alice's public // key. - uint8 bob_shared_key[curve25519::kBytes]; + uint8_t bob_shared_key[curve25519::kBytes]; curve25519::ScalarMult(bob_private_key, alice_public_key, bob_shared_key); // Computed shared key of alice and bob should be the same. ASSERT_EQ(0, memcmp(alice_shared_key, bob_shared_key, curve25519::kBytes)); } +TEST(Curve25519, SmallOrder) { + static const uint8_t kSmallOrderPoint[32] = { + 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3, + 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, + 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, + }; + + uint8_t out[32], private_key[32]; + memset(private_key, 0x11, sizeof(private_key)); + + EXPECT_FALSE(curve25519::ScalarMult(private_key, kSmallOrderPoint, out)); +} + } // namespace crypto
diff --git a/crypto/scoped_nss_types.h b/crypto/scoped_nss_types.h index fdfb83c..8e96e8d4 100644 --- a/crypto/scoped_nss_types.h +++ b/crypto/scoped_nss_types.h
@@ -16,7 +16,6 @@ template <typename Type, void (*Destroyer)(Type*)> struct NSSDestroyer { - typedef void AllowSelfReset; void operator()(Type* ptr) const { Destroyer(ptr); } @@ -24,7 +23,6 @@ template <typename Type, void (*Destroyer)(Type*, PRBool), PRBool freeit> struct NSSDestroyer1 { - typedef void AllowSelfReset; void operator()(Type* ptr) const { Destroyer(ptr, freeit); }
diff --git a/crypto/scoped_openssl_types.h b/crypto/scoped_openssl_types.h index 73f7632..bdae6aa5 100644 --- a/crypto/scoped_openssl_types.h +++ b/crypto/scoped_openssl_types.h
@@ -23,7 +23,6 @@ // base::internal::RunnableAdapter<>, but that's far too heavy weight. template <typename Type, void (*Destroyer)(Type*)> struct OpenSSLDestroyer { - using AllowSelfReset = void; void operator()(Type* ptr) const { Destroyer(ptr); } };
diff --git a/device/hid/device_monitor_linux.h b/device/hid/device_monitor_linux.h index 824fa65..23ad81a 100644 --- a/device/hid/device_monitor_linux.h +++ b/device/hid/device_monitor_linux.h
@@ -5,6 +5,7 @@ #ifndef DEVICE_HID_DEVICE_MONITOR_LINUX_H_ #define DEVICE_HID_DEVICE_MONITOR_LINUX_H_ +#include <memory> #include <string> #include "base/compiler_specific.h" @@ -54,7 +55,7 @@ void OnFileCanWriteWithoutBlocking(int fd) override; private: - friend struct base::DefaultDeleter<DeviceMonitorLinux>; + friend std::default_delete<DeviceMonitorLinux>; ~DeviceMonitorLinux() override;
diff --git a/device/hid/input_service_linux.h b/device/hid/input_service_linux.h index d13be957..dfb11d1b 100644 --- a/device/hid/input_service_linux.h +++ b/device/hid/input_service_linux.h
@@ -5,6 +5,7 @@ #ifndef DEVICE_HID_INPUT_SERVICE_LINUX_H_ #define DEVICE_HID_INPUT_SERVICE_LINUX_H_ +#include <memory> #include <string> #include <vector> @@ -87,7 +88,7 @@ base::ObserverList<Observer> observers_; private: - friend struct base::DefaultDeleter<InputServiceLinux>; + friend std::default_delete<InputServiceLinux>; base::ThreadChecker thread_checker_;
diff --git a/gpu/blink/webgraphicscontext3d_impl.cc b/gpu/blink/webgraphicscontext3d_impl.cc index c73825c..0ef42a23 100644 --- a/gpu/blink/webgraphicscontext3d_impl.cc +++ b/gpu/blink/webgraphicscontext3d_impl.cc
@@ -213,16 +213,16 @@ return flush_id_; } -DELEGATE_TO_GL_R(insertFenceSyncCHROMIUM, InsertFenceSyncCHROMIUM, WGC3Duint64) +bool WebGraphicsContext3DImpl::insertSyncPoint(WGC3Dbyte* sync_token) { + const uint32_t sync_point = gl_->InsertSyncPointCHROMIUM(); + if (!sync_point) + return false; -bool WebGraphicsContext3DImpl::genSyncTokenCHROMIUM(WGC3Duint64 fenceSync, - WGC3Dbyte* syncToken) { - gl_->GenSyncTokenCHROMIUM(fenceSync, syncToken); + gpu::SyncToken sync_token_data(sync_point); + memcpy(sync_token, &sync_token_data, sizeof(sync_token_data)); return true; } -DELEGATE_TO_GL_1(waitSyncTokenCHROMIUM, WaitSyncTokenCHROMIUM, const WGC3Dbyte*) - DELEGATE_TO_GL_3(reshapeWithScaleFactor, ResizeCHROMIUM, int, int, float) DELEGATE_TO_GL_4R(mapBufferSubDataCHROMIUM, MapBufferSubDataCHROMIUM, WGC3Denum, @@ -897,6 +897,8 @@ gl_->ShallowFinishCHROMIUM(); } +DELEGATE_TO_GL_1(waitSyncToken, WaitSyncTokenCHROMIUM, const WGC3Dbyte*) + void WebGraphicsContext3DImpl::loseContextCHROMIUM( WGC3Denum current, WGC3Denum other) { gl_->LoseContextCHROMIUM(current, other);
diff --git a/gpu/blink/webgraphicscontext3d_impl.h b/gpu/blink/webgraphicscontext3d_impl.h index ec300ef..97b0026b 100644 --- a/gpu/blink/webgraphicscontext3d_impl.h +++ b/gpu/blink/webgraphicscontext3d_impl.h
@@ -37,10 +37,8 @@ uint32_t lastFlushID() override; - blink::WGC3Duint64 insertFenceSyncCHROMIUM() override; - bool genSyncTokenCHROMIUM(blink::WGC3Duint64 fenceSync, - blink::WGC3Dbyte* syncToken) override; - void waitSyncTokenCHROMIUM(const blink::WGC3Dbyte* syncToken) override; + bool insertSyncPoint(blink::WGC3Dbyte* sync_token) override; + void waitSyncToken(const blink::WGC3Dbyte* sync_token) override; void loseContextCHROMIUM(blink::WGC3Denum current, blink::WGC3Denum other) override;
diff --git a/gpu/command_buffer/service/common_decoder.cc b/gpu/command_buffer/service/common_decoder.cc index 99fdb76..b945205 100644 --- a/gpu/command_buffer/service/common_decoder.cc +++ b/gpu/command_buffer/service/common_decoder.cc
@@ -4,6 +4,8 @@ #include "gpu/command_buffer/service/common_decoder.h" +#include <algorithm> + #include "base/numerics/safe_math.h" #include "gpu/command_buffer/service/cmd_buffer_engine.h"
diff --git a/infra/scripts/legacy/scripts/slave/chromium/sizes.py b/infra/scripts/legacy/scripts/slave/chromium/sizes.py index 77331d12..677e179a 100755 --- a/infra/scripts/legacy/scripts/slave/chromium/sizes.py +++ b/infra/scripts/legacy/scripts/slave/chromium/sizes.py
@@ -176,19 +176,37 @@ print_si_fail_hint('tools/mac/dump-static-initializers.py') print stdout + results_collector.add_result( + print_dict['app_name'], print_dict['app_name'], + print_dict['app_size'], 'bytes') + results_collector.add_result( + '%s-__TEXT' % print_dict['app_name'], '__TEXT', + print_dict['app_text'], 'bytes') + results_collector.add_result( + '%s-__DATA' % print_dict['app_name'], '__DATA', + print_dict['app_data'], 'bytes') + results_collector.add_result( + '%s-__OBJC' % print_dict['app_name'], '__OBJC', + print_dict['app_objc'], 'bytes') + results_collector.add_result( + print_dict['framework_name'], print_dict['framework_name'], + print_dict['framework_size'], 'bytes') + results_collector.add_result( + '%s-__TEXT' % print_dict['framework_name'], '__TEXT', + print_dict['framework_text'], 'bytes') + results_collector.add_result( + '%s-__DATA' % print_dict['framework_name'], '__DATA', + print_dict['framework_data'], 'bytes') + results_collector.add_result( + '%s-__OBJC' % print_dict['framework_name'], '__OBJC', + print_dict['framework_objc'], 'bytes') + results_collector.add_result( + print_dict['app_bundle'], print_dict['app_bundle'], + print_dict['app_bundle_size'], 'bytes') + results_collector.add_result( + 'chrome-si', 'initializers', + print_dict['initializers'], 'files') - print ("""RESULT %(app_name)s: %(app_name)s= %(app_size)s bytes -RESULT %(app_name)s-__TEXT: __TEXT= %(app_text)s bytes -RESULT %(app_name)s-__DATA: __DATA= %(app_data)s bytes -RESULT %(app_name)s-__OBJC: __OBJC= %(app_objc)s bytes -RESULT %(framework_name)s: %(framework_name)s= %(framework_size)s bytes -RESULT %(framework_name)s-__TEXT: __TEXT= %(framework_text)s bytes -RESULT %(framework_name)s-__DATA: __DATA= %(framework_data)s bytes -RESULT %(framework_name)s-__OBJC: __OBJC= %(framework_objc)s bytes -RESULT %(app_bundle)s: %(app_bundle)s= %(app_bundle_size)s bytes -RESULT chrome-si: initializers= %(initializers)d files -""") % ( - print_dict) # Found a match, don't check the other base_names. return result # If no base_names matched, fail script.
diff --git a/ios/chrome/BUILD.gn b/ios/chrome/BUILD.gn new file mode 100644 index 0000000..daa2e2ed --- /dev/null +++ b/ios/chrome/BUILD.gn
@@ -0,0 +1,91 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//testing/test.gni") + +test("ios_chrome_unittests") { + sources = [ + "app/safe_mode_util_unittest.cc", + "browser/chrome_url_util_unittest.mm", + "browser/crash_loop_detection_util_unittest.mm", + "browser/favicon/large_icon_cache_unittest.cc", + "browser/geolocation/CLLocation+XGeoHeaderTest.mm", + "browser/geolocation/location_manager_unittest.mm", + "browser/geolocation/omnibox_geolocation_local_state_unittest.mm", + "browser/install_time_util_unittest.mm", + "browser/installation_notifier_unittest.mm", + "browser/metrics/ios_chrome_metrics_service_accessor_unittest.cc", + "browser/metrics/ios_chrome_stability_metrics_provider_unittest.cc", + "browser/metrics/ios_stability_metrics_provider_unittest.mm", + "browser/metrics/previous_session_info_unittest.mm", + "browser/net/cookie_util_unittest.mm", + "browser/net/image_fetcher_unittest.mm", + "browser/net/metrics_network_client_unittest.mm", + "browser/net/retryable_url_fetcher_unittest.mm", + "browser/signin/chrome_identity_service_observer_bridge_unittest.mm", + "browser/signin/gaia_auth_fetcher_ios_unittest.mm", + "browser/snapshots/lru_cache_unittest.mm", + "browser/snapshots/snapshot_cache_unittest.mm", + "browser/snapshots/snapshots_util_unittest.mm", + "browser/translate/translate_service_ios_unittest.cc", + "browser/ui/commands/set_up_for_testing_command_unittest.mm", + "browser/ui/keyboard/UIKeyCommand+ChromeTest.mm", + "browser/ui/keyboard/hardware_keyboard_watcher_unittest.mm", + "browser/ui/native_content_controller_unittest.mm", + "browser/ui/ui_util_unittest.mm", + "browser/ui/uikit_ui_util_unittest.mm", + "browser/update_client/ios_chrome_update_query_params_delegate_unittest.cc", + "browser/web_resource/web_resource_util_unittest.cc", + "common/string_util_unittest.mm", + ] + + deps = [ + "//base", + "//base/test:test_support", + "//base:prefs_test_support", + "//components/bookmarks/test", + "//components/enhanced_bookmarks:test_support", + "//components/favicon_base", + "//components/metrics", + "//components/metrics:test_support", + "//components/signin/core/browser:test_support", + "//components/signin/ios/browser:test_support", + "//components/sync_driver:test_support", + "//components/update_client", + "//components/version_info", + "//ios/chrome/app", + "//ios/chrome/browser", + "//ios/chrome/browser:test_support", + "//ios/chrome/common", + "//ios/public/test", + "//ios/web", + "//ios/web:test_support", + "//net:test_support", + "//skia", + "//testing/gmock", + "//testing/gtest", + "//third_party/ocmock", + "//ui/gfx:test_support", + ] + + # TODO(crbug.com/546283): once bundle resources are supported add code + # corresponding to the following gyp fragment: + # + # 'mac_bundle_resources': [ + # 'browser/ui/native_content_controller_test.xib' + # ], + # 'actions': [ + # { + # 'action_name': 'copy_ios_chrome_test_data', + # 'variables': { + # 'test_data_files': [ + # 'test/data/webdata/bookmarkimages', + # ], + # 'test_data_prefix': 'ios/chrome', + # }, + # 'includes': [ '../../build/copy_test_data_ios.gypi' ] + # }, + # ], + # 'includes': ['ios_chrome_resources_bundle.gypi'], +}
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn new file mode 100644 index 0000000..de18f91 --- /dev/null +++ b/ios/chrome/app/BUILD.gn
@@ -0,0 +1,26 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("app") { + sources = [ + "UIApplication+ExitsOnSuspend.h", + "UIApplication+ExitsOnSuspend.mm", + "deferred_initialization_runner.h", + "deferred_initialization_runner.mm", + "safe_mode_crashing_modules_config.h", + "safe_mode_crashing_modules_config.mm", + "safe_mode_util.cc", + "safe_mode_util.h", + ] + + deps = [ + "//base", + "//ios/chrome/browser", + ] + + libs = [ + "Foundation.framework", + "UIKit.framework", + ] +}
diff --git a/ios/chrome/app/strings/BUILD.gn b/ios/chrome/app/strings/BUILD.gn new file mode 100644 index 0000000..abd4db59 --- /dev/null +++ b/ios/chrome/app/strings/BUILD.gn
@@ -0,0 +1,267 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/chrome_build.gni") +import("//tools/grit/grit_rule.gni") + +group("strings") { + deps = [ + ":ios_chromium_strings", + ":ios_google_chrome_strings", + ":ios_locale_settings", + ":ios_strings", + ] +} + +grit("ios_locale_settings") { + source = "ios_locale_settings.grd" + output_dir = "$root_gen_dir/ios/chrome" + use_qualified_include = true + outputs = [ + "grit/ios_locale_settings.h", + "ios_locale_settings_am.pak", + "ios_locale_settings_ar.pak", + "ios_locale_settings_bg.pak", + "ios_locale_settings_bn.pak", + "ios_locale_settings_ca.pak", + "ios_locale_settings_cs.pak", + "ios_locale_settings_da.pak", + "ios_locale_settings_de.pak", + "ios_locale_settings_el.pak", + "ios_locale_settings_en-GB.pak", + "ios_locale_settings_en-US.pak", + "ios_locale_settings_es.pak", + "ios_locale_settings_es-MX.pak", + "ios_locale_settings_et.pak", + "ios_locale_settings_fa.pak", + "ios_locale_settings_fake-bidi.pak", + "ios_locale_settings_fi.pak", + "ios_locale_settings_fil.pak", + "ios_locale_settings_fr.pak", + "ios_locale_settings_gu.pak", + "ios_locale_settings_he.pak", + "ios_locale_settings_hi.pak", + "ios_locale_settings_hr.pak", + "ios_locale_settings_hu.pak", + "ios_locale_settings_id.pak", + "ios_locale_settings_it.pak", + "ios_locale_settings_ja.pak", + "ios_locale_settings_kn.pak", + "ios_locale_settings_ko.pak", + "ios_locale_settings_lt.pak", + "ios_locale_settings_lv.pak", + "ios_locale_settings_ml.pak", + "ios_locale_settings_mr.pak", + "ios_locale_settings_ms.pak", + "ios_locale_settings_nl.pak", + "ios_locale_settings_nb.pak", + "ios_locale_settings_pl.pak", + "ios_locale_settings_pt.pak", + "ios_locale_settings_pt-PT.pak", + "ios_locale_settings_ro.pak", + "ios_locale_settings_ru.pak", + "ios_locale_settings_sk.pak", + "ios_locale_settings_sl.pak", + "ios_locale_settings_sr.pak", + "ios_locale_settings_sv.pak", + "ios_locale_settings_sw.pak", + "ios_locale_settings_ta.pak", + "ios_locale_settings_te.pak", + "ios_locale_settings_th.pak", + "ios_locale_settings_tr.pak", + "ios_locale_settings_uk.pak", + "ios_locale_settings_vi.pak", + "ios_locale_settings_zh-CN.pak", + "ios_locale_settings_zh-TW.pak", + ] +} + +grit("ios_strings") { + source = "ios_strings.grd" + output_dir = "$root_gen_dir/ios/chrome" + use_qualified_include = true + outputs = [ + "grit/ios_strings.h", + "ios_strings_am.pak", + "ios_strings_ar.pak", + "ios_strings_bg.pak", + "ios_strings_bn.pak", + "ios_strings_ca.pak", + "ios_strings_cs.pak", + "ios_strings_da.pak", + "ios_strings_de.pak", + "ios_strings_el.pak", + "ios_strings_en-GB.pak", + "ios_strings_en-US.pak", + "ios_strings_es.pak", + "ios_strings_es-MX.pak", + "ios_strings_et.pak", + "ios_strings_fa.pak", + "ios_strings_fake-bidi.pak", + "ios_strings_fi.pak", + "ios_strings_fil.pak", + "ios_strings_fr.pak", + "ios_strings_gu.pak", + "ios_strings_he.pak", + "ios_strings_hi.pak", + "ios_strings_hr.pak", + "ios_strings_hu.pak", + "ios_strings_id.pak", + "ios_strings_it.pak", + "ios_strings_ja.pak", + "ios_strings_kn.pak", + "ios_strings_ko.pak", + "ios_strings_lt.pak", + "ios_strings_lv.pak", + "ios_strings_ml.pak", + "ios_strings_mr.pak", + "ios_strings_ms.pak", + "ios_strings_nl.pak", + "ios_strings_nb.pak", + "ios_strings_pl.pak", + "ios_strings_pt.pak", + "ios_strings_pt-PT.pak", + "ios_strings_ro.pak", + "ios_strings_ru.pak", + "ios_strings_sk.pak", + "ios_strings_sl.pak", + "ios_strings_sr.pak", + "ios_strings_sv.pak", + "ios_strings_sw.pak", + "ios_strings_ta.pak", + "ios_strings_te.pak", + "ios_strings_th.pak", + "ios_strings_tr.pak", + "ios_strings_uk.pak", + "ios_strings_vi.pak", + "ios_strings_zh-CN.pak", + "ios_strings_zh-TW.pak", + ] +} + +grit("ios_chromium_strings") { + source = "ios_chromium_strings.grd" + output_dir = "$root_gen_dir/ios/chrome" + use_qualified_include = true + outputs = [ + "grit/ios_chromium_strings.h", + "ios_chromium_strings_am.pak", + "ios_chromium_strings_ar.pak", + "ios_chromium_strings_bg.pak", + "ios_chromium_strings_bn.pak", + "ios_chromium_strings_ca.pak", + "ios_chromium_strings_cs.pak", + "ios_chromium_strings_da.pak", + "ios_chromium_strings_de.pak", + "ios_chromium_strings_el.pak", + "ios_chromium_strings_en-GB.pak", + "ios_chromium_strings_en-US.pak", + "ios_chromium_strings_es.pak", + "ios_chromium_strings_es-MX.pak", + "ios_chromium_strings_et.pak", + "ios_chromium_strings_fa.pak", + "ios_chromium_strings_fake-bidi.pak", + "ios_chromium_strings_fi.pak", + "ios_chromium_strings_fil.pak", + "ios_chromium_strings_fr.pak", + "ios_chromium_strings_gu.pak", + "ios_chromium_strings_he.pak", + "ios_chromium_strings_hi.pak", + "ios_chromium_strings_hr.pak", + "ios_chromium_strings_hu.pak", + "ios_chromium_strings_id.pak", + "ios_chromium_strings_it.pak", + "ios_chromium_strings_ja.pak", + "ios_chromium_strings_kn.pak", + "ios_chromium_strings_ko.pak", + "ios_chromium_strings_lt.pak", + "ios_chromium_strings_lv.pak", + "ios_chromium_strings_ml.pak", + "ios_chromium_strings_mr.pak", + "ios_chromium_strings_ms.pak", + "ios_chromium_strings_nl.pak", + "ios_chromium_strings_nb.pak", + "ios_chromium_strings_pl.pak", + "ios_chromium_strings_pt.pak", + "ios_chromium_strings_pt-PT.pak", + "ios_chromium_strings_ro.pak", + "ios_chromium_strings_ru.pak", + "ios_chromium_strings_sk.pak", + "ios_chromium_strings_sl.pak", + "ios_chromium_strings_sr.pak", + "ios_chromium_strings_sv.pak", + "ios_chromium_strings_sw.pak", + "ios_chromium_strings_ta.pak", + "ios_chromium_strings_te.pak", + "ios_chromium_strings_th.pak", + "ios_chromium_strings_tr.pak", + "ios_chromium_strings_uk.pak", + "ios_chromium_strings_vi.pak", + "ios_chromium_strings_zh-CN.pak", + "ios_chromium_strings_zh-TW.pak", + ] +} + +grit("ios_google_chrome_strings") { + source = "ios_google_chrome_strings.grd" + output_dir = "$root_gen_dir/ios/chrome" + use_qualified_include = true + outputs = [ + "grit/ios_google_chrome_strings.h", + "ios_google_chrome_strings_am.pak", + "ios_google_chrome_strings_ar.pak", + "ios_google_chrome_strings_bg.pak", + "ios_google_chrome_strings_bn.pak", + "ios_google_chrome_strings_ca.pak", + "ios_google_chrome_strings_cs.pak", + "ios_google_chrome_strings_da.pak", + "ios_google_chrome_strings_de.pak", + "ios_google_chrome_strings_el.pak", + "ios_google_chrome_strings_en-GB.pak", + "ios_google_chrome_strings_en-US.pak", + "ios_google_chrome_strings_es.pak", + "ios_google_chrome_strings_es-MX.pak", + "ios_google_chrome_strings_et.pak", + "ios_google_chrome_strings_fa.pak", + "ios_google_chrome_strings_fake-bidi.pak", + "ios_google_chrome_strings_fi.pak", + "ios_google_chrome_strings_fil.pak", + "ios_google_chrome_strings_fr.pak", + "ios_google_chrome_strings_gu.pak", + "ios_google_chrome_strings_he.pak", + "ios_google_chrome_strings_hi.pak", + "ios_google_chrome_strings_hr.pak", + "ios_google_chrome_strings_hu.pak", + "ios_google_chrome_strings_id.pak", + "ios_google_chrome_strings_it.pak", + "ios_google_chrome_strings_ja.pak", + "ios_google_chrome_strings_kn.pak", + "ios_google_chrome_strings_ko.pak", + "ios_google_chrome_strings_lt.pak", + "ios_google_chrome_strings_lv.pak", + "ios_google_chrome_strings_ml.pak", + "ios_google_chrome_strings_mr.pak", + "ios_google_chrome_strings_ms.pak", + "ios_google_chrome_strings_nl.pak", + "ios_google_chrome_strings_nb.pak", + "ios_google_chrome_strings_pl.pak", + "ios_google_chrome_strings_pt.pak", + "ios_google_chrome_strings_pt-PT.pak", + "ios_google_chrome_strings_ro.pak", + "ios_google_chrome_strings_ru.pak", + "ios_google_chrome_strings_sk.pak", + "ios_google_chrome_strings_sl.pak", + "ios_google_chrome_strings_sr.pak", + "ios_google_chrome_strings_sv.pak", + "ios_google_chrome_strings_sw.pak", + "ios_google_chrome_strings_ta.pak", + "ios_google_chrome_strings_te.pak", + "ios_google_chrome_strings_th.pak", + "ios_google_chrome_strings_tr.pak", + "ios_google_chrome_strings_uk.pak", + "ios_google_chrome_strings_vi.pak", + "ios_google_chrome_strings_zh-CN.pak", + "ios_google_chrome_strings_zh-TW.pak", + ] +}
diff --git a/ios/chrome/app/theme/BUILD.gn b/ios/chrome/app/theme/BUILD.gn new file mode 100644 index 0000000..23834ad --- /dev/null +++ b/ios/chrome/app/theme/BUILD.gn
@@ -0,0 +1,18 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//tools/grit/grit_rule.gni") + +grit("theme") { + source = "ios_theme_resources.grd" + output_dir = "$root_gen_dir/ios/chrome" + outputs = [ + "grit/ios_theme_resources.h", + "grit/ios_theme_resources_map.cc", + "grit/ios_theme_resources_map.h", + "ios_theme_resources_100_percent.pak", + "ios_theme_resources_200_percent.pak", + "ios_theme_resources_300_percent.pak", + ] +}
diff --git a/ios/chrome/browser/BUILD.gn b/ios/chrome/browser/BUILD.gn new file mode 100644 index 0000000..829cd49 --- /dev/null +++ b/ios/chrome/browser/BUILD.gn
@@ -0,0 +1,602 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/features.gni") +import("//ios/web/js_compile.gni") + +source_set("browser") { + sources = [ + "app_startup_parameters.h", + "app_startup_parameters.mm", + "application_context.cc", + "application_context.h", + "application_context_impl.cc", + "application_context_impl.h", + "arch_util.cc", + "arch_util.h", + "autocomplete/autocomplete_classifier_factory.cc", + "autocomplete/autocomplete_classifier_factory.h", + "autocomplete/autocomplete_provider_client_impl.cc", + "autocomplete/autocomplete_provider_client_impl.h", + "autocomplete/autocomplete_scheme_classifier_impl.h", + "autocomplete/autocomplete_scheme_classifier_impl.mm", + "autocomplete/in_memory_url_index_factory.cc", + "autocomplete/in_memory_url_index_factory.h", + "autocomplete/shortcuts_backend_factory.cc", + "autocomplete/shortcuts_backend_factory.h", + "autofill/autofill_agent_utils.h", + "autofill/autofill_agent_utils.mm", + "autofill/form_input_accessory_view.h", + "autofill/form_input_accessory_view.mm", + "autofill/form_input_accessory_view_controller.h", + "autofill/form_input_accessory_view_controller.mm", + "autofill/form_input_accessory_view_delegate.h", + "autofill/form_suggestion_controller.h", + "autofill/form_suggestion_controller.mm", + "autofill/form_suggestion_label.h", + "autofill/form_suggestion_label.mm", + "autofill/form_suggestion_provider.h", + "autofill/form_suggestion_view.h", + "autofill/form_suggestion_view.mm", + "autofill/form_suggestion_view_client.h", + "autofill/personal_data_manager_factory.cc", + "autofill/personal_data_manager_factory.h", + "bookmarks/bookmark_client_factory.cc", + "bookmarks/bookmark_client_factory.h", + "bookmarks/bookmark_client_impl.cc", + "bookmarks/bookmark_client_impl.h", + "bookmarks/bookmark_model_factory.cc", + "bookmarks/bookmark_model_factory.h", + "bookmarks/startup_task_runner_service_factory.cc", + "bookmarks/startup_task_runner_service_factory.h", + "browser_state/browser_state_info_cache.cc", + "browser_state/browser_state_info_cache.h", + "browser_state/browser_state_info_cache_observer.h", + "browser_state/browser_state_keyed_service_factories.h", + "browser_state/browser_state_keyed_service_factories.mm", + "browser_state/browser_state_otr_helper.cc", + "browser_state/browser_state_otr_helper.h", + "browser_state_metrics/browser_state_metrics.cc", + "browser_state_metrics/browser_state_metrics.h", + "browsing_data_change_listening.h", + "chrome_constants.cc", + "chrome_constants.h", + "chrome_paths.h", + "chrome_paths.mm", + "chrome_paths_internal.h", + "chrome_switches.cc", + "chrome_switches.h", + "chrome_url_constants.cc", + "chrome_url_constants.h", + "chrome_url_util.h", + "chrome_url_util.mm", + "component_updater/ios_component_updater_configurator.cc", + "component_updater/ios_component_updater_configurator.h", + "content_settings/cookie_settings_factory.cc", + "content_settings/cookie_settings_factory.h", + "content_settings/host_content_settings_map_factory.cc", + "content_settings/host_content_settings_map_factory.h", + "crash_loop_detection_util.h", + "crash_loop_detection_util.mm", + "crash_report/breakpad_helper.h", + "crash_report/breakpad_helper.mm", + "crash_report/crash_keys.cc", + "crash_report/crash_keys.h", + "crash_report/crash_report_background_uploader.h", + "crash_report/crash_report_background_uploader.mm", + "crash_report/crash_report_multi_parameter.h", + "crash_report/crash_report_multi_parameter.mm", + "crash_report/crash_report_user_application_state.h", + "crash_report/crash_report_user_application_state.mm", + "crash_report/crash_upload_list.cc", + "crash_report/crash_upload_list.h", + "dom_distiller/distiller_viewer.cc", + "dom_distiller/distiller_viewer.h", + "dom_distiller/dom_distiller_service_factory.cc", + "dom_distiller/dom_distiller_service_factory.h", + "enhanced_bookmarks/bookmark_server_cluster_service_factory.cc", + "enhanced_bookmarks/bookmark_server_cluster_service_factory.h", + "enhanced_bookmarks/enhanced_bookmark_model_factory.cc", + "enhanced_bookmarks/enhanced_bookmark_model_factory.h", + "experimental_flags.h", + "experimental_flags.mm", + "favicon/favicon_client_impl.cc", + "favicon/favicon_client_impl.h", + "favicon/favicon_loader.h", + "favicon/favicon_loader.mm", + "favicon/favicon_service_factory.cc", + "favicon/favicon_service_factory.h", + "favicon/ios_chrome_favicon_loader_factory.h", + "favicon/ios_chrome_favicon_loader_factory.mm", + "favicon/ios_chrome_large_icon_cache_factory.cc", + "favicon/ios_chrome_large_icon_cache_factory.h", + "favicon/ios_chrome_large_icon_service_factory.cc", + "favicon/ios_chrome_large_icon_service_factory.h", + "favicon/large_icon_cache.cc", + "favicon/large_icon_cache.h", + "file_metadata_util.h", + "file_metadata_util.mm", + "find_in_page/find_in_page_controller.h", + "find_in_page/find_in_page_controller.mm", + "find_in_page/find_in_page_model.h", + "find_in_page/find_in_page_model.mm", + "find_in_page/js_findinpage_manager.h", + "find_in_page/js_findinpage_manager.mm", + "first_run/first_run.h", + "first_run/first_run.mm", + "first_run/first_run_configuration.h", + "first_run/first_run_configuration.mm", + "first_run/first_run_metrics.h", + "geolocation/CLLocation+OmniboxGeolocation.h", + "geolocation/CLLocation+OmniboxGeolocation.mm", + "geolocation/CLLocation+XGeoHeader.h", + "geolocation/CLLocation+XGeoHeader.mm", + "geolocation/location_manager.h", + "geolocation/location_manager.mm", + "geolocation/omnibox_geolocation_authorization_alert.h", + "geolocation/omnibox_geolocation_authorization_alert.mm", + "geolocation/omnibox_geolocation_config.h", + "geolocation/omnibox_geolocation_config.mm", + "geolocation/omnibox_geolocation_local_state.h", + "geolocation/omnibox_geolocation_local_state.mm", + "google/google_brand.h", + "google/google_brand.mm", + "google/google_url_tracker_client_impl.cc", + "google/google_url_tracker_client_impl.h", + "google/google_url_tracker_factory.cc", + "google/google_url_tracker_factory.h", + "history/history_backend_client_impl.cc", + "history/history_backend_client_impl.h", + "history/history_client_impl.cc", + "history/history_client_impl.h", + "history/history_service_factory.cc", + "history/history_service_factory.h", + "history/history_utils.cc", + "history/history_utils.h", + "history/top_sites_factory.cc", + "history/top_sites_factory.h", + "history/web_history_service_factory.cc", + "history/web_history_service_factory.h", + "infobars/confirm_infobar_controller.h", + "infobars/confirm_infobar_controller.mm", + "infobars/infobar.h", + "infobars/infobar.mm", + "infobars/infobar_container_ios.h", + "infobars/infobar_container_ios.mm", + "infobars/infobar_container_view.h", + "infobars/infobar_container_view.mm", + "infobars/infobar_controller.h", + "infobars/infobar_controller.mm", + "infobars/infobar_manager_impl.cc", + "infobars/infobar_manager_impl.h", + "infobars/infobar_utils.h", + "infobars/infobar_utils.mm", + "install_time_util.h", + "install_time_util.mm", + "installation_notifier.h", + "installation_notifier.mm", + "invalidation/ios_chrome_profile_invalidation_provider_factory.cc", + "invalidation/ios_chrome_profile_invalidation_provider_factory.h", + "ios_chrome_field_trials.cc", + "ios_chrome_field_trials.h", + "memory/memory_debugger.h", + "memory/memory_debugger.mm", + "memory/memory_debugger_manager.h", + "memory/memory_debugger_manager.mm", + "memory/memory_metrics.cc", + "memory/memory_metrics.h", + "metrics/field_trial_synchronizer.cc", + "metrics/field_trial_synchronizer.h", + "metrics/ios_chrome_metrics_service_accessor.cc", + "metrics/ios_chrome_metrics_service_accessor.h", + "metrics/ios_chrome_metrics_service_client.cc", + "metrics/ios_chrome_metrics_service_client.h", + "metrics/ios_chrome_metrics_services_manager_client.cc", + "metrics/ios_chrome_metrics_services_manager_client.h", + "metrics/ios_chrome_stability_metrics_provider.cc", + "metrics/ios_chrome_stability_metrics_provider.h", + "metrics/ios_stability_metrics_provider.h", + "metrics/ios_stability_metrics_provider.mm", + "metrics/previous_session_info.h", + "metrics/previous_session_info.mm", + "net/chrome_cookie_store_ios_client.h", + "net/chrome_cookie_store_ios_client.mm", + "net/connection_type_observer_bridge.h", + "net/connection_type_observer_bridge.mm", + "net/cookie_util.h", + "net/cookie_util.mm", + "net/http_server_properties_manager_factory.cc", + "net/http_server_properties_manager_factory.h", + "net/image_fetcher.h", + "net/image_fetcher.mm", + "net/ios_chrome_http_user_agent_settings.cc", + "net/ios_chrome_http_user_agent_settings.h", + "net/ios_chrome_network_delegate.cc", + "net/ios_chrome_network_delegate.h", + "net/metrics_network_client.h", + "net/metrics_network_client.mm", + "net/metrics_network_client_manager.h", + "net/metrics_network_client_manager.mm", + "net/proxy_service_factory.cc", + "net/proxy_service_factory.h", + "net/retryable_url_fetcher.h", + "net/retryable_url_fetcher.mm", + "open_from_clipboard/create_clipboard_recent_content.h", + "open_from_clipboard/create_clipboard_recent_content.mm", + "passwords/ios_chrome_password_manager_setting_migrator_service_factory.cc", + "passwords/ios_chrome_password_manager_setting_migrator_service_factory.h", + "passwords/ios_chrome_password_store_factory.cc", + "passwords/ios_chrome_password_store_factory.h", + "passwords/password_generation_utils.h", + "passwords/password_generation_utils.mm", + "pref_names.cc", + "pref_names.h", + "prefs/browser_prefs.h", + "prefs/browser_prefs.mm", + "prefs/ios_chrome_pref_model_associator_client.cc", + "prefs/ios_chrome_pref_model_associator_client.h", + "prefs/ios_chrome_pref_service_factory.cc", + "prefs/ios_chrome_pref_service_factory.h", + "prefs/pref_observer_bridge.h", + "prefs/pref_observer_bridge.mm", + "procedural_block_types.h", + "search/search_util.cc", + "search/search_util.h", + "search_engines/search_engines_util.cc", + "search_engines/search_engines_util.h", + "search_engines/template_url_service_client_impl.cc", + "search_engines/template_url_service_client_impl.h", + "search_engines/template_url_service_factory.cc", + "search_engines/template_url_service_factory.h", + "search_engines/ui_thread_search_terms_data.cc", + "search_engines/ui_thread_search_terms_data.h", + "services/gcm/ios_chrome_gcm_profile_service_factory.cc", + "services/gcm/ios_chrome_gcm_profile_service_factory.h", + "sessions/ios_chrome_session_tab_helper.cc", + "sessions/ios_chrome_session_tab_helper.h", + "sessions/ios_chrome_tab_restore_service_client.cc", + "sessions/ios_chrome_tab_restore_service_client.h", + "sessions/ios_chrome_tab_restore_service_factory.cc", + "sessions/ios_chrome_tab_restore_service_factory.h", + "signin/about_signin_internals_factory.cc", + "signin/about_signin_internals_factory.h", + "signin/account_consistency_service_factory.h", + "signin/account_consistency_service_factory.mm", + "signin/account_fetcher_service_factory.cc", + "signin/account_fetcher_service_factory.h", + "signin/account_reconcilor_factory.cc", + "signin/account_reconcilor_factory.h", + "signin/account_tracker_service_factory.cc", + "signin/account_tracker_service_factory.h", + "signin/chrome_identity_service_observer_bridge.h", + "signin/chrome_identity_service_observer_bridge.mm", + "signin/constants.h", + "signin/constants.mm", + "signin/gaia_auth_fetcher_ios.h", + "signin/gaia_auth_fetcher_ios.mm", + "signin/gaia_auth_fetcher_ios_private.h", + "signin/gaia_cookie_manager_service_factory.cc", + "signin/gaia_cookie_manager_service_factory.h", + "signin/ios_chrome_signin_status_metrics_provider_delegate.cc", + "signin/ios_chrome_signin_status_metrics_provider_delegate.h", + "signin/oauth2_token_service_factory.cc", + "signin/oauth2_token_service_factory.h", + "signin/signin_client_factory.cc", + "signin/signin_client_factory.h", + "signin/signin_client_impl.cc", + "signin/signin_client_impl.h", + "signin/signin_error_controller_factory.cc", + "signin/signin_error_controller_factory.h", + "signin/signin_manager_factory.cc", + "signin/signin_manager_factory.h", + "signin/signin_manager_factory_observer.h", + "signin/signin_util.h", + "signin/signin_util.mm", + "snapshots/lru_cache.h", + "snapshots/lru_cache.mm", + "snapshots/snapshot_cache.h", + "snapshots/snapshot_cache.mm", + "snapshots/snapshot_manager.h", + "snapshots/snapshot_manager.mm", + "snapshots/snapshot_overlay.h", + "snapshots/snapshot_overlay.mm", + "snapshots/snapshots_util.h", + "snapshots/snapshots_util.mm", + "suggestions/image_fetcher_impl.h", + "suggestions/image_fetcher_impl.mm", + "suggestions/suggestions_service_factory.h", + "suggestions/suggestions_service_factory.mm", + "sync/glue/sync_start_util.cc", + "sync/glue/sync_start_util.h", + "sync/ios_chrome_synced_tab_delegate.cc", + "sync/ios_chrome_synced_tab_delegate.h", + "sync/sessions/ios_chrome_local_session_event_router.cc", + "sync/sessions/ios_chrome_local_session_event_router.h", + "sync/sync_observer_bridge.h", + "sync/sync_observer_bridge.mm", + "sync/sync_setup_service.cc", + "sync/sync_setup_service.h", + "sync/sync_setup_service_factory.cc", + "sync/sync_setup_service_factory.h", + "tab_parenting_global_observer.cc", + "tab_parenting_global_observer.h", + "translate/after_translate_infobar_controller.h", + "translate/after_translate_infobar_controller.mm", + "translate/before_translate_infobar_controller.h", + "translate/before_translate_infobar_controller.mm", + "translate/chrome_ios_translate_client.h", + "translate/chrome_ios_translate_client.mm", + "translate/never_translate_infobar_controller.h", + "translate/never_translate_infobar_controller.mm", + "translate/translate_accept_languages_factory.cc", + "translate/translate_accept_languages_factory.h", + "translate/translate_infobar_tags.h", + "translate/translate_message_infobar_controller.h", + "translate/translate_message_infobar_controller.mm", + "translate/translate_service_ios.cc", + "translate/translate_service_ios.h", + "ui/UIView+SizeClassSupport.h", + "ui/UIView+SizeClassSupport.mm", + "ui/animation_util.h", + "ui/animation_util.mm", + "ui/autofill/autofill_client_ios.h", + "ui/autofill/autofill_client_ios.mm", + "ui/background_generator.h", + "ui/background_generator.mm", + "ui/browser_otr_state.h", + "ui/browser_otr_state.mm", + "ui/commands/UIKit+ChromeExecuteCommand.h", + "ui/commands/UIKit+ChromeExecuteCommand.mm", + "ui/commands/clear_browsing_data_command.h", + "ui/commands/clear_browsing_data_command.mm", + "ui/commands/generic_chrome_command.h", + "ui/commands/generic_chrome_command.mm", + "ui/commands/ios_command_ids.h", + "ui/commands/open_url_command.h", + "ui/commands/open_url_command.mm", + "ui/commands/set_up_for_testing_command.h", + "ui/commands/set_up_for_testing_command.mm", + "ui/commands/show_mail_composer_command.h", + "ui/commands/show_mail_composer_command.mm", + "ui/commands/show_signin_command.h", + "ui/commands/show_signin_command.mm", + "ui/file_locations.h", + "ui/file_locations.mm", + "ui/image_util.h", + "ui/image_util.mm", + "ui/keyboard/UIKeyCommand+Chrome.h", + "ui/keyboard/UIKeyCommand+Chrome.mm", + "ui/keyboard/hardware_keyboard_watcher.h", + "ui/keyboard/hardware_keyboard_watcher.mm", + "ui/legacy_size_class_support_util.h", + "ui/legacy_size_class_support_util.mm", + "ui/native_content_controller.h", + "ui/native_content_controller.mm", + "ui/omnibox/web_omnibox_edit_controller.cc", + "ui/omnibox/web_omnibox_edit_controller.h", + "ui/orientation_limiting_navigation_controller.h", + "ui/orientation_limiting_navigation_controller.mm", + "ui/reversed_animation.h", + "ui/reversed_animation.mm", + "ui/rtl_geometry.h", + "ui/rtl_geometry.mm", + "ui/show_mail_composer_util.h", + "ui/show_mail_composer_util.mm", + "ui/show_privacy_settings_util.h", + "ui/show_privacy_settings_util.mm", + "ui/side_swipe_gesture_recognizer.h", + "ui/side_swipe_gesture_recognizer.mm", + "ui/size_class_support_util.h", + "ui/size_class_support_util.mm", + "ui/ui_util.h", + "ui/ui_util.mm", + "ui/uikit_ui_util.h", + "ui/uikit_ui_util.mm", + "ui/url_loader.h", + "ui/webui/about_ui.cc", + "ui/webui/about_ui.h", + "ui/webui/crashes_ui.cc", + "ui/webui/crashes_ui.h", + "ui/webui/net_export/net_export_ui.cc", + "ui/webui/net_export/net_export_ui.h", + "ui/webui/sync_internals/sync_internals_message_handler.cc", + "ui/webui/sync_internals/sync_internals_message_handler.h", + "ui/webui/sync_internals/sync_internals_ui.cc", + "ui/webui/sync_internals/sync_internals_ui.h", + "ui/webui/version_handler.cc", + "ui/webui/version_handler.h", + "ui/webui/version_ui.cc", + "ui/webui/version_ui.h", + "undo/bookmark_undo_service_factory.cc", + "undo/bookmark_undo_service_factory.h", + "updatable_config/updatable_array.h", + "updatable_config/updatable_array.mm", + "updatable_config/updatable_config_base.h", + "updatable_config/updatable_config_base.mm", + "updatable_config/updatable_dictionary.h", + "updatable_config/updatable_dictionary.mm", + "update_client/ios_chrome_update_query_params_delegate.cc", + "update_client/ios_chrome_update_query_params_delegate.h", + "variations/ios_chrome_variations_service_client.cc", + "variations/ios_chrome_variations_service_client.h", + "web/dom_altering_lock.h", + "web/dom_altering_lock.mm", + "web/web_view_type_util.h", + "web/web_view_type_util.mm", + "web_data_service_factory.cc", + "web_data_service_factory.h", + "web_resource/web_resource_util.cc", + "web_resource/web_resource_util.h", + "xcallback_parameters.h", + "xcallback_parameters.mm", + ] + + deps = [ + "//base", + "//base:prefs", + "//breakpad:client", + "//components/autofill/core/browser", + "//components/autofill/core/common", + "//components/autofill/ios/browser", + "//components/bookmarks/browser", + "//components/bookmarks/managed", + "//components/component_updater", + "//components/content_settings/core/browser", + "//components/crash/core/browser", + "//components/crash/core/common", + "//components/data_reduction_proxy/core/common", + "//components/dom_distiller/core", + "//components/dom_distiller/ios", + "//components/domain_reliability", + "//components/enhanced_bookmarks", + "//components/favicon/core", + "//components/favicon_base", + "//components/gcm_driver", + "//components/google/core/browser", + "//components/history/core/browser", + "//components/history/ios/browser", + "//components/infobars/core", + "//components/invalidation/impl", + "//components/invalidation/public", + "//components/keyed_service/core", + "//components/keyed_service/ios", + "//components/leveldb_proto", + "//components/metrics", + "//components/metrics:net", + "//components/metrics:profiler", + "//components/metrics:ui", + "//components/net_log", + "//components/network_time", + "//components/omnibox/browser", + "//components/open_from_clipboard", + "//components/password_manager/core/browser", + "//components/password_manager/sync/browser", + "//components/policy:policy_component_common", + "//components/pref_registry", + "//components/profile_metrics", + "//components/proxy_config", + "//components/rappor", + "//components/resources", + "//components/search", + "//components/search_engines", + "//components/sessions", + "//components/signin/core/browser", + "//components/signin/core/common", + "//components/signin/ios/browser", + "//components/strings", + "//components/suggestions", + "//components/sync_driver", + "//components/sync_sessions", + "//components/syncable_prefs", + "//components/translate/core/browser", + "//components/translate/ios/browser", + "//components/undo", + "//components/update_client", + "//components/upload_list", + "//components/variations", + "//components/variations/service", + "//components/version_info", + "//components/version_ui", + "//components/web_resource", + "//components/webdata_services", + "//components/webp_transcode", + "//google_apis", + "//ios/chrome/browser/variations:ios_chrome_ui_string_overrider_factory", + "//ios/chrome/common", + "//ios/public/provider/chrome/browser", + "//ios/web", + "//net", + "//net:extras", + "//skia", + "//sync", + "//third_party/google_toolbox_for_mac", + "//ui/base", + "//ui/gfx", + "//url", + ":injected_js", + + # TODO(crbug.com/459705): add support for resource packing and change the + # dependency to be on the packed resources instead of the unpacked ones. + "//ios/chrome/app/strings", + "//ios/chrome/app/theme", + ] + + libs = [ + "Accelerate.framework", + "CoreGraphics.framework", + "CoreLocation.framework", + "Foundation.framework", + "QuartzCore.framework", + "UIKit.framework", + ] + + if (enable_rlz) { + deps += [ + "//components/rlz", + ":rlz", + ] + } + + if (enable_configuration_policy) { + deps += [ + "//components/policy/core/browser", + "//components/policy/core/common", + ] + } +} + +# TODO(crbug.com/487804): use js_compile_checked instead once the errors have +# been fixed. +js_compile_unchecked("injected_js") { + visibility = [ ":browser" ] + sources = [ + "find_in_page/resources/find_in_page.js", + ] +} + +if (enable_rlz_support) { + source_set("rlz") { + sources = [ + "rlz/rlz_tracker_delegate_impl.cc", + "rlz/rlz_tracker_delegate_impl.h", + ] + + deps = [ + "//components/google/core/browser", + "//components/omnibox/browser", + "//components/rlz", + "//components/search_engines", + "//rlz:rlz_lib", + ] + } +} + +source_set("test_support") { + testonly = true + sources = [ + "geolocation/location_manager+Testing.h", + "geolocation/test_location_manager.h", + "geolocation/test_location_manager.mm", + "net/mock_image_fetcher.h", + "net/mock_image_fetcher.mm", + "signin/fake_oauth2_token_service_builder.cc", + "signin/fake_oauth2_token_service_builder.h", + "signin/fake_signin_manager_builder.cc", + "signin/fake_signin_manager_builder.h", + "sync/sync_setup_service_mock.cc", + "sync/sync_setup_service_mock.h", + ] + + deps = [ + "//components/signin/core/browser", + "//components/signin/ios/browser", + "//ios/chrome/browser", + "//ios/chrome/test", + "//ios/public/provider/chrome/browser", + "//testing/gmock", + "//testing/gtest", + "//ui/base", + "//url", + ] +}
diff --git a/ios/chrome/browser/DEPS b/ios/chrome/browser/DEPS index 19d122f..0435608 100644 --- a/ios/chrome/browser/DEPS +++ b/ios/chrome/browser/DEPS
@@ -34,7 +34,6 @@ "+components/open_from_clipboard", "+components/password_manager/core/browser", "+components/password_manager/sync/browser", - "+components/policy/core", "+components/pref_registry", "+components/profile_metrics", "+components/proxy_config",
diff --git a/ios/chrome/browser/application_context.h b/ios/chrome/browser/application_context.h index 3efaa5c..8e15b86 100644 --- a/ios/chrome/browser/application_context.h +++ b/ios/chrome/browser/application_context.h
@@ -29,11 +29,6 @@ class NetworkTimeTracker; } -namespace policy { -class BrowserPolicyConnector; -class PolicyService; -} - namespace rappor { class RapporService; } @@ -84,12 +79,6 @@ // Gets the VariationsService used by this application. virtual variations::VariationsService* GetVariationsService() = 0; - // Gets the policy connector, creating and starting it if necessary. - virtual policy::BrowserPolicyConnector* GetBrowserPolicyConnector() = 0; - - // Gets the policy service. - virtual policy::PolicyService* GetPolicyService() = 0; - // Gets the RapporService. May return null. virtual rappor::RapporService* GetRapporService() = 0;
diff --git a/ios/chrome/browser/application_context_impl.cc b/ios/chrome/browser/application_context_impl.cc index c95a0af..3d42d10 100644 --- a/ios/chrome/browser/application_context_impl.cc +++ b/ios/chrome/browser/application_context_impl.cc
@@ -35,13 +35,6 @@ #include "net/log/net_log_capture_mode.h" #include "net/socket/client_socket_pool_manager.h" -#if defined(ENABLE_CONFIGURATION_POLICY) -#include "components/policy/core/browser/browser_policy_connector.h" -#include "components/policy/core/common/policy_service.h" -#else -#include "components/policy/core/common/policy_service_stub.h" -#endif - ApplicationContextImpl::ApplicationContextImpl( base::SequencedTaskRunner* local_state_task_runner, const base::CommandLine& command_line) @@ -172,23 +165,6 @@ return ios::GetChromeBrowserProvider()->GetVariationsService(); } -policy::BrowserPolicyConnector* -ApplicationContextImpl::GetBrowserPolicyConnector() { - DCHECK(thread_checker_.CalledOnValidThread()); - return ios::GetChromeBrowserProvider()->GetBrowserPolicyConnector(); -} - -policy::PolicyService* ApplicationContextImpl::GetPolicyService() { - DCHECK(thread_checker_.CalledOnValidThread()); -#if defined(ENABLE_CONFIGURATION_POLICY) - return GetBrowserPolicyConnector()->GetPolicyService(); -#else - if (!policy_service_) - policy_service_.reset(new policy::PolicyServiceStub); - return policy_service_.get(); -#endif -} - rappor::RapporService* ApplicationContextImpl::GetRapporService() { DCHECK(thread_checker_.CalledOnValidThread()); return ios::GetChromeBrowserProvider()->GetRapporService(); @@ -221,9 +197,8 @@ // Register local state preferences. RegisterLocalStatePrefs(pref_registry.get()); - local_state_ = - ::CreateLocalState(local_state_path, local_state_task_runner_.get(), - GetPolicyService(), pref_registry, false); + local_state_ = ::CreateLocalState( + local_state_path, local_state_task_runner_.get(), pref_registry, false); const int max_per_proxy = local_state_->GetInteger(ios::prefs::kMaxConnectionsPerProxy);
diff --git a/ios/chrome/browser/application_context_impl.h b/ios/chrome/browser/application_context_impl.h index e02aace5..caea5172 100644 --- a/ios/chrome/browser/application_context_impl.h +++ b/ios/chrome/browser/application_context_impl.h
@@ -43,8 +43,6 @@ ios::ChromeBrowserStateManager* GetChromeBrowserStateManager() override; metrics::MetricsService* GetMetricsService() override; variations::VariationsService* GetVariationsService() override; - policy::BrowserPolicyConnector* GetBrowserPolicyConnector() override; - policy::PolicyService* GetPolicyService() override; rappor::RapporService* GetRapporService() override; net_log::ChromeNetLog* GetNetLog() override; network_time::NetworkTimeTracker* GetNetworkTimeTracker() override; @@ -57,13 +55,6 @@ scoped_ptr<network_time::NetworkTimeTracker> network_time_tracker_; std::string application_locale_; -#if !defined(ENABLE_CONFIGURATION_POLICY) - // Must be destroyed after |local_state_|. - // This is a stub when policy is not enabled. Otherwise the PolicyService is - // owned by the BrowserPolicyConnector and this is not used. - scoped_ptr<policy::PolicyService> policy_service_; -#endif - // Sequenced task runner for local state related I/O tasks. const scoped_refptr<base::SequencedTaskRunner> local_state_task_runner_;
diff --git a/ios/chrome/browser/net/ios_chrome_network_delegate.cc b/ios/chrome/browser/net/ios_chrome_network_delegate.cc index 19bcb45..78269906 100644 --- a/ios/chrome/browser/net/ios_chrome_network_delegate.cc +++ b/ios/chrome/browser/net/ios_chrome_network_delegate.cc
@@ -28,10 +28,6 @@ #include "net/log/net_log.h" #include "net/url_request/url_request.h" -#if defined(ENABLE_CONFIGURATION_POLICY) -#include "components/policy/core/browser/url_blacklist_manager.h" -#endif - namespace { const char kDNTHeader[] = "DNT"; @@ -73,9 +69,6 @@ IOSChromeNetworkDelegate::IOSChromeNetworkDelegate() : enable_do_not_track_(nullptr), -#if defined(ENABLE_CONFIGURATION_POLICY) - url_blacklist_manager_(nullptr), -#endif domain_reliability_monitor_(nullptr) { } @@ -102,22 +95,6 @@ FROM_HERE_WITH_EXPLICIT_FUNCTION( "456327 URLRequest::IOSChromeNetworkDelegate::OnBeforeURLRequest")); -#if defined(ENABLE_CONFIGURATION_POLICY) - int error = net::ERR_BLOCKED_BY_ADMINISTRATOR; - // iOS cannot check the resource type, block everything. - // See http://crbug.com/338283 and http://crbug.com/489704 - if (url_blacklist_manager_ && - url_blacklist_manager_->ShouldBlockRequestForFrame(request->url(), - &error)) { - // URL access blocked by policy. - request->net_log().AddEvent( - net::NetLog::TYPE_CHROME_POLICY_ABORTED_REQUEST, - net::NetLog::StringCallback("url", - &request->url().possibly_invalid_spec())); - return error; - } -#endif - // TODO(mmenke): Remove ScopedTracker below once crbug.com/456327 is fixed. tracked_objects::ScopedTracker tracking_profile2( FROM_HERE_WITH_EXPLICIT_FUNCTION(
diff --git a/ios/chrome/browser/net/ios_chrome_network_delegate.h b/ios/chrome/browser/net/ios_chrome_network_delegate.h index f6f1f18..1a5e27d 100644 --- a/ios/chrome/browser/net/ios_chrome_network_delegate.h +++ b/ios/chrome/browser/net/ios_chrome_network_delegate.h
@@ -24,10 +24,6 @@ class DomainReliabilityMonitor; } -namespace policy { -class URLBlacklistManager; -} - // IOSChromeNetworkDelegate is the central point from within the Chrome code to // add hooks into the network stack. class IOSChromeNetworkDelegate : public net::NetworkDelegateImpl { @@ -35,13 +31,6 @@ IOSChromeNetworkDelegate(); ~IOSChromeNetworkDelegate() override; -#if defined(ENABLE_CONFIGURATION_POLICY) - void set_url_blacklist_manager( - const policy::URLBlacklistManager* url_blacklist_manager) { - url_blacklist_manager_ = url_blacklist_manager; - } -#endif - // If |cookie_settings| is null or not set, all cookies are enabled, // otherwise the settings are enforced on all observed network requests. // Not inlined because we assign a scoped_refptr, which requires us to include @@ -100,10 +89,7 @@ // Weak, owned by our owner. BooleanPrefMember* enable_do_not_track_; -// Weak, owned by our owner. -#if defined(ENABLE_CONFIGURATION_POLICY) - const policy::URLBlacklistManager* url_blacklist_manager_; -#endif + // Weak, owned by our owner. domain_reliability::DomainReliabilityMonitor* domain_reliability_monitor_; DISALLOW_COPY_AND_ASSIGN(IOSChromeNetworkDelegate);
diff --git a/ios/chrome/browser/prefs/browser_prefs.mm b/ios/chrome/browser/prefs/browser_prefs.mm index ec6d7a9..39755ad 100644 --- a/ios/chrome/browser/prefs/browser_prefs.mm +++ b/ios/chrome/browser/prefs/browser_prefs.mm
@@ -34,12 +34,6 @@ #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" #include "ui/base/l10n/l10n_util.h" -#if defined(ENABLE_CONFIGURATION_POLICY) -#include "components/policy/core/browser/browser_policy_connector.h" -#include "components/policy/core/browser/url_blacklist_manager.h" -#include "components/policy/core/common/policy_statistics_collector.h" -#endif // defined(ENABLE_CONFIGURATION_POLICY) - namespace { // TODO(crbug.com/525079): those preferences are not used on iOS but are @@ -60,11 +54,6 @@ variations::VariationsService::RegisterPrefs(registry); web_resource::PromoResourceService::RegisterPrefs(registry); -#if defined(ENABLE_CONFIGURATION_POLICY) - policy::BrowserPolicyConnector::RegisterPrefs(registry); - policy::PolicyStatisticsCollector::RegisterPrefs(registry); -#endif - // Preferences related to the browser state manager. registry->RegisterStringPref(ios::prefs::kBrowserStateLastUsed, std::string()); @@ -103,10 +92,6 @@ web_resource::PromoResourceService::RegisterProfilePrefs(registry); ZeroSuggestProvider::RegisterProfilePrefs(registry); -#if defined(ENABLE_CONFIGURATION_POLICY) - policy::URLBlacklistManager::RegisterProfilePrefs(registry); -#endif - registry->RegisterBooleanPref( ios::prefs::kEnableDoNotTrack, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
diff --git a/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.cc b/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.cc index 85e7dc36..a906c53 100644 --- a/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.cc +++ b/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.cc
@@ -32,20 +32,12 @@ } void PrepareFactory(syncable_prefs::PrefServiceSyncableFactory* factory, - policy::PolicyService* policy_service, const base::FilePath& pref_filename, base::SequencedTaskRunner* pref_io_task_runner, bool async) { factory->set_user_prefs(make_scoped_refptr(new JsonPrefStore( pref_filename, pref_io_task_runner, scoped_ptr<PrefFilter>()))); -#if defined(ENABLE_CONFIGURATION_POLICY) - policy::BrowserPolicyConnector* policy_connector = - GetApplicationContext()->GetBrowserPolicyConnector(); - factory->SetManagedPolicies(policy_service, policy_connector); - factory->SetRecommendedPolicies(policy_service, policy_connector); -#endif // ENABLE_CONFIGURATION_POLICY - factory->set_async(async); factory->set_read_error_callback(base::Bind(&HandleReadError)); factory->SetPrefModelAssociatorClient( @@ -57,12 +49,10 @@ scoped_ptr<PrefService> CreateLocalState( const base::FilePath& pref_filename, base::SequencedTaskRunner* pref_io_task_runner, - policy::PolicyService* policy_service, const scoped_refptr<PrefRegistry>& pref_registry, bool async) { syncable_prefs::PrefServiceSyncableFactory factory; - PrepareFactory(&factory, policy_service, pref_filename, pref_io_task_runner, - async); + PrepareFactory(&factory, pref_filename, pref_io_task_runner, async); return factory.Create(pref_registry.get()); } @@ -70,7 +60,6 @@ const base::FilePath& browser_state_path, base::SequencedTaskRunner* pref_io_task_runner, TrackedPreferenceValidationDelegate* validation_delegate, - policy::PolicyService* policy_service, const scoped_refptr<user_prefs::PrefRegistrySyncable>& pref_registry, bool async) { // chrome_prefs::CreateProfilePrefs uses ProfilePrefStoreManager to create @@ -79,8 +68,7 @@ // simple JsonPrefStore to store them (which is what PrefStoreManager uses // on platforms that do not track preference modifications). syncable_prefs::PrefServiceSyncableFactory factory; - PrepareFactory(&factory, policy_service, - browser_state_path.Append(kPreferencesFilename), + PrepareFactory(&factory, browser_state_path.Append(kPreferencesFilename), pref_io_task_runner, async); scoped_ptr<syncable_prefs::PrefServiceSyncable> pref_service = factory.CreateSyncable(pref_registry.get());
diff --git a/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h b/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h index 5168d29..5971ab2 100644 --- a/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h +++ b/ios/chrome/browser/prefs/ios_chrome_pref_service_factory.h
@@ -22,10 +22,6 @@ class ChromeBrowserState; } -namespace policy { -class PolicyService; -} - namespace syncable_prefs { class PrefServiceSyncable; } @@ -37,13 +33,11 @@ // Factory methods that create and initialize a new instance of a PrefService // for Chrome on iOS with the applicable PrefStores. The |pref_filename| points // to the user preference file. This is the usual way to create a new -// PrefService. |policy_service| is used as the source for mandatory or -// recommended policies. |pref_registry| keeps the list of registered prefs and -// their default valuers. If |async| is true, asynchronous version is used. +// PrefService. |pref_registry| keeps the list of registered prefs and their +// default valuers. If |async| is true, asynchronous version is used. scoped_ptr<PrefService> CreateLocalState( const base::FilePath& pref_filename, base::SequencedTaskRunner* pref_io_task_runner, - policy::PolicyService* policy_service, const scoped_refptr<PrefRegistry>& pref_registry, bool async); @@ -51,7 +45,6 @@ const base::FilePath& browser_state_path, base::SequencedTaskRunner* pref_io_task_runner, TrackedPreferenceValidationDelegate* validation_delegate, - policy::PolicyService* policy_service, const scoped_refptr<user_prefs::PrefRegistrySyncable>& pref_registry, bool async);
diff --git a/ios/chrome/browser/variations/BUILD.gn b/ios/chrome/browser/variations/BUILD.gn new file mode 100644 index 0000000..3998d28 --- /dev/null +++ b/ios/chrome/browser/variations/BUILD.gn
@@ -0,0 +1,29 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//components/variations/service/generate_ui_string_overrider.gni") + +generate_ui_string_overrider("ios_chrome_ui_string_overrider_factory") { + inputs = [ + "$root_gen_dir/components/strings/grit/components_chromium_strings.h", + "$root_gen_dir/components/strings/grit/components_google_chrome_strings.h", + "$root_gen_dir/components/strings/grit/components_strings.h", + "$root_gen_dir/ios/chrome/grit/ios_chromium_strings.h", + "$root_gen_dir/ios/chrome/grit/ios_google_chrome_strings.h", + "$root_gen_dir/ios/chrome/grit/ios_locale_settings.h", + "$root_gen_dir/ios/chrome/grit/ios_strings.h", + ] + deps = [ + "//components/strings:components_chromium_strings", + "//components/strings:components_google_chrome_strings", + "//components/strings:components_strings", + "//ios/chrome/app/strings:ios_chromium_strings", + "//ios/chrome/app/strings:ios_google_chrome_strings", + "//ios/chrome/app/strings:ios_locale_settings", + "//ios/chrome/app/strings:ios_strings", + ] + namespace = "" # Put the functions in the global namespace on iOS. + header_filename = "ios_ui_string_overrider_factory.h" + source_filename = "ios_ui_string_overrider_factory.cc" +}
diff --git a/ios/chrome/common/BUILD.gn b/ios/chrome/common/BUILD.gn new file mode 100644 index 0000000..67db8c0 --- /dev/null +++ b/ios/chrome/common/BUILD.gn
@@ -0,0 +1,23 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("common") { + sources = [ + "channel_info.h", + "channel_info.mm", + "string_util.h", + "string_util.mm", + ] + + deps = [ + "//base", + "//components/version_info", + "//ios/chrome/common/app_group:main_app", + ] + + libs = [ + "CoreGraphics.framework", + "Foundation.framework", + ] +}
diff --git a/ios/chrome/common/app_group/BUILD.gn b/ios/chrome/common/app_group/BUILD.gn new file mode 100644 index 0000000..8da60efe --- /dev/null +++ b/ios/chrome/common/app_group/BUILD.gn
@@ -0,0 +1,46 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("app_group") { + sources = [ + "app_group_constants.h", + "app_group_constants.mm", + "app_group_metrics.h", + "app_group_metrics.mm", + ] + + deps = [ + "//base", + "//components/version_info", + ] + + libs = [ + "CoreGraphics.framework", + "Foundation.framework", + ] +} + +# This target will be included into application extensions and the list +# of its dependencies must be kept as short as possible. +source_set("client") { + sources = [ + "app_group_metrics_client.h", + "app_group_metrics_client.mm", + ] + + deps = [ + ":app_group", + ] +} + +source_set("main_app") { + sources = [ + "app_group_metrics_mainapp.h", + "app_group_metrics_mainapp.mm", + ] + + deps = [ + ":app_group", + ] +}
diff --git a/ios/chrome/ios_chrome.gyp b/ios/chrome/ios_chrome.gyp index 03007e35..4b42e70 100644 --- a/ios/chrome/ios_chrome.gyp +++ b/ios/chrome/ios_chrome.gyp
@@ -8,6 +8,7 @@ }, 'targets': [ { + # GN version: //ios/chrome/app 'target_name': 'ios_chrome_app', 'type': 'static_library', 'include_dirs': [ @@ -35,6 +36,7 @@ ], }, { + # GN version: //ios/chrome/browser 'target_name': 'ios_chrome_browser', 'type': 'static_library', 'include_dirs': [ @@ -571,15 +573,10 @@ 'ios_chrome_browser_rlz', ], }], - ['configuration_policy==1', { - 'dependencies': [ - '../../components/components.gyp:policy_component_browser', - '../../components/components.gyp:policy_component_common', - ], - }], ], }, { + # GN version: //ios/chrome/common 'target_name': 'ios_chrome_common', 'type': 'static_library', 'include_dirs': [ @@ -604,6 +601,7 @@ ], }, { + # GN version: //ios/chrome/browser:injected_js 'target_name': 'injected_js', 'type': 'none', 'sources': [ @@ -617,6 +615,7 @@ }, }, { + # GN version: //ios/chrome/common/app_group 'target_name': 'app_group_common', 'type': 'static_library', 'sources': [ @@ -636,6 +635,7 @@ ], }, { + # GN version: //ios/chrome/common/app_group:client 'target_name': 'app_group_client', 'type': 'static_library', 'sources': [ @@ -652,6 +652,7 @@ ], }, { + # GN version: //ios/chrome/common/app_group:main_app 'target_name': 'app_group_mainapp', 'type': 'static_library', 'sources': [ @@ -670,6 +671,7 @@ ['enable_rlz_support==1', { 'targets': [ { + # GN version: //ios/chrome/browser/rlz 'target_name': 'ios_chrome_browser_rlz', 'type': 'static_library', 'sources': [
diff --git a/ios/chrome/ios_chrome_resources.gyp b/ios/chrome/ios_chrome_resources.gyp index d23d4eb..d085be8 100644 --- a/ios/chrome/ios_chrome_resources.gyp +++ b/ios/chrome/ios_chrome_resources.gyp
@@ -40,11 +40,13 @@ ], }, { + # GN version: //ios/chrome/app/strings 'target_name': 'ios_strings_gen', 'type': 'none', 'hard_dependency': 1, 'actions': [ { + # GN version: //ios/chrome/app/strings:ios_locale_settings 'action_name': 'generate_ios_locale_settings', 'variables': { 'grit_whitelist': '', @@ -53,6 +55,7 @@ 'includes': [ '../../build/grit_action.gypi' ], }, { + # GN version: //ios/chrome/app/strings:ios_strings 'action_name': 'generate_ios_strings', 'variables': { 'grit_whitelist': '', @@ -61,6 +64,7 @@ 'includes': [ '../../build/grit_action.gypi' ], }, { + # GN version: //ios/chrome/app/strings:ios_chromium_strings 'action_name': 'generate_ios_chromium_strings', 'variables': { 'grit_whitelist': '', @@ -69,6 +73,7 @@ 'includes': [ '../../build/grit_action.gypi' ], }, { + # GN version: //ios/chrome/app/strings:ios_google_chrome_strings 'action_name': 'generate_ios_google_chrome_strings', 'variables': { 'grit_whitelist': '', @@ -91,6 +96,7 @@ } }, { + # GN version: //ios/chrome/app/theme 'target_name': 'ios_theme_resources_gen', 'type': 'none', 'hard_dependency': 1,
diff --git a/ios/chrome/ios_chrome_tests.gyp b/ios/chrome/ios_chrome_tests.gyp index fba3a28..3fca9b9 100644 --- a/ios/chrome/ios_chrome_tests.gyp +++ b/ios/chrome/ios_chrome_tests.gyp
@@ -7,6 +7,7 @@ }, 'targets': [ { + # GN version: //ios/chrome:ios_chrome_unittests 'target_name': 'ios_chrome_unittests', 'type': '<(gtest_target_type)', 'dependencies': [ @@ -87,6 +88,7 @@ 'includes': ['ios_chrome_resources_bundle.gypi'], }, { + # GN version: //ios/chrome/browser:test_support + //ios/public/test 'target_name': 'ios_chrome_test_support', 'type': 'static_library', 'dependencies': [
diff --git a/ios/chrome/test/BUILD.gn b/ios/chrome/test/BUILD.gn new file mode 100644 index 0000000..144082b8 --- /dev/null +++ b/ios/chrome/test/BUILD.gn
@@ -0,0 +1,32 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("test") { + testonly = true + sources = [ + "block_cleanup_test.h", + "block_cleanup_test.mm", + "ios_chrome_scoped_testing_local_state.cc", + "ios_chrome_scoped_testing_local_state.h", + "ios_chrome_unit_test_suite.cc", + "ios_chrome_unit_test_suite.h", + "run_all_unittests.cc", + "testing_application_context.cc", + "testing_application_context.h", + ] + + deps = [ + "//base", + "//base:prefs", + "//components/network_time", + "//ios/chrome/browser", + "//ios/public/provider/chrome/browser", + "//ios/public/test", + "//ios/web", + "//testing/gmock", + "//testing/gtest", + "//ui/base", + "//url", + ] +}
diff --git a/ios/chrome/test/testing_application_context.cc b/ios/chrome/test/testing_application_context.cc index 62b2c255..dd93fe1 100644 --- a/ios/chrome/test/testing_application_context.cc +++ b/ios/chrome/test/testing_application_context.cc
@@ -90,17 +90,6 @@ return nullptr; } -policy::BrowserPolicyConnector* -TestingApplicationContext::GetBrowserPolicyConnector() { - DCHECK(thread_checker_.CalledOnValidThread()); - return nullptr; -} - -policy::PolicyService* TestingApplicationContext::GetPolicyService() { - DCHECK(thread_checker_.CalledOnValidThread()); - return nullptr; -} - rappor::RapporService* TestingApplicationContext::GetRapporService() { DCHECK(thread_checker_.CalledOnValidThread()); return nullptr;
diff --git a/ios/chrome/test/testing_application_context.h b/ios/chrome/test/testing_application_context.h index 8025c45..0130319 100644 --- a/ios/chrome/test/testing_application_context.h +++ b/ios/chrome/test/testing_application_context.h
@@ -38,8 +38,6 @@ ios::ChromeBrowserStateManager* GetChromeBrowserStateManager() override; metrics::MetricsService* GetMetricsService() override; variations::VariationsService* GetVariationsService() override; - policy::BrowserPolicyConnector* GetBrowserPolicyConnector() override; - policy::PolicyService* GetPolicyService() override; rappor::RapporService* GetRapporService() override; net_log::ChromeNetLog* GetNetLog() override; network_time::NetworkTimeTracker* GetNetworkTimeTracker() override;
diff --git a/ios/ios_tests.gyp b/ios/ios_tests.gyp index 18f296e..f86457e 100644 --- a/ios/ios_tests.gyp +++ b/ios/ios_tests.gyp
@@ -7,6 +7,7 @@ }, 'targets': [ { + # GN version: //ios/public/test 'target_name': 'test_support_ios', 'type': 'static_library', 'sources': [
diff --git a/ios/public/provider/chrome/browser/chrome_browser_provider.cc b/ios/public/provider/chrome/browser/chrome_browser_provider.cc index 6c2ac7d..84d57f1 100644 --- a/ios/public/provider/chrome/browser/chrome_browser_provider.cc +++ b/ios/public/provider/chrome/browser/chrome_browser_provider.cc
@@ -128,11 +128,6 @@ return std::string(); } -policy::BrowserPolicyConnector* -ChromeBrowserProvider::GetBrowserPolicyConnector() { - return nullptr; -} - rappor::RapporService* ChromeBrowserProvider::GetRapporService() { return nullptr; }
diff --git a/ios/public/provider/chrome/browser/chrome_browser_provider.h b/ios/public/provider/chrome/browser/chrome_browser_provider.h index c3c43fd..eda0916c 100644 --- a/ios/public/provider/chrome/browser/chrome_browser_provider.h +++ b/ios/public/provider/chrome/browser/chrome_browser_provider.h
@@ -33,10 +33,6 @@ class URLRequestContextGetter; } -namespace policy { -class BrowserPolicyConnector; -} - namespace rappor { class RapporService; } @@ -135,8 +131,6 @@ autofill::CardUnmaskPromptController* controller); // Returns risk data used in Wallet requests. virtual std::string GetRiskData(); - // Starts and manages the policy system. - virtual policy::BrowserPolicyConnector* GetBrowserPolicyConnector(); // Returns the RapporService. May be null. virtual rappor::RapporService* GetRapporService(); // Returns whether there is an Off-The-Record session active.
diff --git a/ios/public/test/BUILD.gn b/ios/public/test/BUILD.gn new file mode 100644 index 0000000..47f2e41 --- /dev/null +++ b/ios/public/test/BUILD.gn
@@ -0,0 +1,30 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("test") { + testonly = true + sources = [ + "fake_string_provider.cc", + "fake_string_provider.h", + "fake_sync_service_factory.cc", + "fake_sync_service_factory.h", + "test_chrome_browser_provider.h", + "test_chrome_browser_provider.mm", + "test_chrome_provider_initializer.cc", + "test_chrome_provider_initializer.h", + "test_keyed_service_provider.cc", + "test_keyed_service_provider.h", + "test_updatable_resource_provider.h", + "test_updatable_resource_provider.mm", + ] + + deps = [ + "//base", + "//components/keyed_service/core", + "//components/keyed_service/ios", + "//ios/public/provider/chrome/browser", + "//sync", + "//testing/gtest", + ] +}
diff --git a/ios/web/js_compile.gni b/ios/web/js_compile.gni index 6c9590af1..a8c70713 100644 --- a/ios/web/js_compile.gni +++ b/ios/web/js_compile.gni
@@ -30,7 +30,8 @@ # Generates a single JavaScript bundle file that can be put in the application # bundle. # -# TODO(eugenebut): this should uses the same error flags as js_compile_checked. +# TODO(crbug.com/487804): once all errors have been fixed, sync with the flags +# from third_party/closure_compiler/closure_args.gni. template("js_compile_bundle") { assert(defined(invoker.sources), "Need sources in $target_name listing the js files.") @@ -86,8 +87,8 @@ # visibility (optional) # Visibility restrictions. # -# TODO(eugenebut): use flags from third_party/closure_compiler/closure_args.gni -# once they are the same. +# TODO(crbug.com/487804): once all errors have been fixed, sync with the flags +# from third_party/closure_compiler/closure_args.gni. template("js_compile_checked") { assert(defined(invoker.sources), "Need sources in $target_name listing the js files.") @@ -106,8 +107,8 @@ "$target_gen_dir/{{source_file_part}}", ] - # TODO(eugenebut): need to enable the following compilation checks once - # the corresponding errors have been fixed: + # TODO(crbug.com/487804): need to enable the following compilation checks + # once the corresponding errors have been fixed: # --jscomp_error=checkTypes # --jscomp_error=checkVars # --jscomp_error=missingProperties @@ -169,3 +170,79 @@ } } } + +# Defines a target that compile JavaScript files without error checking using +# the closure compiler. +# +# Variables +# sources: +# List of JavaScript files to compile. +# +# deps (optional) +# List of targets required by this target. +# +# visibility (optional) +# Visibility restrictions. +# +# TODO(crbug.com/487804): once all errors have been fixed, remove this template +# and port all code to use js_compile_checked instead. +template("js_compile_unchecked") { + assert(defined(invoker.sources), + "Need sources in $target_name listing the js files.") + + if (compile_javascript) { + java_action_foreach(target_name) { + forward_variables_from(invoker, + [ + "deps", + "visibility", + ]) + + script = closure_compiler_path + sources = invoker.sources + outputs = [ + "$target_gen_dir/{{source_file_part}}", + ] + + args = [ + "--compilation_level", + "SIMPLE_OPTIMIZATIONS", + "--js", + "{{source}}", + "--js_output_file", + rebase_path("$target_gen_dir/{{source_file_part}}", root_build_dir), + ] + + # TODO(crbug.com/546283): add the generated bundle to the list of files + # to move in the application bundle, equivalent to the following gyp code: + # + # "link_settings": { + # "mac_bundle_resources": [ + # "<(SHARED_INTERMEDIATE_DIR)/<(RULE_INPUT_NAME).js", + # ], + # }, + } + } else { + copy(target_name) { + forward_variables_from(invoker, + [ + "deps", + "visibility", + ]) + + sources = invoker.sources + outputs = [ + "$target_gen_dir/{{source_file_part}}", + ] + + # TODO(crbug.com/546283): add the generated bundle to the list of files + # to move in the application bundle, equivalent to the following gyp code: + # + # "link_settings": { + # "mac_bundle_resources": [ + # "<(SHARED_INTERMEDIATE_DIR)/<(RULE_INPUT_NAME).js", + # ], + # }, + } + } +}
diff --git a/ipc/ipc_channel_proxy.cc b/ipc/ipc_channel_proxy.cc index 84f87fc8..7c4eb7d 100644 --- a/ipc/ipc_channel_proxy.cc +++ b/ipc/ipc_channel_proxy.cc
@@ -419,8 +419,8 @@ context_->CreateChannel(factory.Pass()); } else { context_->ipc_task_runner()->PostTask( - FROM_HERE, base::Bind(&Context::CreateChannel, - context_.get(), Passed(factory.Pass()))); + FROM_HERE, base::Bind(&Context::CreateChannel, context_.get(), + base::Passed(&factory))); } // complete initialization on the background thread
diff --git a/ipc/mojo/ipc_channel_mojo.cc b/ipc/mojo/ipc_channel_mojo.cc index 8ae0de50..97330dc 100644 --- a/ipc/mojo/ipc_channel_mojo.cc +++ b/ipc/mojo/ipc_channel_mojo.cc
@@ -4,6 +4,8 @@ #include "ipc/mojo/ipc_channel_mojo.h" +#include <memory> + #include "base/bind.h" #include "base/bind_helpers.h" #include "base/command_line.h" @@ -361,7 +363,7 @@ // ClosingDeleter calls |CloseWithErrorIfPending| before deleting the // |MessagePipeReader|. struct ClosingDeleter { - typedef base::DefaultDeleter<internal::MessagePipeReader> DefaultType; + typedef std::default_delete<internal::MessagePipeReader> DefaultType; void operator()(internal::MessagePipeReader* ptr) const { ptr->CloseWithErrorIfPending();
diff --git a/ipc/mojo/ipc_message_pipe_reader.h b/ipc/mojo/ipc_message_pipe_reader.h index 01e4fff..01baa37f 100644 --- a/ipc/mojo/ipc_message_pipe_reader.h +++ b/ipc/mojo/ipc_message_pipe_reader.h
@@ -5,6 +5,7 @@ #ifndef IPC_IPC_MESSAGE_PIPE_READER_H_ #define IPC_IPC_MESSAGE_PIPE_READER_H_ +#include <memory> #include <vector> #include "base/atomicops.h" @@ -49,7 +50,7 @@ // This is intended to used by MessagePipeReader owners. class DelayedDeleter { public: - typedef base::DefaultDeleter<MessagePipeReader> DefaultType; + typedef std::default_delete<MessagePipeReader> DefaultType; static void DeleteNow(MessagePipeReader* ptr) { delete ptr; }
diff --git a/media/base/audio_buffer_converter.cc b/media/base/audio_buffer_converter.cc index 8c5ec1c..5fd92df 100644 --- a/media/base/audio_buffer_converter.cc +++ b/media/base/audio_buffer_converter.cc
@@ -4,6 +4,7 @@ #include "media/base/audio_buffer_converter.h" +#include <algorithm> #include <cmath> #include "base/logging.h"
diff --git a/media/base/serial_runner.h b/media/base/serial_runner.h index 9750e212..fb1b66075 100644 --- a/media/base/serial_runner.h +++ b/media/base/serial_runner.h
@@ -5,6 +5,7 @@ #ifndef MEDIA_BASE_SERIAL_RUNNER_H_ #define MEDIA_BASE_SERIAL_RUNNER_H_ +#include <memory> #include <queue> #include "base/callback.h" @@ -65,7 +66,7 @@ const Queue& bound_fns, const PipelineStatusCB& done_cb); private: - friend struct base::DefaultDeleter<SerialRunner>; + friend std::default_delete<SerialRunner>; SerialRunner(const Queue& bound_fns, const PipelineStatusCB& done_cb); ~SerialRunner();
diff --git a/media/base/yuv_convert.cc b/media/base/yuv_convert.cc index 0b59cdf0..20fba1f 100644 --- a/media/base/yuv_convert.cc +++ b/media/base/yuv_convert.cc
@@ -17,6 +17,8 @@ #include "media/base/yuv_convert.h" +#include <algorithm> + #include "base/cpu.h" #include "base/lazy_instance.h" #include "base/logging.h"
diff --git a/media/blink/interval_map.h b/media/blink/interval_map.h index 74cdca7..aa53003 100644 --- a/media/blink/interval_map.h +++ b/media/blink/interval_map.h
@@ -5,6 +5,7 @@ #ifndef MEDIA_BLINK_INTERVAL_MAP_H_ #define MEDIA_BLINK_INTERVAL_MAP_H_ +#include <algorithm> #include <limits> #include <map>
diff --git a/media/cast/logging/stats_event_subscriber.cc b/media/cast/logging/stats_event_subscriber.cc index 9d68710..a254e634 100644 --- a/media/cast/logging/stats_event_subscriber.cc +++ b/media/cast/logging/stats_event_subscriber.cc
@@ -2,10 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include <cmath> - #include "media/cast/logging/stats_event_subscriber.h" +#include <algorithm> +#include <cmath> + #include "base/format_macros.h" #include "base/logging.h" #include "base/strings/stringprintf.h"
diff --git a/media/filters/vp9_parser.cc b/media/filters/vp9_parser.cc index b425f198..322aef29 100644 --- a/media/filters/vp9_parser.cc +++ b/media/filters/vp9_parser.cc
@@ -6,6 +6,8 @@ #include "media/filters/vp9_parser.h" +#include <algorithm> + #include "base/logging.h" #include "base/numerics/safe_conversions.h"
diff --git a/media/renderers/mock_gpu_video_accelerator_factories.h b/media/renderers/mock_gpu_video_accelerator_factories.h index f6c9dd7..57a73e1 100644 --- a/media/renderers/mock_gpu_video_accelerator_factories.h +++ b/media/renderers/mock_gpu_video_accelerator_factories.h
@@ -5,6 +5,7 @@ #ifndef MEDIA_RENDERERS_MOCK_GPU_VIDEO_ACCELERATOR_FACTORIES_H_ #define MEDIA_RENDERERS_MOCK_GPU_VIDEO_ACCELERATOR_FACTORIES_H_ +#include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/single_thread_task_runner.h" #include "media/renderers/gpu_video_accelerator_factories.h" @@ -12,9 +13,6 @@ #include "media/video/video_encode_accelerator.h" #include "testing/gmock/include/gmock/gmock.h" -template <class T> -class scoped_refptr; - namespace base { class SharedMemory; }
diff --git a/media/video/video_decode_accelerator.cc b/media/video/video_decode_accelerator.cc index 0c6b2b9..7449a2ae 100644 --- a/media/video/video_decode_accelerator.cc +++ b/media/video/video_decode_accelerator.cc
@@ -38,14 +38,11 @@ } // namespace media -namespace base { +namespace std { -void DefaultDeleter<media::VideoDecodeAccelerator>::operator()( - void* video_decode_accelerator) const { - static_cast<media::VideoDecodeAccelerator*>(video_decode_accelerator)-> - Destroy(); +void default_delete<media::VideoDecodeAccelerator>::operator()( + media::VideoDecodeAccelerator* vda) const { + vda->Destroy(); } -} // namespace base - - +} // namespace std
diff --git a/media/video/video_decode_accelerator.h b/media/video/video_decode_accelerator.h index a53e352b..e2bcdf6 100644 --- a/media/video/video_decode_accelerator.h +++ b/media/video/video_decode_accelerator.h
@@ -5,6 +5,7 @@ #ifndef MEDIA_VIDEO_VIDEO_DECODE_ACCELERATOR_H_ #define MEDIA_VIDEO_VIDEO_DECODE_ACCELERATOR_H_ +#include <memory> #include <vector> #include "base/basictypes.h" @@ -190,19 +191,15 @@ } // namespace media -namespace base { +namespace std { -template <class T> -struct DefaultDeleter; - -// Specialize DefaultDeleter so that scoped_ptr<VideoDecodeAccelerator> always +// Specialize std::default_delete so that scoped_ptr<VideoDecodeAccelerator> // uses "Destroy()" instead of trying to use the destructor. template <> -struct MEDIA_EXPORT DefaultDeleter<media::VideoDecodeAccelerator> { - public: - void operator()(void* video_decode_accelerator) const; +struct MEDIA_EXPORT default_delete<media::VideoDecodeAccelerator> { + void operator()(media::VideoDecodeAccelerator* vda) const; }; -} // namespace base +} // namespace std #endif // MEDIA_VIDEO_VIDEO_DECODE_ACCELERATOR_H_
diff --git a/media/video/video_encode_accelerator.cc b/media/video/video_encode_accelerator.cc index dccd31d..51a4a7bb 100644 --- a/media/video/video_encode_accelerator.cc +++ b/media/video/video_encode_accelerator.cc
@@ -19,13 +19,11 @@ } // namespace media -namespace base { +namespace std { -void DefaultDeleter<media::VideoEncodeAccelerator>::operator()( - void* video_encode_accelerator) const { - static_cast<media::VideoEncodeAccelerator*>(video_encode_accelerator)-> - Destroy(); +void default_delete<media::VideoEncodeAccelerator>::operator()( + media::VideoEncodeAccelerator* vea) const { + vea->Destroy(); } -} // namespace base - +} // namespace std
diff --git a/media/video/video_encode_accelerator.h b/media/video/video_encode_accelerator.h index 6879b0d..39ad0b70 100644 --- a/media/video/video_encode_accelerator.h +++ b/media/video/video_encode_accelerator.h
@@ -5,6 +5,7 @@ #ifndef MEDIA_VIDEO_VIDEO_ENCODE_ACCELERATOR_H_ #define MEDIA_VIDEO_VIDEO_ENCODE_ACCELERATOR_H_ +#include <memory> #include <vector> #include "base/basictypes.h" @@ -155,19 +156,15 @@ } // namespace media -namespace base { +namespace std { -template <class T> -struct DefaultDeleter; - -// Specialize DefaultDeleter so that scoped_ptr<VideoEncodeAccelerator> always +// Specialize std::default_delete so that scoped_ptr<VideoEncodeAccelerator> // uses "Destroy()" instead of trying to use the destructor. template <> -struct MEDIA_EXPORT DefaultDeleter<media::VideoEncodeAccelerator> { - public: - void operator()(void* video_encode_accelerator) const; +struct MEDIA_EXPORT default_delete<media::VideoEncodeAccelerator> { + void operator()(media::VideoEncodeAccelerator* vea) const; }; -} // namespace base +} // namespace std #endif // MEDIA_VIDEO_VIDEO_ENCODE_ACCELERATOR_H_
diff --git a/mojo/runner/child/runner_connection.cc b/mojo/runner/child/runner_connection.cc index c7758c4..ca0c7fc8 100644 --- a/mojo/runner/child/runner_connection.cc +++ b/mojo/runner/child/runner_connection.cc
@@ -23,6 +23,8 @@ namespace runner { namespace { +void DidCreateChannel(embedder::ChannelInfo* channel_info) {} + // Blocks a thread until another thread unblocks it, at which point it unblocks // and runs a closure provided by that thread. class Blocker { @@ -89,7 +91,8 @@ // Returns true if a connection to the runner has been established and // |request| has been modified, false if no connection was established. - bool WaitForApplicationRequest(InterfaceRequest<Application>* request); + bool WaitForApplicationRequest(InterfaceRequest<Application>* request, + ScopedMessagePipeHandle handle); ChildControllerImpl* controller() const { return controller_.get(); } @@ -133,23 +136,15 @@ // etc. static void Create(RunnerConnectionImpl* connection, const GotApplicationRequestCallback& callback, - embedder::ScopedPlatformHandle platform_channel, + ScopedMessagePipeHandle runner_handle, const Blocker::Unblocker& unblocker) { DCHECK(connection); - DCHECK(platform_channel.is_valid()); - DCHECK(!connection->controller()); scoped_ptr<ChildControllerImpl> impl( new ChildControllerImpl(connection, callback, unblocker)); - ScopedMessagePipeHandle host_message_pipe(embedder::CreateChannel( - platform_channel.Pass(), - base::Bind(&ChildControllerImpl::DidCreateChannel, - base::Unretained(impl.get())), - base::ThreadTaskRunnerHandle::Get())); - - impl->Bind(host_message_pipe.Pass()); + impl->Bind(runner_handle.Pass()); connection->set_controller(impl.Pass()); } @@ -191,13 +186,6 @@ binding_.set_connection_error_handler([this]() { OnConnectionError(); }); } - // Callback for |embedder::CreateChannel()|. - void DidCreateChannel(embedder::ChannelInfo* channel_info) { - DVLOG(2) << "ChildControllerImpl::DidCreateChannel()"; - DCHECK(thread_checker_.CalledOnValidThread()); - channel_info_ = channel_info; - } - static void ReturnApplicationRequestOnMainThread( const GotApplicationRequestCallback& callback, InterfaceRequest<Application> application_request) { @@ -217,12 +205,20 @@ }; bool RunnerConnectionImpl::WaitForApplicationRequest( - InterfaceRequest<Application>* request) { - embedder::ScopedPlatformHandle platform_channel = - embedder::PlatformChannelPair::PassClientHandleFromParentProcess( - *base::CommandLine::ForCurrentProcess()); - if (!platform_channel.is_valid()) - return false; + InterfaceRequest<Application>* request, + ScopedMessagePipeHandle handle) { + // If a valid message pipe to the runner was not provided, look for one on the + // command line. + if (!handle.is_valid()) { + embedder::ScopedPlatformHandle platform_channel = + embedder::PlatformChannelPair::PassClientHandleFromParentProcess( + *base::CommandLine::ForCurrentProcess()); + if (!platform_channel.is_valid()) + return false; + handle = embedder::CreateChannel(platform_channel.Pass(), + base::Bind(&DidCreateChannel), + base::ThreadTaskRunnerHandle::Get()); + } Blocker blocker; controller_runner_->PostTask( @@ -230,7 +226,7 @@ base::Bind( &ChildControllerImpl::Create, base::Unretained(this), base::Bind(&OnGotApplicationRequest, base::Unretained(request)), - base::Passed(&platform_channel), blocker.GetUnblocker())); + base::Passed(&handle), blocker.GetUnblocker())); blocker.Block(); return true; @@ -242,9 +238,10 @@ // static RunnerConnection* RunnerConnection::ConnectToRunner( - InterfaceRequest<Application>* request) { + InterfaceRequest<Application>* request, + ScopedMessagePipeHandle handle) { RunnerConnectionImpl* connection = new RunnerConnectionImpl; - if (!connection->WaitForApplicationRequest(request)) { + if (!connection->WaitForApplicationRequest(request, handle.Pass())) { delete connection; return nullptr; }
diff --git a/mojo/runner/child/runner_connection.h b/mojo/runner/child/runner_connection.h index 8ca8778..68202e1 100644 --- a/mojo/runner/child/runner_connection.h +++ b/mojo/runner/child/runner_connection.h
@@ -24,7 +24,8 @@ // If a connection to the runner cannot be established, |request| will not be // modified and this function will return null. static RunnerConnection* ConnectToRunner( - InterfaceRequest<Application>* request); + InterfaceRequest<Application>* request, + ScopedMessagePipeHandle handle); protected: RunnerConnection();
diff --git a/mojo/runner/child/test_native_main.cc b/mojo/runner/child/test_native_main.cc index c9bf2539..a7e57b4b 100644 --- a/mojo/runner/child/test_native_main.cc +++ b/mojo/runner/child/test_native_main.cc
@@ -56,19 +56,17 @@ mojo::embedder::ProcessType::NONE, &process_delegate, io_thread.task_runner().get(), mojo::embedder::ScopedPlatformHandle()); + base::MessageLoop loop(mojo::common::MessagePumpMojo::Create()); mojo::InterfaceRequest<mojo::Application> application_request; scoped_ptr<mojo::runner::RunnerConnection> connection( - mojo::runner::RunnerConnection::ConnectToRunner(&application_request)); - - base::MessageLoop loop(mojo::common::MessagePumpMojo::Create()); + mojo::runner::RunnerConnection::ConnectToRunner( + &application_request, ScopedMessagePipeHandle())); { mojo::ApplicationImpl impl(application_delegate, application_request.Pass()); loop.Run(); } - connection.reset(); - mojo::embedder::ShutdownIPCSupport(); }
diff --git a/mojo/shell/data_pipe_peek.cc b/mojo/shell/data_pipe_peek.cc index 4c74c55..7007f24 100644 --- a/mojo/shell/data_pipe_peek.cc +++ b/mojo/shell/data_pipe_peek.cc
@@ -6,6 +6,8 @@ #include <stdint.h> +#include <algorithm> + #include "base/bind.h" #include "base/macros.h"
diff --git a/net/quic/crypto/curve25519_key_exchange.cc b/net/quic/crypto/curve25519_key_exchange.cc index f3d39e76..2614934 100644 --- a/net/quic/crypto/curve25519_key_exchange.cc +++ b/net/quic/crypto/curve25519_key_exchange.cc
@@ -67,10 +67,11 @@ } uint8 result[crypto::curve25519::kBytes]; - crypto::curve25519::ScalarMult( - private_key_, - reinterpret_cast<const uint8*>(peer_public_value.data()), - result); + if (!crypto::curve25519::ScalarMult( + private_key_, + reinterpret_cast<const uint8*>(peer_public_value.data()), result)) { + return false; + } out_result->assign(reinterpret_cast<char*>(result), sizeof(result)); return true;
diff --git a/net/quic/crypto/strike_register.cc b/net/quic/crypto/strike_register.cc index c9b1353..d521adb 100644 --- a/net/quic/crypto/strike_register.cc +++ b/net/quic/crypto/strike_register.cc
@@ -4,6 +4,7 @@ #include "net/quic/crypto/strike_register.h" +#include <algorithm> #include <limits> #include "base/logging.h"
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc index c0ae180..c753507 100644 --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc
@@ -389,14 +389,6 @@ http_network_session_params_.trusted_spdy_proxy; network_session_params.next_protos = http_network_session_params_.next_protos; network_session_params.enable_quic = http_network_session_params_.enable_quic; - network_session_params.quic_store_server_configs_in_properties = - http_network_session_params_.quic_store_server_configs_in_properties; - network_session_params.quic_delay_tcp_race = - http_network_session_params_.quic_delay_tcp_race; - network_session_params.quic_max_number_of_lossy_connections = - http_network_session_params_.quic_max_number_of_lossy_connections; - network_session_params.quic_packet_loss_threshold = - http_network_session_params_.quic_packet_loss_threshold; network_session_params.quic_connection_options = http_network_session_params_.quic_connection_options;
diff --git a/net/url_request/url_request_context_builder.h b/net/url_request/url_request_context_builder.h index 81962e1..260eccb7 100644 --- a/net/url_request/url_request_context_builder.h +++ b/net/url_request/url_request_context_builder.h
@@ -87,10 +87,6 @@ std::string trusted_spdy_proxy; bool use_alternative_services; bool enable_quic; - bool quic_store_server_configs_in_properties; - bool quic_delay_tcp_race; - int quic_max_number_of_lossy_connections; - float quic_packet_loss_threshold; QuicTagVector quic_connection_options; }; @@ -196,27 +192,6 @@ quic_connection_options; } - void set_quic_store_server_configs_in_properties( - bool quic_store_server_configs_in_properties) { - http_network_session_params_.quic_store_server_configs_in_properties = - quic_store_server_configs_in_properties; - } - - void set_quic_delay_tcp_race(bool quic_delay_tcp_race) { - http_network_session_params_.quic_delay_tcp_race = quic_delay_tcp_race; - } - - void set_quic_max_number_of_lossy_connections( - int quic_max_number_of_lossy_connections) { - http_network_session_params_.quic_max_number_of_lossy_connections = - quic_max_number_of_lossy_connections; - } - - void set_quic_packet_loss_threshold(float quic_packet_loss_threshold) { - http_network_session_params_.quic_packet_loss_threshold = - quic_packet_loss_threshold; - } - void set_throttling_enabled(bool throttling_enabled) { throttling_enabled_ = throttling_enabled; }
diff --git a/ppapi/shared_impl/ppb_audio_config_shared.cc b/ppapi/shared_impl/ppb_audio_config_shared.cc index 13f1925..74a0b32 100644 --- a/ppapi/shared_impl/ppb_audio_config_shared.cc +++ b/ppapi/shared_impl/ppb_audio_config_shared.cc
@@ -2,8 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "build/build_config.h" #include "ppapi/shared_impl/ppb_audio_config_shared.h" + +#include <algorithm> + +#include "build/build_config.h" #include "ppapi/thunk/enter.h" #include "ppapi/thunk/ppb_instance_api.h"
diff --git a/remoting/base/compound_buffer.cc b/remoting/base/compound_buffer.cc index 3c599d36..c18592b 100644 --- a/remoting/base/compound_buffer.cc +++ b/remoting/base/compound_buffer.cc
@@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "remoting/base/compound_buffer.h" + +#include <algorithm> #include <functional> #include "base/logging.h" #include "net/base/io_buffer.h" -#include "remoting/base/compound_buffer.h" namespace remoting {
diff --git a/remoting/host/cast_video_capturer_adapter.cc b/remoting/host/cast_video_capturer_adapter.cc index 02caeff..2c29663 100644 --- a/remoting/host/cast_video_capturer_adapter.cc +++ b/remoting/host/cast_video_capturer_adapter.cc
@@ -45,8 +45,6 @@ captured_frame.width = owned_frame->size().width(); captured_frame.height = owned_frame->size().height(); base::TimeTicks current_time = base::TimeTicks::Now(); - captured_frame.elapsed_time = (current_time - start_time_).InMicroseconds() * - base::Time::kNanosecondsPerMicrosecond; captured_frame.time_stamp = current_time.ToInternalValue() * base::Time::kNanosecondsPerMicrosecond; captured_frame.data = owned_frame->data(); @@ -91,10 +89,6 @@ desktop_capturer_->Start(this); - // Save the Start() time of |desktop_capturer_|. This will be used - // to estimate the creation time of the frame source, to set the elapsed_time - // of future CapturedFrames in OnCaptureCompleted(). - start_time_ = base::TimeTicks::Now(); capture_timer_.reset(new base::RepeatingTimer()); capture_timer_->Start(FROM_HERE, base::TimeDelta::FromMicroseconds(
diff --git a/remoting/host/cast_video_capturer_adapter.h b/remoting/host/cast_video_capturer_adapter.h index 8a5db48..88d47ff 100644 --- a/remoting/host/cast_video_capturer_adapter.h +++ b/remoting/host/cast_video_capturer_adapter.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "base/threading/thread_checker.h" #include "base/timer/timer.h" @@ -69,9 +70,6 @@ // Used to schedule periodic screen captures. scoped_ptr<base::RepeatingTimer> capture_timer_; - // Used to set the elapsed_time attribute of captured frames. - base::TimeTicks start_time_; - DISALLOW_COPY_AND_ASSIGN(CastVideoCapturerAdapter); };
diff --git a/rlz/lib/rlz_lib.cc b/rlz/lib/rlz_lib.cc index c5403f6..71be967 100644 --- a/rlz/lib/rlz_lib.cc +++ b/rlz/lib/rlz_lib.cc
@@ -7,6 +7,8 @@ #include "rlz/lib/rlz_lib.h" +#include <algorithm> + #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "rlz/lib/assert.h"
diff --git a/sql/mojo/vfs_unittest.cc b/sql/mojo/vfs_unittest.cc index 123299b..33c6171 100644 --- a/sql/mojo/vfs_unittest.cc +++ b/sql/mojo/vfs_unittest.cc
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <memory> + #include "components/filesystem/public/interfaces/file_system.mojom.h" #include "mojo/application/public/cpp/application_impl.h" #include "mojo/application/public/cpp/application_test_base.h" @@ -10,12 +12,12 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/sqlite/sqlite3.h" -namespace base { +namespace std { // This deleter lets us be safe with sqlite3 objects, which aren't really the // structs, but slabs of new uint8_t[size]. template <> -struct DefaultDeleter<sqlite3_file> { +struct default_delete<sqlite3_file> { inline void operator()(sqlite3_file* ptr) const { // Why don't we call file->pMethods->xClose() here? Because it's not // guaranteed to be valid. sqlite3_file "objects" can be in partially @@ -24,7 +26,7 @@ } }; -} // namespace base +} // namespace std namespace sql {
diff --git a/testing/buildbot/chromium.json b/testing/buildbot/chromium.json index e4bdc07..f47bedd 100644 --- a/testing/buildbot/chromium.json +++ b/testing/buildbot/chromium.json
@@ -34,5 +34,30 @@ "script": "sizes.py" } ] + }, + "Mac": { + "additional_compile_targets": [ + "all" + ], + "scripts": [ + { + "args": [ + "mac-release/sizes" + ], + "name": "sizes", + "script": "sizes.py" + } + ] + }, + "Win": { + "additional_compile_targets": [ + "all" + ], + "scripts": [ + { + "name": "checkbins", + "script": "checkbins.py" + } + ] } }
diff --git a/testing/scripts/checkbins.py b/testing/scripts/checkbins.py new file mode 100644 index 0000000..b5174c9 --- /dev/null +++ b/testing/scripts/checkbins.py
@@ -0,0 +1,44 @@ +#!/usr/bin/env python +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json +import os +import sys + + +import common + + +def main_run(args): + with common.temporary_file() as tempfile_path: + rc = common.run_command([ + sys.executable, + os.path.join(common.SRC_DIR, 'tools', 'checkbins', 'checkbins.py'), + '--verbose', + '--json', tempfile_path, + os.path.join(args.paths['checkout'], 'out', args.build_config_fs), + ]) + + with open(tempfile_path) as f: + checkbins_results = json.load(f) + + json.dump({ + 'valid': True, + 'failures': checkbins_results, + }, args.output) + + return rc + + +def main_compile_targets(args): + json.dump([], args.output) + + +if __name__ == '__main__': + funcs = { + 'run': main_run, + 'compile_targets': main_compile_targets, + } + sys.exit(common.run_script(sys.argv[1:], funcs))
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index d200924..a284532 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -41,21 +41,6 @@ crbug.com/537172 [ Mac10.6 XP Win10 ] virtual/spv2/paint/invalidation/spv2/background-image-paint-invalidation.html [ Failure ] -crbug.com/424119 fast/backgrounds/border-radius-split-background-image.html [ NeedsRebaseline ] -crbug.com/424119 fast/backgrounds/border-radius-split-background.html [ NeedsRebaseline ] -crbug.com/424119 fast/borders/border-styles-split.html [ NeedsRebaseline ] -crbug.com/424119 fast/borders/borderRadiusMultiColors01.html [ NeedsRebaseline ] -crbug.com/424119 fast/borders/borderRadiusMultiColors02.html [ NeedsRebaseline ] -crbug.com/424119 fast/borders/mixed-border-styles-radius.html [ NeedsRebaseline ] -crbug.com/424119 fast/forms/text/text-font-height-mismatch.html [ NeedsRebaseline ] -crbug.com/424119 fast/table/border-radius-with-image.html [ NeedsRebaseline ] -crbug.com/424119 fast/text/emphasis.html [ NeedsRebaseline ] -crbug.com/424119 fast/writing-mode/border-styles-vertical-lr.html [ NeedsRebaseline ] -crbug.com/424119 fast/writing-mode/border-styles-vertical-rl.html [ NeedsRebaseline ] -crbug.com/424119 ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001.htm [ NeedsRebaseline ] -crbug.com/424119 media/video-zoom-controls.html [ NeedsRebaseline ] -crbug.com/424119 svg/custom/svg-fonts-in-html.html [ NeedsRebaseline ] - crbug.com/504613 crbug.com/524248 paint/images/image-backgrounds-not-antialiased.html [ Skip ] crbug.com/504613 crbug.com/524248 virtual/spv2/paint/images/image-backgrounds-not-antialiased.html [ Skip ] crbug.com/504613 crbug.com/524248 virtual/syncpaint/paint/images/image-backgrounds-not-antialiased.html [ Skip ]
diff --git a/third_party/WebKit/LayoutTests/W3CImportExpectations b/third_party/WebKit/LayoutTests/W3CImportExpectations index 5ccf3c499..c2ea093 100644 --- a/third_party/WebKit/LayoutTests/W3CImportExpectations +++ b/third_party/WebKit/LayoutTests/W3CImportExpectations
@@ -90,6 +90,7 @@ imported/web-platform-tests/content-security-policy [ Skip ] imported/web-platform-tests/cors [ Skip ] imported/web-platform-tests/csp [ Skip ] +imported/web-platform-tests/cssom-view [ Skip ] ## Owners: TBD # imported/web-platform-tests/custom-elements [ Pass ] imported/web-platform-tests/custom-elements/registering-custom-elements/unresolved-element-pseudoclass [ Skip ]
diff --git a/third_party/WebKit/LayoutTests/animations/svg-attribute-composition/svg-numOctaves-composition.html b/third_party/WebKit/LayoutTests/animations/svg-attribute-composition/svg-numOctaves-composition.html new file mode 100644 index 0000000..d439c118 --- /dev/null +++ b/third_party/WebKit/LayoutTests/animations/svg-attribute-composition/svg-numOctaves-composition.html
@@ -0,0 +1,75 @@ +<!DOCTYPE html> +<html> +<body> +<template id="target-template"> +<svg width="0" height="0"> +<feTurbulence class="target" /> +</svg> +</template> +<script src="../svg-attribute-interpolation/resources/interpolation-test.js"></script> +<script> +'use strict'; +assertAttributeInterpolation({ + property: 'numOctaves', + underlying: '3', + from: '1', + fromComposite: 'add', + to: '7', + toComposite: 'add', +}, [ + {at: -0.4, is: 2}, + {at: 0, is: 4}, + {at: 0.2, is: 5}, + {at: 0.6, is: 8}, + {at: 1, is: 10}, + {at: 1.4, is: 12} +]); + +assertAttributeInterpolation({ + property: 'numOctaves', + underlying: '5', + from: '1', + fromComposite: 'replace', + to: '7', + toComposite: 'add', +}, [ + {at: -0.4, is: -3}, + {at: 0, is: 1}, + {at: 0.2, is: 3}, + {at: 0.6, is: 8}, + {at: 1, is: 12}, + {at: 1.4, is: 16} +]); + +assertAttributeInterpolation({ + property: 'numOctaves', + underlying: '2', + from: '1', + fromComposite: 'add', + to: '7', + toComposite: 'replace', +}, [ + {at: -0.4, is: 1}, + {at: 0, is: 3}, + {at: 0.2, is: 4}, + {at: 0.6, is: 5}, + {at: 1, is: 7}, + {at: 1.4, is: 9} +]); + +assertAttributeInterpolation({ + property: 'numOctaves', + underlying: '2', + to: '7', + toComposite: 'replace', +}, [ + {at: -0.4, is: 0}, + {at: 0, is: 2}, + {at: 0.2, is: 3}, + {at: 0.6, is: 5}, + {at: 1, is: 7}, + {at: 1.4, is: 9} +]); +</script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/animations/svg-attribute-composition/svg-targetX-targetY-composition.html b/third_party/WebKit/LayoutTests/animations/svg-attribute-composition/svg-targetX-targetY-composition.html new file mode 100644 index 0000000..91ab8cde --- /dev/null +++ b/third_party/WebKit/LayoutTests/animations/svg-attribute-composition/svg-targetX-targetY-composition.html
@@ -0,0 +1,106 @@ +<!DOCTYPE html> +<html> +<body> +<template id="target-template"> +<svg width="0" height="0"> +<feConvolveMatrix class="target" /> +</svg> +</template> +<script src="../svg-attribute-interpolation/resources/interpolation-test.js"></script> +<script> +'use strict'; +assertAttributeInterpolation({ + property: 'targetX', + underlying: '128', + from: '-32', + fromComposite: 'add', + to: '1029' + toComposite: 'add', +}, [ + {at: -0.4, is: -328}, + {at: 0, is: 96}, + {at: 0.2, is: 308}, + {at: 0.6, is: 733}, + {at: 1, is: 1157}, + {at: 1.4, is: 1581} +]); + +assertAttributeInterpolation({ + property: 'targetX', + underlying: '-37', + from: '18', + fromComposite: 'replace', + to: '1' + toComposite: 'add', +}, [ + {at: -0.4, is: 40}, + {at: 0, is: 18}, + + {at: 0.6, is: -14}, + {at: 1, is: -36}, + {at: 1.4, is: -58} +]); + +assertAttributeInterpolation({ + property: 'targetX', + underlying: '2', + to: '-99' + toComposite: 'replace', +}, [ + {at: -0.4, is: 42}, + {at: 0, is: 2}, + {at: 0.2, is: -18}, + {at: 0.6, is: -59}, + {at: 1, is: -99}, + {at: 1.4, is: -139} +]); + + +assertAttributeInterpolation({ + property: 'targetY', + underlying: '128', + from: '-32', + fromComposite: 'add', + to: '1029' + toComposite: 'add', +}, [ + {at: -0.4, is: -328}, + {at: 0, is: 96}, + {at: 0.2, is: 308}, + {at: 0.6, is: 733}, + {at: 1, is: 1157}, + {at: 1.4, is: 1581} +]); + +assertAttributeInterpolation({ + property: 'targetY', + underlying: '-37', + from: '18', + fromComposite: 'replace', + to: '1' + toComposite: 'add', +}, [ + {at: -0.4, is: 40}, + {at: 0, is: 18}, + + {at: 0.6, is: -14}, + {at: 1, is: -36}, + {at: 1.4, is: -58} +]); + +assertAttributeInterpolation({ + property: 'targetY', + underlying: '2', + to: '-99' + toComposite: 'replace', +}, [ + {at: -0.4, is: 42}, + {at: 0, is: 2}, + {at: 0.2, is: -18}, + {at: 0.6, is: -59}, + {at: 1, is: -99}, + {at: 1.4, is: -139} +]); +</script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/css3/flexbox/overflow-auto-resizes-correctly-expected.txt b/third_party/WebKit/LayoutTests/css3/flexbox/overflow-auto-resizes-correctly-expected.txt index 61d18f7..0361bd3 100644 --- a/third_party/WebKit/LayoutTests/css3/flexbox/overflow-auto-resizes-correctly-expected.txt +++ b/third_party/WebKit/LayoutTests/css3/flexbox/overflow-auto-resizes-correctly-expected.txt
@@ -5,7 +5,8 @@ PASS hbox.clientHeight is hbox.scrollHeight PASS intrinsicHeightBox.clientHeight is intrinsicHeightBox.scrollHeight -FAIL vbox.clientWidth should be 100. Was 70. +PASS scrollbarSize is not 0 +PASS vbox.clientWidth is 100 - scrollbarSize PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/css3/flexbox/overflow-auto-resizes-correctly.html b/third_party/WebKit/LayoutTests/css3/flexbox/overflow-auto-resizes-correctly.html index fba0716..b7cf506 100644 --- a/third_party/WebKit/LayoutTests/css3/flexbox/overflow-auto-resizes-correctly.html +++ b/third_party/WebKit/LayoutTests/css3/flexbox/overflow-auto-resizes-correctly.html
@@ -51,6 +51,11 @@ </div> </div> +<!-- This div is only for measuring scrollbar size --> +<div id="measure" style="height: 100px; width: 100px; display: inline-box; overflow: auto;"> + <div style="min-height: 300px;"></div> +</div> + <script> description("When a block inside a flexbox adds scrollbars due to overflow, the parent flexbox should re-flex based on the child size including scrollbars."); @@ -60,8 +65,10 @@ var intrinsicHeightBox = document.querySelector('.intrinsic-height-box'); shouldBe("intrinsicHeightBox.clientHeight", "intrinsicHeightBox.scrollHeight"); - // This is expected to fail; see: - // https://codereview.chromium.org/1295933003/#msg1 + var measure = document.getElementById('measure'); + var scrollbarSize = measure.offsetWidth - measure.clientWidth; + shouldNotBe("scrollbarSize", "0"); + var vbox = document.querySelector('.vbox'); - shouldBe("vbox.clientWidth", "vbox.scrollWidth"); + shouldBe("vbox.clientWidth", "100 - scrollbarSize"); </script>
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/delete-3800834-fix.html b/third_party/WebKit/LayoutTests/editing/deleting/delete-3800834-fix.html index 6584b24a..c410b71 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/delete-3800834-fix.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/delete-3800834-fix.html
@@ -1,37 +1,18 @@ -<html> -<head> - -<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> - -<style> -.editing { - border: 2px solid red; - padding: 12px; - font-size: 24px; -} -</style> - -<script> - -function editingTest() { - for (var i = 0; i < 8; i++) - moveSelectionForwardByCharacterCommand(); - for (var i = 0; i < 4; i++) - deleteCommand(); -} - -</script> - -<title>Editing Test</title> -</head> -<body contenteditable='true'> -<div id="root" class="editing"> +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +<div id="root" contenteditable='true'> <span id="test">Foo<BR><BLOCKQUOTE>Bar</BLOCKQUOTE></span> </div> - +<div id="log"></div> <script> -runEditingTest(); +test(function() { + var selection = window.getSelection(); + selection.collapse(document.getElementById('test').firstChild, 0); + for (var i = 0; i < 8; i++) + selection.modify("move", "forward", "character"); + for (var i = 0; i < 4; i++) + document.execCommand('delete'); + assert_equals(document.getElementById('root').innerHTML, '\n<span id="test">Foo</span>'); +}); </script> - -</body> -</html>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/4924441.html b/third_party/WebKit/LayoutTests/editing/execCommand/4924441.html index fbe0952..c2b2b12 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/4924441.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/4924441.html
@@ -1,11 +1,17 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <p>This tests for a bug where changing the list type of an indented list would create unwanted nesting. You should see a single ordered list item in an indented list.</p> <div id="div" contenteditable="true"><br></div> - +<div id="log"></div> <script> -var div = document.getElementById("div"); -div.focus(); -document.execCommand("InsertText", false, "foo"); -document.execCommand("InsertUnorderedList"); -document.execCommand("Indent"); -document.execCommand("InsertOrderedList"); +test(function() { + var div = document.getElementById('div'); + div.focus(); + document.execCommand('InsertText', false, 'foo'); + document.execCommand('InsertUnorderedList'); + document.execCommand('Indent'); + document.execCommand('InsertOrderedList'); + assert_equals(div.innerHTML, '<ul><ol><li>foo<br></li></ol></ul>'); +}); </script>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5080333-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/5080333-1.html index eac346a..4423d95c 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5080333-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5080333-1.html
@@ -1,13 +1,23 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <p>This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was present before the alignment change. The image should be centered and the caret should be the same before and after the operation.</p> <div id="div" contenteditable="true">foo<br><img src="../resources/abe.png"><br>baz</div> - +<div id="log"></div> <script> -var div = document.getElementById("div"); -var sel = window.getSelection(); +test(function() { + var div = document.getElementById('div'); + var selection = window.getSelection(); -sel.collapse(div, 0); -sel.modify("move", "forward", "paragraphBoundary"); -sel.modify("move", "forward", "character"); + selection.collapse(div, 0); + selection.modify('move', 'forward', 'paragraphBoundary'); + selection.modify('move', 'forward', 'character'); -document.execCommand("JustifyCenter"); + document.execCommand('JustifyCenter'); + + assert_equals(div.innerHTML, 'foo<br><div style="text-align: center;"><img src="../resources/abe.png"></div>baz'); + assert_true(selection.isCollapsed); + assert_equals(selection.anchorNode, div.childNodes[2]); + assert_equals(selection.anchorOffset, 0); +}); </script>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5080333-2.html b/third_party/WebKit/LayoutTests/editing/execCommand/5080333-2.html index c90049d..4d907bf 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5080333-2.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5080333-2.html
@@ -1,14 +1,25 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <p>This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was present before the alignment change. The image should be centered and the selection should be the same before and after the operation.</p> <div id="div" contenteditable="true">foo<br><img src="../resources/abe.png"><br>baz</div> - +<div id="log"></div> <script> -var div = document.getElementById("div"); -var sel = window.getSelection(); +test(function() { + var div = document.getElementById("div"); + var selection = window.getSelection(); -sel.collapse(div, 0); -sel.modify("move", "forward", "paragraphBoundary"); -sel.modify("move", "forward", "character"); -sel.modify("extend", "forward", "character"); + selection.collapse(div, 0); + selection.modify("move", "forward", "paragraphBoundary"); + selection.modify("move", "forward", "character"); + selection.modify("extend", "forward", "character"); -document.execCommand("JustifyCenter"); + document.execCommand("JustifyCenter"); + + assert_equals(div.innerHTML, 'foo<br><div style="text-align: center;"><img src="../resources/abe.png"></div>baz'); + assert_equals(selection.anchorNode, div.childNodes[2]); + assert_equals(selection.anchorOffset, 0); + assert_equals(selection.focusNode, div.childNodes[2]); + assert_equals(selection.focusOffset, 1); +}); </script>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/insert-list-and-stitch.html b/third_party/WebKit/LayoutTests/editing/execCommand/insert-list-and-stitch.html index 0c81bea..a382355 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/insert-list-and-stitch.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/insert-list-and-stitch.html
@@ -1,19 +1,24 @@ -<script> -if (window.testRunner) - testRunner.dumpEditingCallbacks(); -</script> +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <p>The three items below should be stitched together into one ordered list when you click the button.</div> -<div contenteditable="true"> +<div id="sample" contenteditable="true"> <div id="item1">foo</div> <div id="item2">bar</div> <div id="item3">baz</div> </div> +<div id="log"></div> <script> -var s = window.getSelection(); -s.collapse(document.getElementById("item1"), 0); -document.execCommand("InsertOrderedList", false, ""); -s.collapse(document.getElementById("item2"), 0); -document.execCommand("InsertOrderedList", false, ""); -s.collapse(document.getElementById("item3"), 0); -document.execCommand("InsertOrderedList", false, ""); +test(function() { + var selection = window.getSelection(); + selection.collapse(document.getElementById('item1'), 0); + document.execCommand('InsertOrderedList'); + selection.collapse(document.getElementById('item2'), 0); + document.execCommand('InsertOrderedList'); + selection.collapse(document.getElementById('item3'), 0); + document.execCommand('InsertOrderedList'); + + var sample = document.getElementById('sample'); + assert_equals(sample.innerHTML, '\n<div id="item1"><ol><li>foo<br></li><li>bar<br></li><li>baz<br></li></ol></div>\n\n\n'); +}); </script>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/paste-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/paste-1.html index 3877e3398..815476e 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/paste-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/paste-1.html
@@ -1,23 +1,25 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <script> -if (window.testRunner) - testRunner.dumpEditingCallbacks(); - -function foo() { +var tester = async_test('iframe'); +function runTest() { + if (window.internals) + internals.settings.setEditingBehavior('win'); var frame = frames[0]; - var sel = frame.getSelection(); + var selection = frame.getSelection(); var doc = frame.document; - - sel.collapse(doc.body, 0); - doc.execCommand("InsertText", false, "foo bar baz"); - sel.modify("extend", "backward", "word"); - doc.execCommand("Cut"); - doc.execCommand("Paste"); - if (window.testRunner) - window.testRunner.notifyDone(); -} -if (window.testRunner) - window.testRunner.waitUntilDone(); -</script> + selection.collapse(doc.body, 0); + doc.execCommand('InsertText', false, 'foo bar baz'); + selection.modify('extend', 'backward', 'word'); + doc.execCommand('Cut'); + doc.execCommand('Paste'); + + tester.step(function() { assert_equals(doc.body.innerHTML.replace(/ /, ' ', 'g'), 'foo bar baz'); }); + tester.done(); +} +</script> <p>This tests cut/paste inside an editable iframe. You should see 'foo bar baz' below.</p> -<iframe src="../resources/contenteditable-iframe-src.html" onload="foo();"></iframe> +<iframe srcdoc="<body contenteditable></body>" onload="runTest()"></iframe> +<div id="log"></div>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/paste-2.html b/third_party/WebKit/LayoutTests/editing/execCommand/paste-2.html index 5387cf9..8faf1047 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/paste-2.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/paste-2.html
@@ -1,24 +1,27 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <script> -if (window.testRunner) - testRunner.dumpEditingCallbacks(); - +var tester = async_test('iframe'); function runTest() { - var frame = frames[0]; - var sel = frame.getSelection(); - var doc = frame.document; - - sel.collapse(doc.body, 0); - doc.execCommand("InsertText", false, "foo bar baz"); - sel.modify("extend", "backward", "word"); - doc.execCommand("Copy"); - doc.execCommand("Delete"); - doc.execCommand("Paste"); - if (window.testRunner) - window.testRunner.notifyDone(); -} + if (window.internals) + internals.settings.setEditingBehavior('win'); -if (window.testRunner) - window.testRunner.waitUntilDone(); + var frame = frames[0]; + var selection = frame.getSelection(); + var doc = frame.document; + + selection.collapse(doc.body, 0); + doc.execCommand('InsertText', false, 'foo bar baz'); + selection.modify('extend', 'backward', 'word'); + doc.execCommand('Copy'); + doc.execCommand('Delete'); + doc.execCommand('Paste'); + + tester.step(function() { assert_equals(doc.body.innerHTML.replace(/ /, ' ', 'g'), 'foo bar baz'); }); + tester.done(); +} </script> <p>This tests copy/delete/paste inside an editable iframe. You should see 'foo bar baz' below.</p> -<iframe src="../resources/contenteditable-iframe-src.html" onload="runTest();"></iframe> +<iframe srcdoc="<body contenteditable></body>" onload="runTest()"></iframe> +<div id="log"></div>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/remove-list-item-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/remove-list-item-1.html index 6fe652a..6f85f7a 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/remove-list-item-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/remove-list-item-1.html
@@ -1,16 +1,20 @@ -<script> -if (window.testRunner) - testRunner.dumpEditingCallbacks(); -</script> -<body> +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <p>Outdenting a sublist should remove one level.</p> <div id="div" contentEditable="true"><ul><ul><li>foo</li></ul></ul></div> - +<div id="log"></div> <script> -var div = document.getElementById("div"); -var sel = window.getSelection(); +test(function() { + var div = document.getElementById('div'); + var selection = window.getSelection(); -sel.collapse(div, 0); -document.execCommand("Outdent"); + selection.collapse(div, 0); + document.execCommand('Outdent'); + + assert_equals(div.innerHTML, '<ul><li>foo<br></li></ul>'); + assert_true(selection.isCollapsed); + assert_equals(selection.anchorNode, div.querySelector('li').firstChild); + assert_equals(selection.anchorOffset, 0); +}); </script> -</body>
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/insert-div-026.html b/third_party/WebKit/LayoutTests/editing/inserting/insert-div-026.html index d9d69b0..398d75c 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/insert-div-026.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/insert-div-026.html
@@ -1,42 +1,6 @@ -<html> -<head> - -<style> -.editing { - border: 2px solid red; - font-size: 24px; -} -.explanation { - border: 2px solid blue; - padding: 12px; - font-size: 24px; - margin-bottom: 24px; -} -.scenario { margin-bottom: 16px;} -.scenario:first-line { font-weight: bold; margin-bottom: 16px;} -.expected-results:first-line { font-weight: bold } -</style> -<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> - -<script> - -function editingTest() { - extendSelectionForwardByLineCommand(); - boldCommand(); - moveSelectionForwardByCharacterCommand(); - insertParagraphCommand(); - boldCommand(); - typeCharacterCommand(); - moveSelectionBackwardByCharacterCommand(); - deleteCommand(); -} - -</script> - -<title>Editing Test</title> -</head> -<body> - +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <div class="explanation"> <div class="scenario"> Tests: @@ -52,13 +16,23 @@ </div> <div contenteditable id="root" style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space;"> -<div id="test" class="editing"> -fo -</div> - +<div id="sample" class="editing">fo</div> +<div id="log"></div> <script> -runEditingTest(); -</script> +test(function() { + var selection = window.getSelection(); + var sample = document.getElementById('sample'); -</body> -</html> + selection.collapse(sample.firstChild, 0); + selection.modify('extend', 'forward', 'line'); + document.execCommand('bold'); + selection.modify('move', 'forward', 'character'); + document.execCommand('insertParagraph'); + document.execCommand('bold'); + document.execCommand('InsertText', false, 'x') + selection.modify('move', 'backward', 'character'); + document.execCommand('delete'); + + assert_equals(sample.innerHTML, '<b>fo</b>x'); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/insert-paragraph-04.html b/third_party/WebKit/LayoutTests/editing/inserting/insert-paragraph-04.html index 3d06642..41c00c3e8 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/insert-paragraph-04.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/insert-paragraph-04.html
@@ -1,18 +1,21 @@ -<script> -if (window.testRunner) - testRunner.dumpEditingCallbacks(); -</script> +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <p>This tests inserting a paragraph separator after a horizontal rule. You should see 'foo', empty paragraph, horizontal rule, 'bar', and the caret should be just after the horizontal rule. <b>This demonstrates 8345. The caret after a horizontal rule is drawn in the same location as the caret before a horizontal rule.</p> <div contenteditable="true" id="div">foo<hr>bar</div> - +<div id="log"></div> <script> -if (window.internals) - internals.settings.setEditingBehavior('mac'); -var sel = window.getSelection(); -var div = document.getElementById("div"); -sel.collapse(div, 0); -sel.modify("move", "forward", "word"); -sel.modify("move", "forward", "character"); -sel.modify("move", "forward", "character"); -document.execCommand("InsertParagraph"); +test(function() { + if (window.internals) + internals.settings.setEditingBehavior('mac'); + var selection = window.getSelection(); + var div = document.getElementById('div'); + selection.collapse(div, 0); + selection.modify('move', 'forward', 'word'); + selection.modify('move', 'forward', 'character'); + selection.modify('move', 'forward', 'character'); + document.execCommand('insertParagraph'); + + assert_equals(div.innerHTML, 'foo<hr><br>bar'); +}); </script>
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/return-key-with-selection-001.html b/third_party/WebKit/LayoutTests/editing/inserting/return-key-with-selection-001.html index 7baa308e..a6315721 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/return-key-with-selection-001.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/return-key-with-selection-001.html
@@ -1,61 +1,37 @@ -<html> -<head> - -<style> -.editing { - border: 2px solid red; - font-size: 24px; -} -.explanation { - border: 2px solid blue; - padding: 12px; - font-size: 24px; - margin-bottom: 24px; -} -.scenario { margin-bottom: 16px;} -.scenario:first-line { font-weight: bold; margin-bottom: 16px;} -.expected-results:first-line { font-weight: bold } -</style> -<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> - -<script> - -function editingTest() { - moveSelectionForwardByLineCommand(); - extendSelectionForwardByLineCommand(); - insertParagraphCommand(); -} - -</script> - -<title>Editing Test</title> -</head> -<body> - +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <div class="explanation"> <div class="scenario"> Tests: <br> Fix for this bug: -<a href="rdar://problem/4045521"><rdar://problem/4045521></a> Hitting return key with full line selected does not add blank line as it should +Hitting return key with full line selected does not add blank line as it should </div> <div class="expected-results"> Expected Results: <br> -Should see this content in the red box below (note that the insertion point should be at the start of the third line, immediately preceding "baz"): +Should see this content in the box below (note that the insertion point should be at the start of the third line, immediately preceding "baz"): <div>foo</div><div><br></div><div>baz</div> </div> </div> <div contenteditable id="root" style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space;"> -<div id="test" class="editing"> -<div>foo</div><div>bar</div><div>baz</div> -</div> -</div> - +<div id="sample" class="editing"><div>foo</div><div>bar</div><div>baz</div></div></div> +<div id="log"></div> <script> -runEditingTest(); -</script> +test(function() { + var selection = window.getSelection(); + var sample = document.getElementById('sample'); -</body> -</html> + selection.collapse(sample, 0); + selection.modify('move', 'forward', 'line'); + selection.modify('extend', 'forward', 'line'); + document.execCommand('insertParagraph'); + + assert_equals(sample.innerHTML, '<div>foo</div><div><br></div><div>baz<br></div>'); + assert_true(selection.isCollapsed); + assert_equals(selection.anchorNode, sample.childNodes[2].firstChild); + assert_equals(selection.anchorOffset, 0); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/return-key-with-selection-002.html b/third_party/WebKit/LayoutTests/editing/inserting/return-key-with-selection-002.html index 5fa9871..fae10c1 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/return-key-with-selection-002.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/return-key-with-selection-002.html
@@ -1,38 +1,6 @@ -<html> -<head> - -<style> -.editing { - border: 2px solid red; - font-size: 24px; -} -.explanation { - border: 2px solid blue; - padding: 12px; - font-size: 24px; - margin-bottom: 24px; -} -.scenario { margin-bottom: 16px;} -.scenario:first-line { font-weight: bold; margin-bottom: 16px;} -.expected-results:first-line { font-weight: bold } -</style> -<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> - -<script> - -function editingTest() { - moveSelectionForwardByLineCommand(); - extendSelectionForwardByLineCommand(); - extendSelectionForwardByCharacterCommand(); - insertParagraphCommand(); -} - -</script> - -<title>Editing Test</title> -</head> -<body> - +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <div class="explanation"> <div class="scenario"> Tests: @@ -43,20 +11,29 @@ <div class="expected-results"> Expected Results: <br> -Should see this content in the red box below (note that the insertion point should be at the start of the third line, immediately preceding "baz"): +Should see this content in the box below (note that the insertion point should be at the start of the third line, immediately preceding "baz"): <div>foo</div><div><br></div><div>baz</div> </div> </div> <div contenteditable id="root" style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space;"> -<div id="test" class="editing"> -<div>foo</div><div>bar</div><div>bbaz</div> +<div id="sample" class="editing"><div>foo</div><div>bar</div><div id="baz">bbaz</div></div> </div> -</div> - +<div id="log"></div> <script> -runEditingTest(); -</script> +test(function() { + var selection = window.getSelection(); + var sample = document.getElementById('sample'); -</body> -</html> + selection.collapse(sample, 0); + selection.modify('move', 'forward', 'line'); + selection.modify('extend', 'forward', 'line'); + selection.modify('extend', 'forward', 'character'); + document.execCommand('insertParagraph'); + + assert_equals(sample.innerHTML, '<div>foo</div><div><br></div><div>baz<br></div>'); + assert_true(selection.isCollapsed); + assert_equals(selection.anchorNode, sample.childNodes[2].firstChild); + assert_equals(selection.anchorOffset, 0); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5354455-1-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/5354455-1-expected.txt deleted file mode 100644 index 3d750d0..0000000 --- a/third_party/WebKit/LayoutTests/editing/selection/5354455-1-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This tests whether right clicking on a paragraph break in editable content selects it. The break should be selected on OS X, but not on Windows or Unix. To run it manually, right click on the paragraph break after the first paragraph below. - -The following paragraph break should be selected on OS X. - -Mac: Caret - -Win: Caret - -Unix: Caret - -Android: Caret
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5354455-1.html b/third_party/WebKit/LayoutTests/editing/selection/5354455-1.html index 6361c2e..4eb3def 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5354455-1.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5354455-1.html
@@ -1,18 +1,18 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <p>This tests whether right clicking on a paragraph break in editable content selects it. The break should be selected on OS X, but not on Windows or Unix. To run it manually, right click on the paragraph break after the first paragraph below.</p> <div id="div" contenteditable="true"> <div><span id="text">The following paragraph break should be selected on OS X.</span></div> <br> </div> -<p>Mac: <span id="resultmac">RUNNING</span></p> -<p>Win: <span id="resultwin">RUNNING</span></p> -<p>Unix: <span id="resultunix">RUNNING</span></p> -<p>Android: <span id="resultandroid">RUNNING</span></p> - +<div id="log"></div> <script> -function test(platform, result) { +function testIt(platform, expectedValue) { window.getSelection().removeAllRanges(); + internals.settings.setAsynchronousSpellCheckingEnabled(true); internals.settings.setEditingBehavior(platform); - + paragraph = document.getElementById("text"); x = paragraph.offsetParent.offsetLeft + paragraph.offsetLeft + paragraph.offsetWidth + 10; y = paragraph.offsetParent.offsetTop + paragraph.offsetTop + paragraph.offsetHeight / 2; @@ -24,17 +24,13 @@ eventSender.contextClick(); // esc key to kill the context menu. eventSender.keyDown("escape", null); - - document.getElementById(result).innerHTML = window.getSelection().type; + assert_equals(window.getSelection().type, expectedValue); } if (window.eventSender && window.testRunner && window.internals) { - testRunner.dumpAsText(); - - test('mac', 'resultmac'); - test('win', 'resultwin'); - test('unix', 'resultunix'); - test('android', 'resultandroid'); + test(testIt.bind(this, 'mac', 'Range'), 'mac'); + test(testIt.bind(this, 'win', 'Caret'), 'win'); + test(testIt.bind(this, 'unix', 'Caret'), 'unix'); + test(testIt.bind(this, 'android', 'Caret'), 'android'); } </script> -
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5497643-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/5497643-expected.txt deleted file mode 100644 index a4f6f41..0000000 --- a/third_party/WebKit/LayoutTests/editing/selection/5497643-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -ALERT: SUCCESS: Selection is set to position 2 of BODY. -This tests to make sure that a selection inside a textarea is updated when the textarea is removed from the document. - -
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5497643.html b/third_party/WebKit/LayoutTests/editing/selection/5497643.html index 90de6df..f39d814 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5497643.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5497643.html
@@ -1,15 +1,16 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <p>This tests to make sure that a selection inside a textarea is updated when the textarea is removed from the document.</p> <textarea id="textarea"></textarea> +<div id="log"></div> <script> -if (window.testRunner) - window.testRunner.dumpAsText(); textarea = document.getElementById("textarea"); textarea.setSelectionRange(0, 0); textarea.parentNode.removeChild(textarea); -if (window.getSelection().type == 'Caret' && - window.getSelection().getRangeAt(0).startContainer == document.body && - window.getSelection().getRangeAt(0).startOffset == 2) - alert("SUCCESS: Selection is set to position 2 of BODY.") -else - alert("FAILURE: The selection is not set correctly after textarea was deleted.") +test(function() { + assert_equals(window.getSelection().type, 'Caret'); + assert_equals(window.getSelection().getRangeAt(0).startContainer, document.body); + assert_equals(window.getSelection().getRangeAt(0).startOffset, 2); +}); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors01-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors01-expected.png index e955172..9cffde7 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors01-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors02-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors02-expected.png index 1da9779..6454fa29 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors02-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/mixed-border-styles-radius-expected.png b/third_party/WebKit/LayoutTests/fast/borders/mixed-border-styles-radius-expected.png index d178608e..b9648cfe 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/mixed-border-styles-radius-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/mixed-border-styles-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/css/invalidation/unresolved-pseudo-expected.txt b/third_party/WebKit/LayoutTests/fast/css/invalidation/unresolved-pseudo-expected.txt new file mode 100644 index 0000000..17221ee --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/css/invalidation/unresolved-pseudo-expected.txt
@@ -0,0 +1,15 @@ +Use invalidation sets for :unresolved pseudo class. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS getComputedStyle(child).backgroundColor is red +PASS getComputedStyle(sibling).backgroundColor is red +PASS internals.updateStyleAndReturnAffectedElementCount() is 1 +PASS getComputedStyle(child).backgroundColor is green +PASS internals.updateStyleAndReturnAffectedElementCount() is 1 +PASS getComputedStyle(sibling).backgroundColor is green +PASS successfullyParsed is true + +TEST COMPLETE +
diff --git a/third_party/WebKit/LayoutTests/fast/css/invalidation/unresolved-pseudo.html b/third_party/WebKit/LayoutTests/fast/css/invalidation/unresolved-pseudo.html new file mode 100644 index 0000000..3fb26f92 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/css/invalidation/unresolved-pseudo.html
@@ -0,0 +1,47 @@ +<!DOCTYPE html> +<script src="../../../resources/js-test.js"></script> +<style> +#sibling, #child { background-color: green } +custom-one:unresolved #child, custom-two:unresolved + #sibling { background-color: red } +</style> + +<custom-one> + <div></div> + <div id="child"></div> +</custom-one> + +<custom-two> + <div></div> + <div></div> +</custom-two> +<div id="sibling"></div> + +<script> +description("Use invalidation sets for :unresolved pseudo class.") + +var red = "rgb(255, 0, 0)"; +var green = "rgb(0, 128, 0)"; + +// Initially :unresolved. +shouldBe("getComputedStyle(child).backgroundColor", "red"); +shouldBe("getComputedStyle(sibling).backgroundColor", "red"); + +document.body.offsetTop; // force recalc + +var CustomOne = document.registerElement("custom-one", { prototype: Object.create(HTMLElement.prototype) }); +document.head.appendChild(new CustomOne()); + +if (window.internals) + shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1"); +shouldBe("getComputedStyle(child).backgroundColor", "green"); + +document.body.offsetTop; // force recalc + +var CustomTwo = document.registerElement("custom-two", { prototype: Object.create(HTMLElement.prototype) }); +document.head.appendChild(new CustomTwo()); + +if (window.internals) + shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1"); +shouldBe("getComputedStyle(sibling).backgroundColor", "green"); + +</script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/mutation-and-deletion-race-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/mutation-and-deletion-race-expected.txt new file mode 100644 index 0000000..74fe9c0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/mutation-and-deletion-race-expected.txt
@@ -0,0 +1,9 @@ +Test case that a MutationObserver is deleted while events are collected for it. crbug.com/557981 + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS successfullyParsed is true + +TEST COMPLETE +
diff --git a/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/mutation-and-deletion-race.html b/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/mutation-and-deletion-race.html new file mode 100644 index 0000000..ec076e8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/mutation-and-deletion-race.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<script src="../../../resources/js-test.js"></script> +<body></body> +<script> +description('Test case that a MutationObserver is deleted while events are collected for it. crbug.com/557981'); + +var div = document.createElement('div'); +var div2 = document.createElement('div'); +document.body.appendChild(div); + +observer = new MutationObserver(function() {}); +observer.observe(div, {childList: true}); + +var script = document.createElement('script'); +script.textContent = 'unregister_observer()'; +div2.appendChild(script); +div.appendChild(div2); + +function unregister_observer() { + observer.disconnect(); + delete observer; + gc(); +} +</script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/selection-functions-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/selection-functions-expected.txt index 2a84d18..677e0874 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/selection-functions-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/forms/selection-functions-expected.txt
@@ -24,6 +24,9 @@ 0, 48 7, 7 +selectionStart and selectionEnd in focus handler don't return wrong values 0,0: +7, 7 + ===input=== setSelectionRange(): 3, 7 @@ -45,6 +48,9 @@ 0, 48 7, 7 +selectionStart and selectionEnd in focus handler don't return wrong values 0,0: +7, 7 + ===button=== button.selectionStart threw exception button.selectionStart = 0 threw exception
diff --git a/third_party/WebKit/LayoutTests/fast/forms/selection-functions.html b/third_party/WebKit/LayoutTests/fast/forms/selection-functions.html index e256af5e..71faa29 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/selection-functions.html +++ b/third_party/WebKit/LayoutTests/fast/forms/selection-functions.html
@@ -88,6 +88,19 @@ elt.selectionEnd = 7; display(elt); + print(""); + print("selectionStart and selectionEnd in focus handler don't return wrong values 0,0:"); + elt.selectionStart = elt.selectionEnd = 7; + // Need to clear selection. Selection API calls above modified + // both of real selection and |elt|'s cached selection even + // though |elt| has no focus. + // We'd like to check the behavior in case that real selection + // and the cached selection are mismatched. + getSelection().removeAllRanges(); + // selectionStart and selectionEnd are still 7. + elt.onfocus = function() { display(elt); }; + elt.focus(); + elt.value = ""; } function testButtonSelectionAccess(button, access) @@ -121,4 +134,4 @@ <hr /> <p id="console"></p> </body> -</html> \ No newline at end of file +</html>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/textfield-to-password-on-focus.html b/third_party/WebKit/LayoutTests/fast/forms/textfield-to-password-on-focus.html index 1313f133..4cafb338 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/textfield-to-password-on-focus.html +++ b/third_party/WebKit/LayoutTests/fast/forms/textfield-to-password-on-focus.html
@@ -15,9 +15,12 @@ function test() { - if (window.testRunner) { - var field = document.getElementById("field").focus(); - + if (!window.testRunner) + return; + var field = document.getElementById("field").focus(); + // Need short delay because changing input type doesn't set selection in the + // input element immediately becasue layout is dirty. + setTimeout(function() { eventSender.keyDown("p"); eventSender.keyDown("a"); eventSender.keyDown("s"); @@ -27,7 +30,7 @@ isSuccessfullyParsed(); window.testRunner.notifyDone(); - } + }, 0); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/html/tooltip-close.html b/third_party/WebKit/LayoutTests/fast/html/tooltip-close.html new file mode 100644 index 0000000..e1324b9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/html/tooltip-close.html
@@ -0,0 +1,16 @@ +<!DOCTYPE html> +<body> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +<div id=log></div> +<div id=start title=tooltip>foo</div> +<script> +var div = document.querySelector('#start'); +test(function() { + eventSender.mouseMoveTo(div.offsetLeft, div.offsetTop + div.offsetHeight / 2); + assert_equals(testRunner.tooltipText, 'tooltip'); + eventSender.keyDown('a'); + assert_equals(testRunner.tooltipText, ''); +}, 'Key events should close tooltips.'); +</script> +</body>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/three-inner-rows-expected.txt b/third_party/WebKit/LayoutTests/fast/multicol/three-inner-rows-expected.txt new file mode 100644 index 0000000..84e2052 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/multicol/three-inner-rows-expected.txt
@@ -0,0 +1,23 @@ +Test support for more than two inner column rows, when column height is auto. + +Below there should be a papayawhip box with two lines of text with large letter spacing. + +The first line should read "Roger" and the second one "Wilco". + +No red should be seen. + +R +W +o +i +g +l +e +c +r +o + + +XXXX +XXXX +PASS
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/three-inner-rows.html b/third_party/WebKit/LayoutTests/fast/multicol/three-inner-rows.html new file mode 100644 index 0000000..076df399 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/multicol/three-inner-rows.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<script src="../../resources/check-layout.js"></script> +<p>Test support for more than two inner column rows, when column height is auto.</p> +<p>Below there should be a papayawhip box with two lines of text with large letter spacing.</p> +<p>The first line should read "Roger" and the second one "Wilco".</p> +<p>No red should be seen.</p> +<div id="outer" style="position:relative; -webkit-columns:3; -webkit-column-gap:0; text-align:center; overflow:hidden; column-fill:auto; line-height:40px; width:180px; height:80px; background:red;"> + <div style="-webkit-columns:2; -webkit-column-gap:0; column-fill:auto; background:papayawhip;" data-expected-height="240"> + <div data-offset-x="0" data-offset-y="0">R</div><div data-offset-x="0" data-offset-y="40">W</div> + <div data-offset-x="30" data-offset-y="0">o</div><div data-offset-x="30" data-offset-y="40">i</div> + <div data-offset-x="60" data-offset-y="0">g</div><div data-offset-x="60" data-offset-y="40">l</div> + <div data-offset-x="90" data-offset-y="0">e</div><div data-offset-x="90" data-offset-y="40">c</div> + <div data-offset-x="120" data-offset-y="0">r</div><div data-offset-x="120" data-offset-y="40">o</div> + <div><br></div><div><br></div> + </div> + <div data-offset-x="180">XXXX</div> + <div data-offset-x="180">XXXX</div> +</div> +<script> + checkLayout("#outer"); +</script>
diff --git a/third_party/WebKit/LayoutTests/fast/table/border-radius-with-image-expected.png b/third_party/WebKit/LayoutTests/fast/table/border-radius-with-image-expected.png index 91df27ed..8d0ae560 100644 --- a/third_party/WebKit/LayoutTests/fast/table/border-radius-with-image-expected.png +++ b/third_party/WebKit/LayoutTests/fast/table/border-radius-with-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/registration-attribute.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/registration-attribute.html index 688fc0c..0932e32 100644 --- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/registration-attribute.html +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/registration-attribute.html
@@ -11,6 +11,7 @@ return service_worker_unregister_and_register(t, script, scope) .then(function(registration) { + add_completion_callback(function() { registration.unregister(); }); return wait_for_state(t, registration.installing, 'activated'); }) .then(function() { return with_iframe(scope); }) @@ -30,8 +31,71 @@ expected_events_seen.toString(), 'Service Worker should respond to fetch'); frame.remove(); - return service_worker_unregister_and_done(t, scope); }); - }, 'Verify registration attribute on ServiceWorkerGlobalScope'); + }, 'Verify registration attributes on ServiceWorkerGlobalScope'); + +promise_test(function(t) { + var script = 'resources/registration-attribute-worker.js'; + var newer_script = 'resources/registration-attribute-newer-worker.js'; + var scope = 'resources/scope/registration-attribute'; + var newer_worker; + + return service_worker_unregister_and_register(t, script, scope) + .then(function(registration) { + add_completion_callback(function() { registration.unregister(); }); + return wait_for_state(t, registration.installing, 'activated'); + }) + .then(function() { + return navigator.serviceWorker.register(newer_script, {scope: scope}); + }) + .then(function(registration) { + newer_worker = registration.installing; + return wait_for_state(t, registration.installing, 'activated'); + }) + .then(function() { + var channel = new MessageChannel; + var saw_message = new Promise(function(resolve) { + channel.port1.onmessage = function(e) { resolve(e.data); }; + }); + newer_worker.postMessage({port: channel.port2}, [channel.port2]); + return saw_message; + }) + .then(function(results) { + var script_url = normalizeURL(script); + var newer_script_url = normalizeURL(newer_script); + var expectations = [ + 'evaluate', + ' installing: empty', + ' waiting: empty', + ' active: ' + script_url, + 'updatefound', + ' installing: ' + newer_script_url, + ' waiting: empty', + ' active: ' + script_url, + 'install', + ' installing: ' + newer_script_url, + ' waiting: empty', + ' active: ' + script_url, + 'statechange(installed)', + ' installing: empty', + ' waiting: ' + newer_script_url, + ' active: ' + script_url, + 'statechange(activating)', + ' installing: empty', + ' waiting: empty', + ' active: ' + newer_script_url, + 'activate', + ' installing: empty', + ' waiting: empty', + ' active: ' + newer_script_url, + 'statechange(activated)', + ' installing: empty', + ' waiting: empty', + ' active: ' + newer_script_url, + ]; + assert_array_equals(results, expectations); + }); + }, 'Verify registration attributes on ServiceWorkerGlobalScope of the ' + + 'newer worker'); </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/resources/registration-attribute-newer-worker.js b/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/resources/registration-attribute-newer-worker.js new file mode 100644 index 0000000..44f3e2e --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/resources/registration-attribute-newer-worker.js
@@ -0,0 +1,33 @@ +// TODO(nhiroki): stop using global states because service workers can be killed +// at any point. Instead, we could post a message to the page on each event via +// Client object (http://crbug.com/558244). +var results = []; + +function stringify(worker) { + return worker ? worker.scriptURL : 'empty'; +} + +function record(event_name) { + results.push(event_name); + results.push(' installing: ' + stringify(self.registration.installing)); + results.push(' waiting: ' + stringify(self.registration.waiting)); + results.push(' active: ' + stringify(self.registration.active)); +} + +record('evaluate'); + +self.registration.addEventListener('updatefound', function() { + record('updatefound'); + var worker = self.registration.installing; + self.registration.installing.addEventListener('statechange', function() { + record('statechange(' + worker.state + ')'); + }); + }); + +self.addEventListener('install', function(e) { record('install'); }); + +self.addEventListener('activate', function(e) { record('activate'); }); + +self.addEventListener('message', function(e) { + e.data.port.postMessage(results); + });
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/resources/registration-attribute-worker.js b/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/resources/registration-attribute-worker.js index 3865137..1f64b56a 100644 --- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/resources/registration-attribute-worker.js +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/ServiceWorkerGlobalScope/resources/registration-attribute-worker.js
@@ -1,8 +1,15 @@ importScripts('../../resources/test-helpers.js'); importScripts('../../resources/worker-testharness.js'); +// TODO(nhiroki): stop using global states because service workers can be killed +// at any point. Instead, we could post a message to the page on each event via +// Client object (http://crbug.com/558244). var events_seen = []; +// TODO(nhiroki): Move these assertions to registration-attribute.html because +// an assertion failure on the worker is not shown on the result page and +// handled as timeout. See registration-attribute-newer-worker.js for example. + assert_equals( self.registration.scope, normalizeURL('scope/registration-attribute'),
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006-expected.html new file mode 100644 index 0000000..04a9d41 --- /dev/null +++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006-expected.html
@@ -0,0 +1,20 @@ +<!DOCTYPE html> +<title>CSS Writing Modes Test: outline layout and non-replaced inline and vertical-rl writing-mode</title> +<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" /> +<meta content="ahem" name="flags" /> +<style> +.container { + color:transparent; + font:50px/1 Ahem; +} +.outline { + color:orange; + display:inline-block; + margin-left:3em; + outline:blue solid 2px; +} +</style> +<p>Test passes if inside of blue rectangles are orange. +<div class="container"> + <span class="outline">1<br>2</span> +</div>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006.html new file mode 100644 index 0000000..15a9657d --- /dev/null +++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-block-vrl-006.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>CSS Writing Modes Test: outline layout and inline-block and vertical-rl writing-mode</title> +<link rel="match" href="reference/outline-inline-block-vrl-006.html" /> +<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" /> +<link rel="help" title="7.1. Principles of Layout in Vertical Writing Modes" href="http://www.w3.org/TR/css-writing-modes-3/#vertical-layout" /> +<link rel="help" title="18.4 Dynamic outlines: the 'outline' property" href="http://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#dynamic-outlines" /> +<meta content="ahem" name="flags" /> +<style> +.container { + color:transparent; + font:50px/1 Ahem; + height:5em; + writing-mode:vertical-rl; +} +.outline { + color:orange; + display:inline-block; + outline:blue solid 2px; +} +</style> +<p>Test passes if inside of blue rectangles are orange. +<div class="container"> + <!-- + Additional div to ensure that the origin of the containing block of the + outline span is different from the origin of the writing mode root. + --> + <div>1</div> + <div>12345<span class="outline">67</span></div> + <div>1</div> + <div>1</div> + <div>1</div> +</div>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006-expected.html index 91b7ed2..aa3b805 100644 --- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006-expected.html +++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006-expected.html
@@ -3,11 +3,9 @@ <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com" /> <meta content="ahem" name="flags" /> <style> -div { +.container { color:transparent; font:50px/1 Ahem; - width:2em; - height:5em; } .outline { color:orange; @@ -15,4 +13,10 @@ } </style> <p>Test passes if inside of blue rectangles are orange. -<div><span class="outline">1</span>2 34 56 78 9<span class="outline">0</span></div> +<div class="container"> + <div>111<span class="outline">1</span></div> + <div>1</div> + <div>1</div> + <div>1</div> + <div>1111<span class="outline">1</span></div> +</div>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006.html index e579882..d7e67fc5 100644 --- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006.html +++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/outline-inline-vrl-006.html
@@ -6,13 +6,10 @@ <link rel="help" title="18.4 Dynamic outlines: the 'outline' property" href="http://www.w3.org/TR/2011/REC-CSS2-20110607/ui.html#dynamic-outlines" /> <meta content="ahem" name="flags" /> <style> -div { +.container { color:transparent; font:50px/1 Ahem; - width:2em; height:5em; -} -.vrl { writing-mode:vertical-rl; } .outline { @@ -21,4 +18,14 @@ } </style> <p>Test passes if inside of blue rectangles are orange. -<div class="vrl">1234<span class="outline">5 6</span>7890</div> +<div class="container"> + <!-- + Additional div to ensure that the origin of the containing block of the + outline span is different from the origin of the writing mode root. + --> + <div>1</div> + <div>1234<span class="outline">5 6</span>7890</div> + <div>1</div> + <div>1</div> + <div>1</div> +</div>
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/cssom-view/elementFromPoint-expected.txt b/third_party/WebKit/LayoutTests/imported/web-platform-tests/cssom-view/elementFromPoint-expected.txt deleted file mode 100644 index f7576d8..0000000 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/cssom-view/elementFromPoint-expected.txt +++ /dev/null
@@ -1,19 +0,0 @@ - - - -Hello WPT! - -Another teal -This is a testharness.js-based test. -PASS Negative co-ordinates -PASS co-ordinates larger than the viewport -PASS co-ordinates larger than the viewport from in iframe -PASS Return first element that is the target for hit testing -PASS First element to get mouse events with pointer-events css -PASS SVG element at x,y -FAIL transformed element at x,y assert_equals: Should have returned pink element that has a transform expected Element node <div id="pink" class="size pink" style="transform: transl... but got null -FAIL no hit target at x,y assert_equals: Should have returned the root expected Element node <body> - <div id="purple" class="size purple"> </div... but got null -PASS No viewport available -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/cssom-view/elementFromPoint.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/cssom-view/elementFromPoint.html deleted file mode 100644 index 4937ec5..0000000 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/cssom-view/elementFromPoint.html +++ /dev/null
@@ -1,143 +0,0 @@ -<!DOCTYPE html> -<title>cssom-view - elementFromPoint</title> -<script src="../../../resources/testharness.js"></script> -<script src="../../../resources/testharnessreport.js"></script> -<style> - .size { - width:100px; - height:100px; - } - .overlay { - position:absolute; - top:109px; - pointer-events:none; - } - .purple { - background-color: rebeccapurple; - } - .yellow { - background-color: yellow; - } - .teal { - background-color: teal; - } - .pink { - background-color: pink; - } -</style> -<body> - <div id='purple' class="size purple" > </div> - <div id='yellow' class="size yellow"> </div> - <div id='teal' class="size overlay teal"> </div> - <iframe id=iframe-1 src="iframe.html" style='display:none;position:absolute; left:300px;'></iframe> - <iframe id=iframe-2 src="iframe.html" width="" height=""></iframe> - <iframe id=iframe-3 width="" height=""></iframe> - <svg id=squiggle xmlns="http://www.w3.org/2000/svg" height="98" width="581" viewBox="0 0 581 98"> - <path stroke-dashoffset="0.00" stroke-dasharray="" d="M62.9 14.9c-25-7.74-56.6 4.8-60.4 24.3-3.73 19.6 21.6 35 39.6 37.6 42.8 6.2 72.9-53.4 116-58.9 65-18.2 191 101 215 28.8 5-16.7-7-49.1-34-44-34 11.5-31 46.5-14 69.3 9.38 12.6 24.2 20.6 39.8 22.9 91.4 9.05 102-98.9 176-86.7 18.8 3.81 33 17.3 36.7 34.6 2.01 10.2.124 21.1-5.18 30.1" stroke="#000" stroke-width="4.3" fill="none"> - </path> - </svg> - <svg id=svg-transform width="180" height="200" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink"> - - <!-- Now we add a text element and apply rotate and translate to both --> - <rect x="50" y="50" height="100" width="100" style="stroke:#000; fill: #0086B2" transform="translate(30) rotate(45 50 50)"></rect> - <text x="60" y="105" transform="translate(30) rotate(45 50 50)"> Hello WPT! </text> - -</svg> - <div id='pink' class='size pink' style='transform: translate(10px)'> </div> - <div id='anotherteal' class='size teal' style='pointer-events:none'>Another teal</div> - <script> - setup({explicit_done:true}); - window.onload = function () { - test(function () { - assert_equals(document.elementFromPoint(-1, -1), null, - "both co-ordinates passed in are negative so should have returned a null"); - assert_equals(document.elementFromPoint(-1, -1), null, - "x co-ordinates passed in are negative so should have returned a null"); - assert_equals(document.elementFromPoint(-1, -1), null, - "y co-ordinates passed in are negative so should have returned a null"); - }, "Negative co-ordinates"); - - test(function () { - var viewportX = window.innerWidth; - var viewportY = window.innerHeight; - assert_equals(document.elementFromPoint(viewportX + 100, 10), null, - "X co-ordinates larger than viewport"); - assert_equals(document.elementFromPoint(10, viewportY + 100), null, - "Y co-ordinates larger than viewport"); - assert_equals(document.elementFromPoint(viewportX + 100, viewportY + 100), null, - "X, Y co-ordinates larger than viewport"); - }, "co-ordinates larger than the viewport"); - - test(function () { - var viewportX = window.frames[1].innerWidth; - var viewportY = window.frames[1].innerHeight; - var iframeRect = document.getElementById('iframe-2').getBoundingClientRect(); - assert_equals(null, window.frames[1].document.elementFromPoint(iframeRect.right + viewportX + 100, 10), - "X co-ordinates larger than viewport"); - assert_equals(null, window.frames[1].document.elementFromPoint(10, iframeRect.bottom + viewportY + 100), - "Y co-ordinates larger than viewport"); - assert_equals(null, window.frames[1].document.elementFromPoint(iframeRect.right + viewportX + 100, - iframeRect.bottom + viewportY + 100), - "X, Y co-ordinates larger than viewport"); - }, "co-ordinates larger than the viewport from in iframe"); - - test(function () { - assert_equals(document.elementFromPoint(10, 10), document.getElementById('purple'), - "Should have returned the element with id `purple`"); - }, "Return first element that is the target for hit testing"); - - test(function () { - assert_equals(document.elementFromPoint(10, 120), document.getElementById('yellow'), - "Should have returned the element with id `yellow` as element with `teal` has `pointer-events:none`"); - }, "First element to get mouse events with pointer-events css"); - - test(function () { - var svg = document.getElementById('squiggle'); - var svgRect = svg.getBoundingClientRect(); - assert_equals(document.elementFromPoint(svgRect.left + Math.round(svgRect.width/2), - svgRect.top + Math.round(svgRect.height/2)), - svg, - "Should have returned the line SVG"); - }, "SVG element at x,y"); - - test(function () { - var svg = document.getElementById('svg-transform'); - var svgRect = svg.getBoundingClientRect(); - assert_equals(document.elementFromPoint(svgRect.left + Math.round(svgRect.width/2), - svgRect.top + Math.round(svgRect.height/2)), - svg.querySelector("rect"), - "Should have returned SVG with Hello WPT! that has a transform"); - - var pink = document.getElementById('pink'); - var pinkRect = pink.getBoundingClientRect(); - assert_equals(document.elementFromPoint(pinkRect.left + Math.round(pinkRect.width/2), - pinkRect.top + Math.round(pinkRect.height/2)), - pink, - "Should have returned pink element that has a transform"); - - }, "transformed element at x,y"); - - test(function () { - var anotherteal = document.getElementById('anotherteal'); - var anothertealRect = anotherteal.getBoundingClientRect(); - assert_equals(document.elementFromPoint(anothertealRect.left + Math.round(anothertealRect.width/2), - anothertealRect.top + Math.round(anothertealRect.height/2)), - document.body, - "Should have returned the root"); - - var doc = frames[2].document; - doc.removeChild(doc.documentElement); - assert_equals(doc.elementFromPoint(0, 0), null, - "Should have returned null as no root element"); - }, "no hit target at x,y"); - - test(function () { - var doc = document.implementation.createHTMLDocument('foo'); - assert_equals(doc.elementFromPoint(0, 0), null, - "Should have returned the documentElement for the document") - }, "No viewport available"); - done(); - } - </script>
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_01.htm b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_01.htm index 55265187..3bdab64 100644 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_01.htm +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_01.htm
@@ -1,6 +1,4 @@ <!DOCTYPE html><html><head><title>javascript: URL creating a document in an about:blank iframe</title> -<link rel="help" href="https://html.spec.whatwg.org/multipage/embedded-content.html#the-iframe-element"> -<link rel="help" href="https://html.spec.whatwg.org/multipage/embedded-content.html#process-the-iframe-attributes"> <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-iframe-element"> <link rel="help" href="https://html.spec.whatwg.org/multipage/#process-the-iframe-attributes"> <script src="../../../../../../resources/testharness.js"></script>
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html index d974033..b9b9ab0b 100644 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html
@@ -1,7 +1,7 @@ <!DOCTYPE HTML> <title>DOM Image constructor Test</title> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> -<link rel="help" href="https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element" /> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-img-element" /> <meta name="assert" content="Tests the Image constructor for the img-element"> <script src="../../../../../../resources/testharness.js"></script> <script src="../../../../../../resources/testharnessreport.js"></script>
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt index 3b508cb..18f25ac5 100644 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt
@@ -10,14 +10,19 @@ PASS family-name is an allowed autocomplete field name PASS honorific-suffix is an allowed autocomplete field name PASS nickname is an allowed autocomplete field name +PASS username is an allowed autocomplete field name +PASS new-password is an allowed autocomplete field name +PASS current-password is an allowed autocomplete field name PASS organization-title is an allowed autocomplete field name PASS organization is an allowed autocomplete field name PASS street-address is an allowed autocomplete field name PASS address-line1 is an allowed autocomplete field name PASS address-line2 is an allowed autocomplete field name PASS address-line3 is an allowed autocomplete field name -PASS locality is an allowed autocomplete field name -PASS region is an allowed autocomplete field name +PASS address-level4 is an allowed autocomplete field name +PASS address-level3 is an allowed autocomplete field name +PASS address-level2 is an allowed autocomplete field name +PASS address-level1 is an allowed autocomplete field name PASS country is an allowed autocomplete field name PASS country-name is an allowed autocomplete field name PASS postal-code is an allowed autocomplete field name @@ -31,6 +36,8 @@ PASS cc-exp-year is an allowed autocomplete field name PASS cc-csc is an allowed autocomplete field name PASS cc-type is an allowed autocomplete field name +PASS transaction-currency is an allowed autocomplete field name +PASS transaction-amount is an allowed autocomplete field name PASS language is an allowed autocomplete field name PASS bday is an allowed autocomplete field name PASS bday-day is an allowed autocomplete field name
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete.html index 79b772c..b067578a 100644 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete.html +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete.html
@@ -47,7 +47,8 @@ autocompletetest(document.forms.autocomplete_off, ["off", "off", "on", "off", ""], "form autocomplete attribute off"); autocompletetest(document.forms.autocomplete_invalid, ["on", "on", "on", "off", ""], "form autocomplete attribute invalid"); - var keywords = [ "name", "honorific-prefix", "given-name", "additional-name", "family-name", "honorific-suffix", "nickname", "organization-title", "organization", "street-address", "address-line1", "address-line2", "address-line3", "locality", "region", "country", "country-name", "postal-code", "cc-name", "cc-given-name", "cc-additional-name", "cc-family-name", "cc-number", "cc-exp", "cc-exp-month", "cc-exp-year", "cc-csc", "cc-type", "language", "bday", "bday-day", "bday-month", "bday-year", "sex", "url", "photo", "tel", "tel-country-code", "tel-national", "tel-area-code", "tel-local", "tel-local-prefix", "tel-local-suffix", "tel-extension", "email", "impp" ]; + var keywords = [ "name", "honorific-prefix", "given-name", "additional-name", "family-name", "honorific-suffix", "nickname", "username", "new-password", "current-password", "organization-title", "organization", "street-address", "address-line1", "address-line2", "address-line3", "address-level4", "address-level3", "address-level2", "address-level1", "country", "country-name", "postal-code", "cc-name", "cc-given-name", "cc-additional-name", "cc-family-name", "cc-number", "cc-exp", "cc-exp-month", "cc-exp-year", "cc-csc", "cc-type", "transaction-currency", "transaction-amount", "language", "bday", "bday-day", "bday-month", "bday-year", "sex", "url", "photo", "tel", "tel-country-code", "tel-national", "tel-area-code", "tel-local", "tel-local-prefix", "tel-local-suffix", "tel-extension", "email", "impp" ]; + keywords.forEach(function(keyword) { test(function(){ var input = document.createElement("input");
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-option-element/option-selected.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-option-element/option-selected.html index ed7ce6ae..e1a33c13 100644 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-option-element/option-selected.html +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-option-element/option-selected.html
@@ -2,7 +2,7 @@ <meta charset=utf-8> <title>HTMLOptionElement.selected</title> <link rel=author title="Corey Farwell" href="mailto:coreyf@rwell.org"> -<link rel=help href="https://html.spec.whatwg.org/multipage/forms.html#dom-option-selected"> +<link rel=help href="https://html.spec.whatwg.org/multipage/#dom-option-selected"> <script src="../../../../../../resources/testharness.js"></script> <script src="../../../../../../resources/testharnessreport.js"></script> <div id=log></div>
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/animation-frames/callback-multicalls.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/animation-frames/callback-multicalls.html index 91d3f07..42841ecd 100644 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/animation-frames/callback-multicalls.html +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/animation-frames/callback-multicalls.html
@@ -2,7 +2,7 @@ <meta charset="utf-8"> <title>AnimationTiming Test: multiple calls to requestAnimationFrame with the same callback</title> <link rel="author" title="Intel" href="http://www.intel.com"> -<link rel="help" href="https://html.spec.whatwg.org/multipage/webappapis.html#dom-window-requestanimationframe"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-window-requestanimationframe"> <script src="../../../../../resources/testharness.js"></script> <script src="../../../../../resources/testharnessreport.js"></script> <div id="log"></div>
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/scripting/event-loops/task_microtask_ordering.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/scripting/event-loops/task_microtask_ordering.html index 6536294..ccfe32e 100644 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/scripting/event-loops/task_microtask_ordering.html +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/scripting/event-loops/task_microtask_ordering.html
@@ -1,7 +1,7 @@ <!DOCTYPE html> <title>Task and Microtask Ordering </title> <link rel=author title="Joshua Bell" href="mailto:jsbell@google.com"> -<link rel=help href="https://html.spec.whatwg.org/multipage/webappapis.html#event-loops"> +<link rel=help href="https://html.spec.whatwg.org/multipage/#event-loops"> <script src="../../../../../../resources/testharness.js"></script> <script src="../../../../../../resources/testharnessreport.js"></script> <script src="resources/common.js"></script>
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html index 0bd88b8..af94892 100644 --- a/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html
@@ -2,7 +2,7 @@ <meta charset="utf-8"> <title>NavigatorLanguage: the most preferred language is the one returned by navigator.language</title> <link rel="author" title="Intel" href="http://www.intel.com"> -<link rel="help" href="https://html.spec.whatwg.org/multipage/webappapis.html#navigatorlanguage"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#navigatorlanguage"> <script src="../../../../../../resources/testharness.js"></script> <script src="../../../../../../resources/testharnessreport.js"></script> <div id="log"></div>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/repaint-subsequence-on-ancestor-clip-change-complex-expected.html b/third_party/WebKit/LayoutTests/paint/invalidation/repaint-subsequence-on-ancestor-clip-change-complex-expected.html new file mode 100644 index 0000000..bef23c7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/paint/invalidation/repaint-subsequence-on-ancestor-clip-change-complex-expected.html
@@ -0,0 +1,7 @@ +<!DOCTYPE html> +Tests repaint of subsequences when a non-stacking-context ancestor's clip changes. +Passes if the text is clipped at the yellow background. +<div style="overflow: hidden; background-color: yellow; width: 200px; white-space: nowrap"> + <span style="display: inline-block; width: 10px"></span> + Should be clipped: ABCDEFGHIJKLMNOPQRSTUVWXYZ +</div>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/repaint-subsequence-on-ancestor-clip-change-complex.html b/third_party/WebKit/LayoutTests/paint/invalidation/repaint-subsequence-on-ancestor-clip-change-complex.html new file mode 100644 index 0000000..b1dd75d --- /dev/null +++ b/third_party/WebKit/LayoutTests/paint/invalidation/repaint-subsequence-on-ancestor-clip-change-complex.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<script src="../../resources/run-after-layout-and-paint.js"></script> +<script> +onload = function() { + runAfterLayoutAndPaint(function() { + container.style.width = '200px'; + }, true); +}; +</script> +Tests repaint of subsequences when a non-stacking-context ancestor's clip changes. +Passes if the text is clipped at the yellow background. +<div id="container" style="overflow: hidden; background-color: yellow"> + <div style="display: inline-block;"> + <div style="width: 500px"> + <div style="z-index: 2; position: relative"> + <span style="display: inline-block; visibility: hidden; opacity: .6; width: 10px"></span> + Should be clipped: ABCDEFGHIJKLMNOPQRSTUVWXYZ + </div> + </div> + </div> +</div>
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/backgrounds/border-radius-split-background-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/backgrounds/border-radius-split-background-expected.png new file mode 100644 index 0000000..88a339e --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/backgrounds/border-radius-split-background-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/backgrounds/border-radius-split-background-image-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/backgrounds/border-radius-split-background-image-expected.png new file mode 100644 index 0000000..642c368 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/backgrounds/border-radius-split-background-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/borders/border-styles-split-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/borders/border-styles-split-expected.png new file mode 100644 index 0000000..48dc434 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/borders/border-styles-split-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/borders/borderRadiusMultiColors01-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/borders/borderRadiusMultiColors01-expected.png new file mode 100644 index 0000000..e955172 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/borders/borderRadiusMultiColors01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/borders/borderRadiusMultiColors02-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/borders/borderRadiusMultiColors02-expected.png new file mode 100644 index 0000000..1da9779 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/borders/borderRadiusMultiColors02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/borders/mixed-border-styles-radius-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/borders/mixed-border-styles-radius-expected.png new file mode 100644 index 0000000..b2888a9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/borders/mixed-border-styles-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/table/border-radius-with-image-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/table/border-radius-with-image-expected.png new file mode 100644 index 0000000..91df27ed --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/table/border-radius-with-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/writing-mode/border-styles-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/writing-mode/border-styles-vertical-lr-expected.png new file mode 100644 index 0000000..38ea22d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/writing-mode/border-styles-vertical-lr-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/writing-mode/border-styles-vertical-rl-expected.png b/third_party/WebKit/LayoutTests/platform/android/fast/writing-mode/border-styles-vertical-rl-expected.png new file mode 100644 index 0000000..c29fecf --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/fast/writing-mode/border-styles-vertical-rl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png b/third_party/WebKit/LayoutTests/platform/android/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png new file mode 100644 index 0000000..89ef106a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/media/video-zoom-controls-expected.png b/third_party/WebKit/LayoutTests/platform/android/media/video-zoom-controls-expected.png new file mode 100644 index 0000000..e2015cd --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/media/video-zoom-controls-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/svg/as-image/svg-non-integer-scaled-image-expected.png b/third_party/WebKit/LayoutTests/platform/android/svg/as-image/svg-non-integer-scaled-image-expected.png new file mode 100644 index 0000000..f2ebc81 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/svg/as-image/svg-non-integer-scaled-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/svg/custom/svg-fonts-in-html-expected.png b/third_party/WebKit/LayoutTests/platform/android/svg/custom/svg-fonts-in-html-expected.png new file mode 100644 index 0000000..085e3e5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/svg/custom/svg-fonts-in-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/android/svg/zoom/page/zoom-background-images-expected.png b/third_party/WebKit/LayoutTests/platform/android/svg/zoom/page/zoom-background-images-expected.png new file mode 100644 index 0000000..01d2082 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/svg/zoom/page/zoom-background-images-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/deleting/delete-3800834-fix-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/deleting/delete-3800834-fix-expected.png deleted file mode 100644 index 06d4fac..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/deleting/delete-3800834-fix-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/deleting/delete-3800834-fix-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/deleting/delete-3800834-fix-expected.txt deleted file mode 100644 index 7fb71ca7..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/deleting/delete-3800834-fix-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)] - LayoutInline {SPAN} at (0,0) size 37x27 - LayoutText {#text} at (14,14) size 37x27 - text run at (14,14) width 37: "Foo" - LayoutInline {SPAN} at (0,0) size 0x27 -caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/4924441-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/4924441-expected.png deleted file mode 100644 index 496a824..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/4924441-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/4924441-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/4924441-expected.txt deleted file mode 100644 index def2bf8f..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/4924441-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x40 - LayoutText {#text} at (0,0) size 781x39 - text run at (0,0) width 589: "This tests for a bug where changing the list type of an indented list would create unwanted nesting. " - text run at (589,0) width 192: "You should see a single ordered" - text run at (0,20) width 156: "list item in an indented list." - LayoutBlockFlow {DIV} at (0,56) size 784x20 - LayoutBlockFlow {UL} at (0,0) size 784x20 - LayoutBlockFlow {OL} at (40,0) size 744x20 - LayoutListItem {LI} at (40,0) size 704x20 - LayoutListMarker (anonymous) at (-16,0) size 16x19: "1" - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" -caret: position 3 of child 0 {#text} of child 0 {LI} of child 0 {OL} of child 0 {UL} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-1-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-1-expected.png deleted file mode 100644 index 565fc57c..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-1-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-1-expected.txt deleted file mode 100644 index 97042b26..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-1-expected.txt +++ /dev/null
@@ -1,21 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x40 - LayoutText {#text} at (0,0) size 743x39 - text run at (0,0) width 742: "This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was present" - text run at (0,20) width 175: "before the alignment change. " - text run at (175,20) width 568: "The image should be centered and the caret should be the same before and after the operation." - LayoutBlockFlow {DIV} at (0,56) size 784x143 - LayoutBlockFlow (anonymous) at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" - LayoutBR {BR} at (20,15) size 0x0 - LayoutBlockFlow {DIV} at (0,20) size 784x103 - LayoutImage {IMG} at (354,0) size 76x103 - LayoutBlockFlow (anonymous) at (0,123) size 784x20 - LayoutText {#text} at (0,0) size 21x19 - text run at (0,0) width 21: "baz" -caret: position 0 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-2-expected.png deleted file mode 100644 index b9c984f..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-2-expected.txt deleted file mode 100644 index a13e83e..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/5080333-2-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x40 - LayoutText {#text} at (0,0) size 765x39 - text run at (0,0) width 742: "This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was present" - text run at (0,20) width 175: "before the alignment change. " - text run at (175,20) width 590: "The image should be centered and the selection should be the same before and after the operation." - LayoutBlockFlow {DIV} at (0,56) size 784x143 - LayoutBlockFlow (anonymous) at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" - LayoutBR {BR} at (20,15) size 0x0 - LayoutBlockFlow {DIV} at (0,20) size 784x103 - LayoutImage {IMG} at (354,0) size 76x103 - LayoutBlockFlow (anonymous) at (0,123) size 784x20 - LayoutText {#text} at (0,0) size 21x19 - text run at (0,0) width 21: "baz" -selection start: position 0 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body -selection end: position 1 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/insert-list-and-stitch-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/insert-list-and-stitch-expected.png deleted file mode 100644 index 08ad960..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/insert-list-and-stitch-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/insert-list-and-stitch-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/insert-list-and-stitch-expected.txt deleted file mode 100644 index 13516d7..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/insert-list-and-stitch-expected.txt +++ /dev/null
@@ -1,33 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 584x19 - text run at (0,0) width 584: "The three items below should be stitched together into one ordered list when you click the button." - LayoutBlockFlow {DIV} at (0,36) size 784x60 - LayoutBlockFlow {DIV} at (0,0) size 784x60 - LayoutBlockFlow {OL} at (0,0) size 784x60 - LayoutListItem {LI} at (40,0) size 744x20 - LayoutListMarker (anonymous) at (-16,0) size 16x19: "1" - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" - LayoutListItem {LI} at (40,20) size 744x20 - LayoutListMarker (anonymous) at (-16,0) size 16x19: "2" - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "bar" - LayoutListItem {LI} at (40,40) size 744x20 - LayoutListMarker (anonymous) at (-16,0) size 16x19: "3" - LayoutText {#text} at (0,0) size 21x19 - text run at (0,0) width 21: "baz" -caret: position 0 of child 0 {#text} of child 2 {LI} of child 0 {OL} of child 1 {DIV} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-1-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-1-expected.png deleted file mode 100644 index 3ee3c08..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-1-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-1-expected.txt deleted file mode 100644 index e8a41cd..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-1-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 485x19 - text run at (0,0) width 270: "This tests cut/paste inside an editable iframe. " - text run at (270,0) width 215: "You should see 'foo bar baz' below." - LayoutBlockFlow (anonymous) at (0,36) size 784x154 - LayoutText {#text} at (0,0) size 0x0 -layer at (8,44) size 304x154 - LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)] - layer at (0,0) size 300x150 - LayoutView at (0,0) size 300x150 - layer at (0,0) size 300x150 - LayoutBlockFlow {HTML} at (0,0) size 300x150 - LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0] - LayoutText {#text} at (0,0) size 69x19 - text run at (0,0) width 69: "foo bar baz"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-2-expected.png deleted file mode 100644 index 577e07e..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-2-expected.txt deleted file mode 100644 index e87d6c9d..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/paste-2-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 537x19 - text run at (0,0) width 322: "This tests copy/delete/paste inside an editable iframe. " - text run at (322,0) width 215: "You should see 'foo bar baz' below." - LayoutBlockFlow (anonymous) at (0,36) size 784x154 - LayoutText {#text} at (0,0) size 0x0 -layer at (8,44) size 304x154 - LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)] - layer at (0,0) size 300x150 - LayoutView at (0,0) size 300x150 - layer at (0,0) size 300x150 - LayoutBlockFlow {HTML} at (0,0) size 300x150 - LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0] - LayoutText {#text} at (0,0) size 69x19 - text run at (0,0) width 69: "foo bar baz"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/remove-list-item-1-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/remove-list-item-1-expected.png deleted file mode 100644 index 69bf5d2..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/remove-list-item-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/remove-list-item-1-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/remove-list-item-1-expected.txt deleted file mode 100644 index 6df10dc..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/execCommand/remove-list-item-1-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 271x19 - text run at (0,0) width 271: "Outdenting a sublist should remove one level." - LayoutBlockFlow {DIV} at (0,36) size 784x20 - LayoutBlockFlow {UL} at (0,0) size 784x20 - LayoutListItem {LI} at (40,0) size 744x20 - LayoutListMarker (anonymous) at (-18,0) size 7x19: bullet - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" -caret: position 0 of child 0 {#text} of child 0 {LI} of child 0 {UL} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-div-026-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-div-026-expected.png deleted file mode 100644 index b2ba1b9..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-div-026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-div-026-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-div-026-expected.txt deleted file mode 100644 index ebfba55..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-div-026-expected.txt +++ /dev/null
@@ -1,50 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x210 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x111 - LayoutText {#text} at (0,0) size 64x26 - text run at (0,0) width 64: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 711x55 - text run at (0,27) width 711: "Inserting blocks for paragraphs should do a better job of finding a block to" - text run at (0,55) width 115: "insert after. " - LayoutInline {A} at (0,0) size 258x27 [color=#0000EE] - LayoutText {#text} at (114,55) size 258x27 - text run at (114,55) width 258: "<rdar://problem/3996605>" - LayoutText {#text} at (371,55) size 727x55 - text run at (371,55) width 356: " Insert paragraph command puts new" - text run at (0,83) width 543: "block in wrong place, creating difficult-to-handle HTML" - LayoutBlockFlow {DIV} at (14,141) size 756x55 - LayoutText {#text} at (0,0) size 189x26 - text run at (0,0) width 189: "Expected Results: " - LayoutBR {BR} at (189,21) size 0x0 - LayoutText {#text} at (0,27) size 436x27 - text run at (0,27) width 436: "Should see this content in the red box below: " - LayoutInline {B} at (0,0) size 19x26 - LayoutText {#text} at (436,27) size 19x26 - text run at (436,27) width 19: "fo" - LayoutText {#text} at (455,27) size 12x27 - text run at (455,27) width 12: "x" - LayoutBlockFlow {DIV} at (0,234) size 784x32 - LayoutBlockFlow {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)] - LayoutInline {B} at (0,0) size 19x26 - LayoutText {#text} at (2,2) size 19x26 - text run at (2,2) width 19: "fo" - LayoutText {#text} at (21,2) size 12x27 - text run at (21,2) width 12: "x" -caret: position 3 of child 0 {#text} of child 0 {B} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-paragraph-04-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-paragraph-04-expected.png deleted file mode 100644 index bc100317..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-paragraph-04-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-paragraph-04-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-paragraph-04-expected.txt deleted file mode 100644 index d03c65b6..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/insert-paragraph-04-expected.txt +++ /dev/null
@@ -1,37 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x60 - LayoutText {#text} at (0,0) size 772x39 - text run at (0,0) width 384: "This tests inserting a paragraph separator after a horizontal rule. " - text run at (384,0) width 388: "You should see 'foo', empty paragraph, horizontal rule, 'bar', and" - text run at (0,20) width 288: "the caret should be just after the horizontal rule. " - LayoutInline {B} at (0,0) size 766x39 - LayoutText {#text} at (288,20) size 766x39 - text run at (288,20) width 167: "This demonstrates 8345. " - text run at (455,20) width 311: "The caret after a horizontal rule is drawn in the" - text run at (0,40) width 335: "same location as the caret before a horizontal rule." - LayoutBlockFlow (anonymous) at (0,76) size 784x0 - LayoutInline {B} at (0,0) size 0x0 - LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow (anonymous) at (0,76) size 784x78 - LayoutBlockFlow {DIV} at (0,0) size 784x78 - LayoutBlockFlow (anonymous) at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 21x19 - text run at (0,0) width 21: "foo" - LayoutBlockFlow {HR} at (0,28) size 784x2 [border: (1px inset #EEEEEE)] - LayoutBlockFlow (anonymous) at (0,38) size 784x40 - LayoutBR {BR} at (0,0) size 0x19 - LayoutText {#text} at (0,20) size 22x19 - text run at (0,20) width 22: "bar" - LayoutBlockFlow (anonymous) at (0,154) size 784x0 - LayoutInline {B} at (0,0) size 0x0 -caret: position 0 of child 2 {BR} of child 1 {DIV} of child 1 {B} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-001-expected.png deleted file mode 100644 index 296bf0b..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-001-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-001-expected.txt deleted file mode 100644 index 0eae21f..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-001-expected.txt +++ /dev/null
@@ -1,50 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x294 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x83 - LayoutText {#text} at (0,0) size 64x26 - text run at (0,0) width 64: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 158x27 - text run at (0,27) width 158: "Fix for this bug: " - LayoutInline {A} at (0,0) size 257x27 [color=#0000EE] - LayoutText {#text} at (158,27) size 257x27 - text run at (158,27) width 257: "<rdar://problem/4045521>" - LayoutText {#text} at (415,27) size 719x55 - text run at (415,27) width 304: " Hitting return key with full line" - text run at (0,55) width 420: "selected does not add blank line as it should" - LayoutBlockFlow {DIV} at (14,113) size 756x167 - LayoutBlockFlow (anonymous) at (0,0) size 756x83 - LayoutText {#text} at (0,0) size 189x26 - text run at (0,0) width 189: "Expected Results: " - LayoutBR {BR} at (189,21) size 0x0 - LayoutText {#text} at (0,27) size 703x55 - text run at (0,27) width 703: "Should see this content in the red box below (note that the insertion point" - text run at (0,55) width 657: "should be at the start of the third line, immediately preceding \"baz\"):" - LayoutBlockFlow {DIV} at (0,83) size 756x28 - LayoutText {#text} at (0,0) size 32x27 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (0,111) size 756x28 - LayoutBR {BR} at (0,0) size 0x27 - LayoutBlockFlow {DIV} at (0,139) size 756x28 - LayoutText {#text} at (0,0) size 33x27 - text run at (0,0) width 33: "baz" - LayoutBlockFlow {DIV} at (0,318) size 784x88 - LayoutBlockFlow {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)] - LayoutBlockFlow {DIV} at (2,2) size 780x28 - LayoutText {#text} at (0,0) size 32x27 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (2,30) size 780x28 - LayoutBR {BR} at (0,0) size 0x27 - LayoutBlockFlow {DIV} at (2,58) size 780x28 - LayoutText {#text} at (0,0) size 33x27 - text run at (0,0) width 33: "baz" -caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-002-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-002-expected.png deleted file mode 100644 index ff4ce73f..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-002-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-002-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-002-expected.txt deleted file mode 100644 index b3c6f6ffc..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/inserting/return-key-with-selection-002-expected.txt +++ /dev/null
@@ -1,52 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x322 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x111 - LayoutText {#text} at (0,0) size 64x26 - text run at (0,0) width 64: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 604x27 - text run at (0,27) width 604: "A scenario I thought of based on my experiences with this bug:" - LayoutInline {A} at (0,0) size 257x27 [color=#0000EE] - LayoutText {#text} at (0,55) size 257x27 - text run at (0,55) width 257: "<rdar://problem/4045521>" - LayoutText {#text} at (257,55) size 732x55 - text run at (257,55) width 475: " Hitting return key with full line selected does not" - text run at (0,83) width 249: "add blank line as it should" - LayoutBlockFlow {DIV} at (14,141) size 756x167 - LayoutBlockFlow (anonymous) at (0,0) size 756x83 - LayoutText {#text} at (0,0) size 189x26 - text run at (0,0) width 189: "Expected Results: " - LayoutBR {BR} at (189,21) size 0x0 - LayoutText {#text} at (0,27) size 703x55 - text run at (0,27) width 703: "Should see this content in the red box below (note that the insertion point" - text run at (0,55) width 657: "should be at the start of the third line, immediately preceding \"baz\"):" - LayoutBlockFlow {DIV} at (0,83) size 756x28 - LayoutText {#text} at (0,0) size 32x27 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (0,111) size 756x28 - LayoutBR {BR} at (0,0) size 0x27 - LayoutBlockFlow {DIV} at (0,139) size 756x28 - LayoutText {#text} at (0,0) size 33x27 - text run at (0,0) width 33: "baz" - LayoutBlockFlow {DIV} at (0,346) size 784x88 - LayoutBlockFlow {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)] - LayoutBlockFlow {DIV} at (2,2) size 780x28 - LayoutText {#text} at (0,0) size 32x27 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (2,30) size 780x28 - LayoutBR {BR} at (0,0) size 0x27 - LayoutBlockFlow {DIV} at (2,58) size 780x28 - LayoutText {#text} at (0,0) size 33x27 - text run at (0,0) width 33: "baz" -caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/backgrounds/border-radius-split-background-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/backgrounds/border-radius-split-background-expected.png index 88a339e..0d8c5a52 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/backgrounds/border-radius-split-background-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/backgrounds/border-radius-split-background-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/backgrounds/border-radius-split-background-image-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/backgrounds/border-radius-split-background-image-expected.png index 642c368..3385053 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/backgrounds/border-radius-split-background-image-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/backgrounds/border-radius-split-background-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-styles-split-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-styles-split-expected.png index 48dc434..12a5190 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-styles-split-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-styles-split-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/mixed-border-styles-radius-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/mixed-border-styles-radius-expected.png index b2888a9..a9eeeae 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/mixed-border-styles-radius-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/mixed-border-styles-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/writing-mode/border-styles-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/writing-mode/border-styles-vertical-lr-expected.png index 38ea22d..69f5156 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/writing-mode/border-styles-vertical-lr-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/writing-mode/border-styles-vertical-lr-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/writing-mode/border-styles-vertical-rl-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/writing-mode/border-styles-vertical-rl-expected.png index c29fecf..56297cf4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/writing-mode/border-styles-vertical-rl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/writing-mode/border-styles-vertical-rl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png index 89ef106a..671840d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/media/video-zoom-controls-expected.png b/third_party/WebKit/LayoutTests/platform/linux/media/video-zoom-controls-expected.png index e2015cd..4b71765 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/media/video-zoom-controls-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/media/video-zoom-controls-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/svg-fonts-in-html-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/svg-fonts-in-html-expected.png index 085e3e5..8788167 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/svg-fonts-in-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/svg-fonts-in-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-background-images-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-background-images-expected.png index 01d2082..d16daa4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-background-images-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-background-images-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-3800834-fix-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-3800834-fix-expected.png deleted file mode 100644 index 9048d15..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-3800834-fix-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-3800834-fix-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-3800834-fix-expected.txt deleted file mode 100644 index 201cbcf6..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-3800834-fix-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)] - LayoutInline {SPAN} at (0,0) size 38x28 - LayoutText {#text} at (14,14) size 38x28 - text run at (14,14) width 38: "Foo" - LayoutInline {SPAN} at (0,0) size 1x28 -caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4924441-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4924441-expected.png deleted file mode 100644 index b533303..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4924441-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4924441-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4924441-expected.txt deleted file mode 100644 index d152fac..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4924441-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x36 - LayoutText {#text} at (0,0) size 745x36 - text run at (0,0) width 637: "This tests for a bug where changing the list type of an indented list would create unwanted nesting. " - text run at (636,0) width 109: "You should see a" - text run at (0,18) width 270: "single ordered list item in an indented list." - LayoutBlockFlow {DIV} at (0,52) size 784x18 - LayoutBlockFlow {UL} at (0,0) size 784x18 - LayoutBlockFlow {OL} at (40,0) size 744x18 - LayoutListItem {LI} at (40,0) size 704x18 - LayoutListMarker (anonymous) at (-16,0) size 16x18: "1" - LayoutText {#text} at (0,0) size 22x18 - text run at (0,0) width 22: "foo" -caret: position 3 of child 0 {#text} of child 0 {LI} of child 0 {OL} of child 0 {UL} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-1-expected.png deleted file mode 100644 index 5cac4dea..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-1-expected.txt deleted file mode 100644 index 97d4a3ee..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-1-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x54 - LayoutText {#text} at (0,0) size 773x54 - text run at (0,0) width 752: "This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was" - text run at (0,18) width 240: "present before the alignment change. " - text run at (239,18) width 534: "The image should be centered and the caret should be the same before and after the" - text run at (0,36) width 65: "operation." - LayoutBlockFlow {DIV} at (0,70) size 784x139 - LayoutBlockFlow (anonymous) at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 22x18 - text run at (0,0) width 22: "foo" - LayoutBR {BR} at (21,14) size 1x0 - LayoutBlockFlow {DIV} at (0,18) size 784x103 - LayoutImage {IMG} at (354,0) size 76x103 - LayoutBlockFlow (anonymous) at (0,121) size 784x18 - LayoutText {#text} at (0,0) size 23x18 - text run at (0,0) width 23: "baz" -caret: position 0 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-2-expected.png deleted file mode 100644 index 81b61f8..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-2-expected.txt deleted file mode 100644 index 86fa09c..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5080333-2-expected.txt +++ /dev/null
@@ -1,23 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x54 - LayoutText {#text} at (0,0) size 775x54 - text run at (0,0) width 752: "This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was" - text run at (0,18) width 240: "present before the alignment change. " - text run at (239,18) width 536: "The image should be centered and the selection should be the same before and after" - text run at (0,36) width 88: "the operation." - LayoutBlockFlow {DIV} at (0,70) size 784x139 - LayoutBlockFlow (anonymous) at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 22x18 - text run at (0,0) width 22: "foo" - LayoutBR {BR} at (21,14) size 1x0 - LayoutBlockFlow {DIV} at (0,18) size 784x103 - LayoutImage {IMG} at (354,0) size 76x103 - LayoutBlockFlow (anonymous) at (0,121) size 784x18 - LayoutText {#text} at (0,0) size 23x18 - text run at (0,0) width 23: "baz" -selection start: position 0 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body -selection end: position 1 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insert-list-and-stitch-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insert-list-and-stitch-expected.png deleted file mode 100644 index a2750eca..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insert-list-and-stitch-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insert-list-and-stitch-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insert-list-and-stitch-expected.txt deleted file mode 100644 index 2f77893..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insert-list-and-stitch-expected.txt +++ /dev/null
@@ -1,33 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 626x18 - text run at (0,0) width 626: "The three items below should be stitched together into one ordered list when you click the button." - LayoutBlockFlow {DIV} at (0,34) size 784x54 - LayoutBlockFlow {DIV} at (0,0) size 784x54 - LayoutBlockFlow {OL} at (0,0) size 784x54 - LayoutListItem {LI} at (40,0) size 744x18 - LayoutListMarker (anonymous) at (-16,0) size 16x18: "1" - LayoutText {#text} at (0,0) size 22x18 - text run at (0,0) width 22: "foo" - LayoutListItem {LI} at (40,18) size 744x18 - LayoutListMarker (anonymous) at (-16,0) size 16x18: "2" - LayoutText {#text} at (0,0) size 21x18 - text run at (0,0) width 21: "bar" - LayoutListItem {LI} at (40,36) size 744x18 - LayoutListMarker (anonymous) at (-16,0) size 16x18: "3" - LayoutText {#text} at (0,0) size 23x18 - text run at (0,0) width 23: "baz" -caret: position 0 of child 0 {#text} of child 2 {LI} of child 0 {OL} of child 1 {DIV} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-1-expected.png deleted file mode 100644 index ea72248..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-1-expected.txt deleted file mode 100644 index e91fc23..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-1-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 517x18 - text run at (0,0) width 292: "This tests cut/paste inside an editable iframe. " - text run at (291,0) width 226: "You should see 'foo bar baz' below." - LayoutBlockFlow (anonymous) at (0,34) size 784x154 - LayoutText {#text} at (0,0) size 0x0 -layer at (8,42) size 304x154 - LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)] - layer at (0,0) size 300x150 - LayoutView at (0,0) size 300x150 - layer at (0,0) size 300x150 - LayoutBlockFlow {HTML} at (0,0) size 300x150 - LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0] - LayoutText {#text} at (0,0) size 72x18 - text run at (0,0) width 72: "foo bar baz"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-2-expected.png deleted file mode 100644 index eb1a463..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-2-expected.txt deleted file mode 100644 index 46c805d..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/paste-2-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 571x18 - text run at (0,0) width 346: "This tests copy/delete/paste inside an editable iframe. " - text run at (345,0) width 226: "You should see 'foo bar baz' below." - LayoutBlockFlow (anonymous) at (0,34) size 784x154 - LayoutText {#text} at (0,0) size 0x0 -layer at (8,42) size 304x154 - LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)] - layer at (0,0) size 300x150 - LayoutView at (0,0) size 300x150 - layer at (0,0) size 300x150 - LayoutBlockFlow {HTML} at (0,0) size 300x150 - LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0] - LayoutText {#text} at (0,0) size 72x18 - text run at (0,0) width 72: "foo bar baz"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/remove-list-item-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/remove-list-item-1-expected.png deleted file mode 100644 index e5473b5b..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/remove-list-item-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/remove-list-item-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/remove-list-item-1-expected.txt deleted file mode 100644 index 2e59945..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/remove-list-item-1-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 294x18 - text run at (0,0) width 294: "Outdenting a sublist should remove one level." - LayoutBlockFlow {DIV} at (0,34) size 784x18 - LayoutBlockFlow {UL} at (0,0) size 784x18 - LayoutListItem {LI} at (40,0) size 744x18 - LayoutListMarker (anonymous) at (-17,0) size 7x18: bullet - LayoutText {#text} at (0,0) size 22x18 - text run at (0,0) width 22: "foo" -caret: position 0 of child 0 {#text} of child 0 {LI} of child 0 {UL} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-div-026-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-div-026-expected.png deleted file mode 100644 index f0fcf9b..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-div-026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-div-026-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-div-026-expected.txt deleted file mode 100644 index ce4103a9..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-div-026-expected.txt +++ /dev/null
@@ -1,50 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x212 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x112 - LayoutText {#text} at (0,0) size 66x28 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,28) size 714x56 - text run at (0,28) width 714: "Inserting blocks for paragraphs should do a better job of finding a block to" - text run at (0,56) width 114: "insert after. " - LayoutInline {A} at (0,0) size 258x28 [color=#0000EE] - LayoutText {#text} at (113,56) size 258x28 - text run at (113,56) width 258: "<rdar://problem/3996605>" - LayoutText {#text} at (370,56) size 726x56 - text run at (370,56) width 356: " Insert paragraph command puts new" - text run at (0,84) width 546: "block in wrong place, creating difficult-to-handle HTML" - LayoutBlockFlow {DIV} at (14,142) size 756x56 - LayoutText {#text} at (0,0) size 190x28 - text run at (0,0) width 190: "Expected Results: " - LayoutBR {BR} at (189,22) size 1x0 - LayoutText {#text} at (0,28) size 438x28 - text run at (0,28) width 438: "Should see this content in the red box below: " - LayoutInline {B} at (0,0) size 21x28 - LayoutText {#text} at (437,28) size 21x28 - text run at (437,28) width 21: "fo" - LayoutText {#text} at (457,28) size 13x28 - text run at (457,28) width 13: "x" - LayoutBlockFlow {DIV} at (0,236) size 784x32 - LayoutBlockFlow {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)] - LayoutInline {B} at (0,0) size 20x28 - LayoutText {#text} at (2,2) size 20x28 - text run at (2,2) width 20: "fo" - LayoutText {#text} at (21,2) size 13x28 - text run at (21,2) width 13: "x" -caret: position 3 of child 0 {#text} of child 0 {B} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-paragraph-04-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-paragraph-04-expected.png deleted file mode 100644 index bd7ae85f..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-paragraph-04-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-paragraph-04-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-paragraph-04-expected.txt deleted file mode 100644 index 6808a54..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-paragraph-04-expected.txt +++ /dev/null
@@ -1,37 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x54 - LayoutText {#text} at (0,0) size 763x36 - text run at (0,0) width 413: "This tests inserting a paragraph separator after a horizontal rule. " - text run at (412,0) width 351: "You should see 'foo', empty paragraph, horizontal rule," - text run at (0,18) width 372: "'bar', and the caret should be just after the horizontal rule. " - LayoutInline {B} at (0,0) size 776x36 - LayoutText {#text} at (371,18) size 776x36 - text run at (371,18) width 171: "This demonstrates 8345. " - text run at (541,18) width 235: "The caret after a horizontal rule is" - text run at (0,36) width 435: "drawn in the same location as the caret before a horizontal rule." - LayoutBlockFlow (anonymous) at (0,70) size 784x0 - LayoutInline {B} at (0,0) size 0x0 - LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow (anonymous) at (0,70) size 784x72 - LayoutBlockFlow {DIV} at (0,0) size 784x72 - LayoutBlockFlow (anonymous) at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 22x18 - text run at (0,0) width 22: "foo" - LayoutBlockFlow {HR} at (0,26) size 784x2 [border: (1px inset #EEEEEE)] - LayoutBlockFlow (anonymous) at (0,36) size 784x36 - LayoutBR {BR} at (0,0) size 0x18 - LayoutText {#text} at (0,18) size 24x18 - text run at (0,18) width 24: "bar" - LayoutBlockFlow (anonymous) at (0,142) size 784x0 - LayoutInline {B} at (0,0) size 0x0 -caret: position 0 of child 2 {BR} of child 1 {DIV} of child 1 {B} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-001-expected.png deleted file mode 100644 index e1a9b1b..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-001-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-001-expected.txt deleted file mode 100644 index 7fc671d..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-001-expected.txt +++ /dev/null
@@ -1,50 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x296 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x84 - LayoutText {#text} at (0,0) size 66x28 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,28) size 162x28 - text run at (0,28) width 162: "Fix for this bug: " - LayoutInline {A} at (0,0) size 257x28 [color=#0000EE] - LayoutText {#text} at (161,28) size 257x28 - text run at (161,28) width 257: "<rdar://problem/4045521>" - LayoutText {#text} at (417,28) size 726x56 - text run at (417,28) width 309: " Hitting return key with full line" - text run at (0,56) width 422: "selected does not add blank line as it should" - LayoutBlockFlow {DIV} at (14,114) size 756x168 - LayoutBlockFlow (anonymous) at (0,0) size 756x84 - LayoutText {#text} at (0,0) size 190x28 - text run at (0,0) width 190: "Expected Results: " - LayoutBR {BR} at (189,22) size 1x0 - LayoutText {#text} at (0,28) size 704x56 - text run at (0,28) width 704: "Should see this content in the red box below (note that the insertion point" - text run at (0,56) width 660: "should be at the start of the third line, immediately preceding \"baz\"):" - LayoutBlockFlow {DIV} at (0,84) size 756x28 - LayoutText {#text} at (0,0) size 32x28 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (0,112) size 756x28 - LayoutBR {BR} at (0,0) size 0x28 - LayoutBlockFlow {DIV} at (0,140) size 756x28 - LayoutText {#text} at (0,0) size 34x28 - text run at (0,0) width 34: "baz" - LayoutBlockFlow {DIV} at (0,320) size 784x88 - LayoutBlockFlow {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)] - LayoutBlockFlow {DIV} at (2,2) size 780x28 - LayoutText {#text} at (0,0) size 32x28 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (2,30) size 780x28 - LayoutBR {BR} at (0,0) size 0x28 - LayoutBlockFlow {DIV} at (2,58) size 780x28 - LayoutText {#text} at (0,0) size 34x28 - text run at (0,0) width 34: "baz" -caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-002-expected.png deleted file mode 100644 index 2a91e3cc..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-002-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-002-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-002-expected.txt deleted file mode 100644 index 146c2104..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/return-key-with-selection-002-expected.txt +++ /dev/null
@@ -1,52 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x324 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x112 - LayoutText {#text} at (0,0) size 66x28 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,28) size 608x28 - text run at (0,28) width 608: "A scenario I thought of based on my experiences with this bug:" - LayoutInline {A} at (0,0) size 257x28 [color=#0000EE] - LayoutText {#text} at (0,56) size 257x28 - text run at (0,56) width 257: "<rdar://problem/4045521>" - LayoutText {#text} at (256,56) size 735x56 - text run at (256,56) width 479: " Hitting return key with full line selected does not" - text run at (0,84) width 252: "add blank line as it should" - LayoutBlockFlow {DIV} at (14,142) size 756x168 - LayoutBlockFlow (anonymous) at (0,0) size 756x84 - LayoutText {#text} at (0,0) size 190x28 - text run at (0,0) width 190: "Expected Results: " - LayoutBR {BR} at (189,22) size 1x0 - LayoutText {#text} at (0,28) size 704x56 - text run at (0,28) width 704: "Should see this content in the red box below (note that the insertion point" - text run at (0,56) width 660: "should be at the start of the third line, immediately preceding \"baz\"):" - LayoutBlockFlow {DIV} at (0,84) size 756x28 - LayoutText {#text} at (0,0) size 32x28 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (0,112) size 756x28 - LayoutBR {BR} at (0,0) size 0x28 - LayoutBlockFlow {DIV} at (0,140) size 756x28 - LayoutText {#text} at (0,0) size 34x28 - text run at (0,0) width 34: "baz" - LayoutBlockFlow {DIV} at (0,348) size 784x88 - LayoutBlockFlow {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)] - LayoutBlockFlow {DIV} at (2,2) size 780x28 - LayoutText {#text} at (0,0) size 32x28 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (2,30) size 780x28 - LayoutBR {BR} at (0,0) size 0x28 - LayoutBlockFlow {DIV} at (2,58) size 780x28 - LayoutText {#text} at (0,0) size 34x28 - text run at (0,0) width 34: "baz" -caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/border-radius-split-background-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/border-radius-split-background-expected.png index 7885073..8cac72cb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/border-radius-split-background-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/border-radius-split-background-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/border-radius-split-background-image-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/border-radius-split-background-image-expected.png index 26448ec9..1f16d53 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/border-radius-split-background-image-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/border-radius-split-background-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-styles-split-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-styles-split-expected.png index 48dc434..12a5190 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-styles-split-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-styles-split-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.png index f5a33fe..cb3ea791 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-rl-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-rl-expected.png index 19ed6ea..e330cf2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-rl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-rl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png index 4325682..daf39c0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/media/video-zoom-controls-expected.png b/third_party/WebKit/LayoutTests/platform/mac/media/video-zoom-controls-expected.png index 1cd45af..499a614 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/media/video-zoom-controls-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/media/video-zoom-controls-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/svg-fonts-in-html-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/svg-fonts-in-html-expected.png index 05d8ce4d..9e68af4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/svg-fonts-in-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/svg-fonts-in-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-background-images-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-background-images-expected.png index 1fae29f0aab..99ad1e1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-background-images-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-background-images-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/deleting/delete-3800834-fix-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/deleting/delete-3800834-fix-expected.png deleted file mode 100644 index 2e8dd58..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/deleting/delete-3800834-fix-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/deleting/delete-3800834-fix-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/deleting/delete-3800834-fix-expected.txt deleted file mode 100644 index 7fb71ca7..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/deleting/delete-3800834-fix-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)] - LayoutInline {SPAN} at (0,0) size 37x27 - LayoutText {#text} at (14,14) size 37x27 - text run at (14,14) width 37: "Foo" - LayoutInline {SPAN} at (0,0) size 0x27 -caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/4924441-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/4924441-expected.png deleted file mode 100644 index 8f75395..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/4924441-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/4924441-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/4924441-expected.txt deleted file mode 100644 index e906dc7..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/4924441-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x40 - LayoutText {#text} at (0,0) size 782x39 - text run at (0,0) width 589: "This tests for a bug where changing the list type of an indented list would create unwanted nesting. " - text run at (589,0) width 193: "You should see a single ordered" - text run at (0,20) width 156: "list item in an indented list." - LayoutBlockFlow {DIV} at (0,56) size 784x20 - LayoutBlockFlow {UL} at (0,0) size 784x20 - LayoutBlockFlow {OL} at (40,0) size 744x20 - LayoutListItem {LI} at (40,0) size 704x20 - LayoutListMarker (anonymous) at (-16,0) size 16x19: "1" - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" -caret: position 3 of child 0 {#text} of child 0 {LI} of child 0 {OL} of child 0 {UL} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-1-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-1-expected.png deleted file mode 100644 index c4257518..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-1-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-1-expected.txt deleted file mode 100644 index 97042b26..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-1-expected.txt +++ /dev/null
@@ -1,21 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x40 - LayoutText {#text} at (0,0) size 743x39 - text run at (0,0) width 742: "This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was present" - text run at (0,20) width 175: "before the alignment change. " - text run at (175,20) width 568: "The image should be centered and the caret should be the same before and after the operation." - LayoutBlockFlow {DIV} at (0,56) size 784x143 - LayoutBlockFlow (anonymous) at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" - LayoutBR {BR} at (20,15) size 0x0 - LayoutBlockFlow {DIV} at (0,20) size 784x103 - LayoutImage {IMG} at (354,0) size 76x103 - LayoutBlockFlow (anonymous) at (0,123) size 784x20 - LayoutText {#text} at (0,0) size 21x19 - text run at (0,0) width 21: "baz" -caret: position 0 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-2-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-2-expected.png deleted file mode 100644 index 58f2670c..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-2-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-2-expected.txt deleted file mode 100644 index a13e83e..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/5080333-2-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x40 - LayoutText {#text} at (0,0) size 765x39 - text run at (0,0) width 742: "This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was present" - text run at (0,20) width 175: "before the alignment change. " - text run at (175,20) width 590: "The image should be centered and the selection should be the same before and after the operation." - LayoutBlockFlow {DIV} at (0,56) size 784x143 - LayoutBlockFlow (anonymous) at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" - LayoutBR {BR} at (20,15) size 0x0 - LayoutBlockFlow {DIV} at (0,20) size 784x103 - LayoutImage {IMG} at (354,0) size 76x103 - LayoutBlockFlow (anonymous) at (0,123) size 784x20 - LayoutText {#text} at (0,0) size 21x19 - text run at (0,0) width 21: "baz" -selection start: position 0 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body -selection end: position 1 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/insert-list-and-stitch-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/insert-list-and-stitch-expected.png deleted file mode 100644 index b2d21f12..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/insert-list-and-stitch-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/insert-list-and-stitch-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/insert-list-and-stitch-expected.txt deleted file mode 100644 index 13516d7..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/insert-list-and-stitch-expected.txt +++ /dev/null
@@ -1,33 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 584x19 - text run at (0,0) width 584: "The three items below should be stitched together into one ordered list when you click the button." - LayoutBlockFlow {DIV} at (0,36) size 784x60 - LayoutBlockFlow {DIV} at (0,0) size 784x60 - LayoutBlockFlow {OL} at (0,0) size 784x60 - LayoutListItem {LI} at (40,0) size 744x20 - LayoutListMarker (anonymous) at (-16,0) size 16x19: "1" - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" - LayoutListItem {LI} at (40,20) size 744x20 - LayoutListMarker (anonymous) at (-16,0) size 16x19: "2" - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "bar" - LayoutListItem {LI} at (40,40) size 744x20 - LayoutListMarker (anonymous) at (-16,0) size 16x19: "3" - LayoutText {#text} at (0,0) size 21x19 - text run at (0,0) width 21: "baz" -caret: position 0 of child 0 {#text} of child 2 {LI} of child 0 {OL} of child 1 {DIV} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-1-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-1-expected.png deleted file mode 100644 index baae60fb..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-1-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-1-expected.txt deleted file mode 100644 index 4cf9319..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-1-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 487x19 - text run at (0,0) width 270: "This tests cut/paste inside an editable iframe. " - text run at (270,0) width 217: "You should see 'foo bar baz' below." - LayoutBlockFlow (anonymous) at (0,36) size 784x154 - LayoutText {#text} at (0,0) size 0x0 -layer at (8,44) size 304x154 - LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)] - layer at (0,0) size 300x150 - LayoutView at (0,0) size 300x150 - layer at (0,0) size 300x150 - LayoutBlockFlow {HTML} at (0,0) size 300x150 - LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0] - LayoutText {#text} at (0,0) size 69x19 - text run at (0,0) width 69: "foo bar baz"
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-2-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-2-expected.png deleted file mode 100644 index f71ebec..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-2-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-2-expected.txt deleted file mode 100644 index ed0c0fc..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/paste-2-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 539x19 - text run at (0,0) width 322: "This tests copy/delete/paste inside an editable iframe. " - text run at (322,0) width 217: "You should see 'foo bar baz' below." - LayoutBlockFlow (anonymous) at (0,36) size 784x154 - LayoutText {#text} at (0,0) size 0x0 -layer at (8,44) size 304x154 - LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)] - layer at (0,0) size 300x150 - LayoutView at (0,0) size 300x150 - layer at (0,0) size 300x150 - LayoutBlockFlow {HTML} at (0,0) size 300x150 - LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0] - LayoutText {#text} at (0,0) size 69x19 - text run at (0,0) width 69: "foo bar baz"
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/remove-list-item-1-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/remove-list-item-1-expected.png deleted file mode 100644 index 84c2302..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/remove-list-item-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/remove-list-item-1-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/remove-list-item-1-expected.txt deleted file mode 100644 index 6df10dc..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/execCommand/remove-list-item-1-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 271x19 - text run at (0,0) width 271: "Outdenting a sublist should remove one level." - LayoutBlockFlow {DIV} at (0,36) size 784x20 - LayoutBlockFlow {UL} at (0,0) size 784x20 - LayoutListItem {LI} at (40,0) size 744x20 - LayoutListMarker (anonymous) at (-18,0) size 7x19: bullet - LayoutText {#text} at (0,0) size 20x19 - text run at (0,0) width 20: "foo" -caret: position 0 of child 0 {#text} of child 0 {LI} of child 0 {UL} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-div-026-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-div-026-expected.png deleted file mode 100644 index 1209770..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-div-026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-div-026-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-div-026-expected.txt deleted file mode 100644 index 700c81d..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-div-026-expected.txt +++ /dev/null
@@ -1,50 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x210 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x111 - LayoutText {#text} at (0,0) size 66x26 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 711x55 - text run at (0,27) width 711: "Inserting blocks for paragraphs should do a better job of finding a block to" - text run at (0,55) width 116: "insert after. " - LayoutInline {A} at (0,0) size 257x27 [color=#0000EE] - LayoutText {#text} at (116,55) size 257x27 - text run at (116,55) width 257: "<rdar://problem/3996605>" - LayoutText {#text} at (373,55) size 728x55 - text run at (373,55) width 355: " Insert paragraph command puts new" - text run at (0,83) width 543: "block in wrong place, creating difficult-to-handle HTML" - LayoutBlockFlow {DIV} at (14,141) size 756x55 - LayoutText {#text} at (0,0) size 189x26 - text run at (0,0) width 189: "Expected Results: " - LayoutBR {BR} at (189,21) size 0x0 - LayoutText {#text} at (0,27) size 436x27 - text run at (0,27) width 436: "Should see this content in the red box below: " - LayoutInline {B} at (0,0) size 19x26 - LayoutText {#text} at (436,27) size 19x26 - text run at (436,27) width 19: "fo" - LayoutText {#text} at (455,27) size 12x27 - text run at (455,27) width 12: "x" - LayoutBlockFlow {DIV} at (0,234) size 784x32 - LayoutBlockFlow {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)] - LayoutInline {B} at (0,0) size 19x26 - LayoutText {#text} at (2,2) size 19x26 - text run at (2,2) width 19: "fo" - LayoutText {#text} at (21,2) size 12x27 - text run at (21,2) width 12: "x" -caret: position 3 of child 0 {#text} of child 0 {B} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-paragraph-04-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-paragraph-04-expected.png deleted file mode 100644 index b7bfd96d..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-paragraph-04-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-paragraph-04-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-paragraph-04-expected.txt deleted file mode 100644 index ef37881ac..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/insert-paragraph-04-expected.txt +++ /dev/null
@@ -1,37 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x60 - LayoutText {#text} at (0,0) size 773x39 - text run at (0,0) width 384: "This tests inserting a paragraph separator after a horizontal rule. " - text run at (384,0) width 389: "You should see 'foo', empty paragraph, horizontal rule, 'bar', and" - text run at (0,20) width 288: "the caret should be just after the horizontal rule. " - LayoutInline {B} at (0,0) size 766x39 - LayoutText {#text} at (288,20) size 766x39 - text run at (288,20) width 167: "This demonstrates 8345. " - text run at (455,20) width 311: "The caret after a horizontal rule is drawn in the" - text run at (0,40) width 335: "same location as the caret before a horizontal rule." - LayoutBlockFlow (anonymous) at (0,76) size 784x0 - LayoutInline {B} at (0,0) size 0x0 - LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow (anonymous) at (0,76) size 784x78 - LayoutBlockFlow {DIV} at (0,0) size 784x78 - LayoutBlockFlow (anonymous) at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 21x19 - text run at (0,0) width 21: "foo" - LayoutBlockFlow {HR} at (0,28) size 784x2 [border: (1px inset #EEEEEE)] - LayoutBlockFlow (anonymous) at (0,38) size 784x40 - LayoutBR {BR} at (0,0) size 0x19 - LayoutText {#text} at (0,20) size 22x19 - text run at (0,20) width 22: "bar" - LayoutBlockFlow (anonymous) at (0,154) size 784x0 - LayoutInline {B} at (0,0) size 0x0 -caret: position 0 of child 2 {BR} of child 1 {DIV} of child 1 {B} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-001-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-001-expected.png deleted file mode 100644 index bd2ecba..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-001-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-001-expected.txt deleted file mode 100644 index 795174d..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-001-expected.txt +++ /dev/null
@@ -1,50 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x294 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x83 - LayoutText {#text} at (0,0) size 66x26 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 158x27 - text run at (0,27) width 158: "Fix for this bug: " - LayoutInline {A} at (0,0) size 257x27 [color=#0000EE] - LayoutText {#text} at (158,27) size 257x27 - text run at (158,27) width 257: "<rdar://problem/4045521>" - LayoutText {#text} at (415,27) size 719x55 - text run at (415,27) width 304: " Hitting return key with full line" - text run at (0,55) width 420: "selected does not add blank line as it should" - LayoutBlockFlow {DIV} at (14,113) size 756x167 - LayoutBlockFlow (anonymous) at (0,0) size 756x83 - LayoutText {#text} at (0,0) size 189x26 - text run at (0,0) width 189: "Expected Results: " - LayoutBR {BR} at (189,21) size 0x0 - LayoutText {#text} at (0,27) size 703x55 - text run at (0,27) width 703: "Should see this content in the red box below (note that the insertion point" - text run at (0,55) width 657: "should be at the start of the third line, immediately preceding \"baz\"):" - LayoutBlockFlow {DIV} at (0,83) size 756x28 - LayoutText {#text} at (0,0) size 32x27 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (0,111) size 756x28 - LayoutBR {BR} at (0,0) size 0x27 - LayoutBlockFlow {DIV} at (0,139) size 756x28 - LayoutText {#text} at (0,0) size 33x27 - text run at (0,0) width 33: "baz" - LayoutBlockFlow {DIV} at (0,318) size 784x88 - LayoutBlockFlow {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)] - LayoutBlockFlow {DIV} at (2,2) size 780x28 - LayoutText {#text} at (0,0) size 32x27 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (2,30) size 780x28 - LayoutBR {BR} at (0,0) size 0x27 - LayoutBlockFlow {DIV} at (2,58) size 780x28 - LayoutText {#text} at (0,0) size 33x27 - text run at (0,0) width 33: "baz" -caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-002-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-002-expected.png deleted file mode 100644 index 1ed25d8..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-002-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-002-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-002-expected.txt deleted file mode 100644 index b0bdc11..0000000 --- a/third_party/WebKit/LayoutTests/platform/win-xp/editing/inserting/return-key-with-selection-002-expected.txt +++ /dev/null
@@ -1,52 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x322 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x111 - LayoutText {#text} at (0,0) size 66x26 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 604x27 - text run at (0,27) width 604: "A scenario I thought of based on my experiences with this bug:" - LayoutInline {A} at (0,0) size 257x27 [color=#0000EE] - LayoutText {#text} at (0,55) size 257x27 - text run at (0,55) width 257: "<rdar://problem/4045521>" - LayoutText {#text} at (257,55) size 732x55 - text run at (257,55) width 475: " Hitting return key with full line selected does not" - text run at (0,83) width 249: "add blank line as it should" - LayoutBlockFlow {DIV} at (14,141) size 756x167 - LayoutBlockFlow (anonymous) at (0,0) size 756x83 - LayoutText {#text} at (0,0) size 189x26 - text run at (0,0) width 189: "Expected Results: " - LayoutBR {BR} at (189,21) size 0x0 - LayoutText {#text} at (0,27) size 703x55 - text run at (0,27) width 703: "Should see this content in the red box below (note that the insertion point" - text run at (0,55) width 657: "should be at the start of the third line, immediately preceding \"baz\"):" - LayoutBlockFlow {DIV} at (0,83) size 756x28 - LayoutText {#text} at (0,0) size 32x27 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (0,111) size 756x28 - LayoutBR {BR} at (0,0) size 0x27 - LayoutBlockFlow {DIV} at (0,139) size 756x28 - LayoutText {#text} at (0,0) size 33x27 - text run at (0,0) width 33: "baz" - LayoutBlockFlow {DIV} at (0,346) size 784x88 - LayoutBlockFlow {DIV} at (0,0) size 784x88 [border: (2px solid #FF0000)] - LayoutBlockFlow {DIV} at (2,2) size 780x28 - LayoutText {#text} at (0,0) size 32x27 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (2,30) size 780x28 - LayoutBR {BR} at (0,0) size 0x27 - LayoutBlockFlow {DIV} at (2,58) size 780x28 - LayoutText {#text} at (0,0) size 33x27 - text run at (0,0) width 33: "baz" -caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/backgrounds/border-radius-split-background-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/backgrounds/border-radius-split-background-expected.png index 88a339e..0d8c5a52 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/backgrounds/border-radius-split-background-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/backgrounds/border-radius-split-background-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/backgrounds/border-radius-split-background-image-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/backgrounds/border-radius-split-background-image-expected.png index 642c368..3385053 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/backgrounds/border-radius-split-background-image-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/backgrounds/border-radius-split-background-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/borders/border-styles-split-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/borders/border-styles-split-expected.png index 48dc434..12a5190 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/borders/border-styles-split-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/borders/border-styles-split-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/borders/mixed-border-styles-radius-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/borders/mixed-border-styles-radius-expected.png index b2888a9..a9eeeae 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/borders/mixed-border-styles-radius-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/borders/mixed-border-styles-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/writing-mode/border-styles-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/writing-mode/border-styles-vertical-lr-expected.png index 38ea22d..69f5156 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/writing-mode/border-styles-vertical-lr-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/writing-mode/border-styles-vertical-lr-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/fast/writing-mode/border-styles-vertical-rl-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/fast/writing-mode/border-styles-vertical-rl-expected.png index c29fecf..56297cf4 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/fast/writing-mode/border-styles-vertical-rl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/fast/writing-mode/border-styles-vertical-rl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png index 84a51a26..fd1785b 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/media/video-zoom-controls-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/media/video-zoom-controls-expected.png index 1b8023a..3177f44 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/media/video-zoom-controls-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/media/video-zoom-controls-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/as-image/svg-non-integer-scaled-image-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/svg/as-image/svg-non-integer-scaled-image-expected.png new file mode 100644 index 0000000..f2ebc81 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/as-image/svg-non-integer-scaled-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/svg-fonts-in-html-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/svg-fonts-in-html-expected.png index cb72331..c691957f 100644 --- a/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/svg-fonts-in-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/custom/svg-fonts-in-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/svg/zoom/page/zoom-background-images-expected.png b/third_party/WebKit/LayoutTests/platform/win-xp/svg/zoom/page/zoom-background-images-expected.png new file mode 100644 index 0000000..ee98c43 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win-xp/svg/zoom/page/zoom-background-images-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/deleting/delete-3800834-fix-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/deleting/delete-3800834-fix-expected.png deleted file mode 100644 index af6754b..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/deleting/delete-3800834-fix-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/deleting/delete-3800834-fix-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/deleting/delete-3800834-fix-expected.txt deleted file mode 100644 index ece81e1..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/deleting/delete-3800834-fix-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x55 [border: (2px solid #FF0000)] - LayoutInline {SPAN} at (0,0) size 38x26 - LayoutText {#text} at (14,14) size 38x26 - text run at (14,14) width 38: "Foo" - LayoutInline {SPAN} at (0,0) size 1x26 -caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/4924441-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/4924441-expected.png deleted file mode 100644 index e2154d91..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/4924441-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/4924441-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/4924441-expected.txt deleted file mode 100644 index 72f6a09d..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/4924441-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x36 - LayoutText {#text} at (0,0) size 745x35 - text run at (0,0) width 637: "This tests for a bug where changing the list type of an indented list would create unwanted nesting. " - text run at (636,0) width 109: "You should see a" - text run at (0,18) width 270: "single ordered list item in an indented list." - LayoutBlockFlow {DIV} at (0,52) size 784x18 - LayoutBlockFlow {UL} at (0,0) size 784x18 - LayoutBlockFlow {OL} at (40,0) size 744x18 - LayoutListItem {LI} at (40,0) size 704x18 - LayoutListMarker (anonymous) at (-16,0) size 16x17: "1" - LayoutText {#text} at (0,0) size 22x17 - text run at (0,0) width 22: "foo" -caret: position 3 of child 0 {#text} of child 0 {LI} of child 0 {OL} of child 0 {UL} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-1-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-1-expected.png deleted file mode 100644 index c43b5be..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-1-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-1-expected.txt deleted file mode 100644 index 4d208bd..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-1-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x54 - LayoutText {#text} at (0,0) size 773x53 - text run at (0,0) width 752: "This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was" - text run at (0,18) width 240: "present before the alignment change. " - text run at (239,18) width 534: "The image should be centered and the caret should be the same before and after the" - text run at (0,36) width 65: "operation." - LayoutBlockFlow {DIV} at (0,70) size 784x139 - LayoutBlockFlow (anonymous) at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 22x17 - text run at (0,0) width 22: "foo" - LayoutBR {BR} at (21,14) size 1x0 - LayoutBlockFlow {DIV} at (0,18) size 784x103 - LayoutImage {IMG} at (354,0) size 76x103 - LayoutBlockFlow (anonymous) at (0,121) size 784x18 - LayoutText {#text} at (0,0) size 23x17 - text run at (0,0) width 23: "baz" -caret: position 0 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-2-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-2-expected.png deleted file mode 100644 index bd40103..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-2-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-2-expected.txt deleted file mode 100644 index df77dfc..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/5080333-2-expected.txt +++ /dev/null
@@ -1,23 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x54 - LayoutText {#text} at (0,0) size 775x53 - text run at (0,0) width 752: "This tests for a bug where changing the alignment of an image would result in a selection that wasn't the one that was" - text run at (0,18) width 240: "present before the alignment change. " - text run at (239,18) width 536: "The image should be centered and the selection should be the same before and after" - text run at (0,36) width 88: "the operation." - LayoutBlockFlow {DIV} at (0,70) size 784x139 - LayoutBlockFlow (anonymous) at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 22x17 - text run at (0,0) width 22: "foo" - LayoutBR {BR} at (21,14) size 1x0 - LayoutBlockFlow {DIV} at (0,18) size 784x103 - LayoutImage {IMG} at (354,0) size 76x103 - LayoutBlockFlow (anonymous) at (0,121) size 784x18 - LayoutText {#text} at (0,0) size 23x17 - text run at (0,0) width 23: "baz" -selection start: position 0 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body -selection end: position 1 of child 0 {IMG} of child 2 {DIV} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/insert-list-and-stitch-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/insert-list-and-stitch-expected.png deleted file mode 100644 index d611fb36..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/insert-list-and-stitch-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/insert-list-and-stitch-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/insert-list-and-stitch-expected.txt deleted file mode 100644 index c49b603..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/insert-list-and-stitch-expected.txt +++ /dev/null
@@ -1,33 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 626x17 - text run at (0,0) width 626: "The three items below should be stitched together into one ordered list when you click the button." - LayoutBlockFlow {DIV} at (0,34) size 784x54 - LayoutBlockFlow {DIV} at (0,0) size 784x54 - LayoutBlockFlow {OL} at (0,0) size 784x54 - LayoutListItem {LI} at (40,0) size 744x18 - LayoutListMarker (anonymous) at (-16,0) size 16x17: "1" - LayoutText {#text} at (0,0) size 22x17 - text run at (0,0) width 22: "foo" - LayoutListItem {LI} at (40,18) size 744x18 - LayoutListMarker (anonymous) at (-16,0) size 16x17: "2" - LayoutText {#text} at (0,0) size 21x17 - text run at (0,0) width 21: "bar" - LayoutListItem {LI} at (40,36) size 744x18 - LayoutListMarker (anonymous) at (-16,0) size 16x17: "3" - LayoutText {#text} at (0,0) size 23x17 - text run at (0,0) width 23: "baz" -caret: position 0 of child 0 {#text} of child 2 {LI} of child 0 {OL} of child 1 {DIV} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-1-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-1-expected.png deleted file mode 100644 index 68f802b..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-1-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-1-expected.txt deleted file mode 100644 index d006b0f9..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-1-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 517x17 - text run at (0,0) width 292: "This tests cut/paste inside an editable iframe. " - text run at (291,0) width 226: "You should see 'foo bar baz' below." - LayoutBlockFlow (anonymous) at (0,34) size 784x154 - LayoutText {#text} at (0,0) size 0x0 -layer at (8,42) size 304x154 - LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)] - layer at (0,0) size 300x150 - LayoutView at (0,0) size 300x150 - layer at (0,0) size 300x150 - LayoutBlockFlow {HTML} at (0,0) size 300x150 - LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0] - LayoutText {#text} at (0,0) size 72x17 - text run at (0,0) width 72: "foo bar baz"
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-2-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-2-expected.png deleted file mode 100644 index ac450d7..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-2-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-2-expected.txt deleted file mode 100644 index ece33cf..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/paste-2-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 571x17 - text run at (0,0) width 346: "This tests copy/delete/paste inside an editable iframe. " - text run at (345,0) width 226: "You should see 'foo bar baz' below." - LayoutBlockFlow (anonymous) at (0,34) size 784x154 - LayoutText {#text} at (0,0) size 0x0 -layer at (8,42) size 304x154 - LayoutIFrame {IFRAME} at (0,0) size 304x154 [border: (2px inset #EEEEEE)] - layer at (0,0) size 300x150 - LayoutView at (0,0) size 300x150 - layer at (0,0) size 300x150 - LayoutBlockFlow {HTML} at (0,0) size 300x150 - LayoutBlockFlow {BODY} at (8,8) size 284x134 [bgcolor=#FFFFE0] - LayoutText {#text} at (0,0) size 72x17 - text run at (0,0) width 72: "foo bar baz"
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/remove-list-item-1-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/remove-list-item-1-expected.png deleted file mode 100644 index 870fdb2..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/remove-list-item-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/remove-list-item-1-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/remove-list-item-1-expected.txt deleted file mode 100644 index 5030fa69..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/execCommand/remove-list-item-1-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x576 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 294x17 - text run at (0,0) width 294: "Outdenting a sublist should remove one level." - LayoutBlockFlow {DIV} at (0,34) size 784x18 - LayoutBlockFlow {UL} at (0,0) size 784x18 - LayoutListItem {LI} at (40,0) size 744x18 - LayoutListMarker (anonymous) at (-17,0) size 7x17: bullet - LayoutText {#text} at (0,0) size 22x17 - text run at (0,0) width 22: "foo" -caret: position 0 of child 0 {#text} of child 0 {LI} of child 0 {UL} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-div-026-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-div-026-expected.png deleted file mode 100644 index 0be2cef..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-div-026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-div-026-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-div-026-expected.txt deleted file mode 100644 index 80e17d7..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-div-026-expected.txt +++ /dev/null
@@ -1,50 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x206 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x108 - LayoutText {#text} at (0,0) size 66x26 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 716x53 - text run at (0,27) width 716: "Inserting blocks for paragraphs should do a better job of finding a block to" - text run at (0,54) width 114: "insert after. " - LayoutInline {A} at (0,0) size 258x26 [color=#0000EE] - LayoutText {#text} at (113,54) size 258x26 - text run at (113,54) width 258: "<rdar://problem/3996605>" - LayoutText {#text} at (370,54) size 726x53 - text run at (370,54) width 356: " Insert paragraph command puts new" - text run at (0,81) width 547: "block in wrong place, creating difficult-to-handle HTML" - LayoutBlockFlow {DIV} at (14,138) size 756x54 - LayoutText {#text} at (0,0) size 190x26 - text run at (0,0) width 190: "Expected Results: " - LayoutBR {BR} at (189,21) size 1x0 - LayoutText {#text} at (0,27) size 438x26 - text run at (0,27) width 438: "Should see this content in the red box below: " - LayoutInline {B} at (0,0) size 21x26 - LayoutText {#text} at (437,27) size 21x26 - text run at (437,27) width 21: "fo" - LayoutText {#text} at (457,27) size 13x26 - text run at (457,27) width 13: "x" - LayoutBlockFlow {DIV} at (0,230) size 784x31 - LayoutBlockFlow {DIV} at (0,0) size 784x31 [border: (2px solid #FF0000)] - LayoutInline {B} at (0,0) size 20x26 - LayoutText {#text} at (2,2) size 20x26 - text run at (2,2) width 20: "fo" - LayoutText {#text} at (21,2) size 13x26 - text run at (21,2) width 13: "x" -caret: position 3 of child 0 {#text} of child 0 {B} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-paragraph-04-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-paragraph-04-expected.png deleted file mode 100644 index 59bac532..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-paragraph-04-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-paragraph-04-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-paragraph-04-expected.txt deleted file mode 100644 index 22d5ae2..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/insert-paragraph-04-expected.txt +++ /dev/null
@@ -1,37 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x54 - LayoutText {#text} at (0,0) size 763x35 - text run at (0,0) width 413: "This tests inserting a paragraph separator after a horizontal rule. " - text run at (412,0) width 351: "You should see 'foo', empty paragraph, horizontal rule," - text run at (0,18) width 372: "'bar', and the caret should be just after the horizontal rule. " - LayoutInline {B} at (0,0) size 776x35 - LayoutText {#text} at (371,18) size 776x35 - text run at (371,18) width 171: "This demonstrates 8345. " - text run at (541,18) width 235: "The caret after a horizontal rule is" - text run at (0,36) width 435: "drawn in the same location as the caret before a horizontal rule." - LayoutBlockFlow (anonymous) at (0,70) size 784x0 - LayoutInline {B} at (0,0) size 0x0 - LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow (anonymous) at (0,70) size 784x72 - LayoutBlockFlow {DIV} at (0,0) size 784x72 - LayoutBlockFlow (anonymous) at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 22x17 - text run at (0,0) width 22: "foo" - LayoutBlockFlow {HR} at (0,26) size 784x2 [border: (1px inset #EEEEEE)] - LayoutBlockFlow (anonymous) at (0,36) size 784x36 - LayoutBR {BR} at (0,0) size 0x17 - LayoutText {#text} at (0,18) size 24x17 - text run at (0,18) width 24: "bar" - LayoutBlockFlow (anonymous) at (0,142) size 784x0 - LayoutInline {B} at (0,0) size 0x0 -caret: position 0 of child 2 {BR} of child 1 {DIV} of child 1 {B} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-001-expected.png deleted file mode 100644 index 78599ee..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-001-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-001-expected.txt deleted file mode 100644 index 44f8c01..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-001-expected.txt +++ /dev/null
@@ -1,50 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x287 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x81 - LayoutText {#text} at (0,0) size 66x26 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 162x26 - text run at (0,27) width 162: "Fix for this bug: " - LayoutInline {A} at (0,0) size 257x26 [color=#0000EE] - LayoutText {#text} at (161,27) size 257x26 - text run at (161,27) width 257: "<rdar://problem/4045521>" - LayoutText {#text} at (417,27) size 726x53 - text run at (417,27) width 309: " Hitting return key with full line" - text run at (0,54) width 422: "selected does not add blank line as it should" - LayoutBlockFlow {DIV} at (14,111) size 756x162 - LayoutBlockFlow (anonymous) at (0,0) size 756x81 - LayoutText {#text} at (0,0) size 190x26 - text run at (0,0) width 190: "Expected Results: " - LayoutBR {BR} at (189,21) size 1x0 - LayoutText {#text} at (0,27) size 704x53 - text run at (0,27) width 704: "Should see this content in the red box below (note that the insertion point" - text run at (0,54) width 660: "should be at the start of the third line, immediately preceding \"baz\"):" - LayoutBlockFlow {DIV} at (0,81) size 756x27 - LayoutText {#text} at (0,0) size 32x26 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (0,108) size 756x27 - LayoutBR {BR} at (0,0) size 0x26 - LayoutBlockFlow {DIV} at (0,135) size 756x27 - LayoutText {#text} at (0,0) size 34x26 - text run at (0,0) width 34: "baz" - LayoutBlockFlow {DIV} at (0,311) size 784x85 - LayoutBlockFlow {DIV} at (0,0) size 784x85 [border: (2px solid #FF0000)] - LayoutBlockFlow {DIV} at (2,2) size 780x27 - LayoutText {#text} at (0,0) size 32x26 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (2,29) size 780x27 - LayoutBR {BR} at (0,0) size 0x26 - LayoutBlockFlow {DIV} at (2,56) size 780x27 - LayoutText {#text} at (0,0) size 34x26 - text run at (0,0) width 34: "baz" -caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-002-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-002-expected.png deleted file mode 100644 index b7d1d2a..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-002-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-002-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-002-expected.txt deleted file mode 100644 index ed693e8..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/inserting/return-key-with-selection-002-expected.txt +++ /dev/null
@@ -1,52 +0,0 @@ -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {DIV} at (0,0) size 784x314 [border: (2px solid #0000FF)] - LayoutBlockFlow {DIV} at (14,14) size 756x108 - LayoutText {#text} at (0,0) size 66x26 - text run at (0,0) width 66: "Tests: " - LayoutBR {BR} at (0,0) size 0x0 - LayoutText {#text} at (0,27) size 608x26 - text run at (0,27) width 608: "A scenario I thought of based on my experiences with this bug:" - LayoutInline {A} at (0,0) size 257x26 [color=#0000EE] - LayoutText {#text} at (0,54) size 257x26 - text run at (0,54) width 257: "<rdar://problem/4045521>" - LayoutText {#text} at (256,54) size 735x53 - text run at (256,54) width 479: " Hitting return key with full line selected does not" - text run at (0,81) width 252: "add blank line as it should" - LayoutBlockFlow {DIV} at (14,138) size 756x162 - LayoutBlockFlow (anonymous) at (0,0) size 756x81 - LayoutText {#text} at (0,0) size 190x26 - text run at (0,0) width 190: "Expected Results: " - LayoutBR {BR} at (189,21) size 1x0 - LayoutText {#text} at (0,27) size 704x53 - text run at (0,27) width 704: "Should see this content in the red box below (note that the insertion point" - text run at (0,54) width 660: "should be at the start of the third line, immediately preceding \"baz\"):" - LayoutBlockFlow {DIV} at (0,81) size 756x27 - LayoutText {#text} at (0,0) size 32x26 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (0,108) size 756x27 - LayoutBR {BR} at (0,0) size 0x26 - LayoutBlockFlow {DIV} at (0,135) size 756x27 - LayoutText {#text} at (0,0) size 34x26 - text run at (0,0) width 34: "baz" - LayoutBlockFlow {DIV} at (0,338) size 784x85 - LayoutBlockFlow {DIV} at (0,0) size 784x85 [border: (2px solid #FF0000)] - LayoutBlockFlow {DIV} at (2,2) size 780x27 - LayoutText {#text} at (0,0) size 32x26 - text run at (0,0) width 32: "foo" - LayoutBlockFlow {DIV} at (2,29) size 780x27 - LayoutBR {BR} at (0,0) size 0x26 - LayoutBlockFlow {DIV} at (2,56) size 780x27 - LayoutText {#text} at (0,0) size 34x26 - text run at (0,0) width 34: "baz" -caret: position 0 of child 0 {#text} of child 3 {DIV} of child 1 {DIV} of child 3 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/border-radius-split-background-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/border-radius-split-background-expected.png index 5b895fe..5ac01f3 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/border-radius-split-background-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/border-radius-split-background-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/border-radius-split-background-image-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/border-radius-split-background-image-expected.png index b8c8f7d4..e64ac73 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/border-radius-split-background-image-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/border-radius-split-background-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-styles-split-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-styles-split-expected.png index fc12fbb..34a8820f 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-styles-split-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-styles-split-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/border-styles-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/border-styles-vertical-lr-expected.png index 48a0713..1eecb59e 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/border-styles-vertical-lr-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/border-styles-vertical-lr-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/border-styles-vertical-rl-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/border-styles-vertical-rl-expected.png index 3998f84..1ad470d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/border-styles-vertical-rl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/writing-mode/border-styles-vertical-rl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png index f1400f19..5198e53 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/media/video-zoom-controls-expected.png b/third_party/WebKit/LayoutTests/platform/win/media/video-zoom-controls-expected.png index 8a9f151..fbb39e6 100644 --- a/third_party/WebKit/LayoutTests/platform/win/media/video-zoom-controls-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/media/video-zoom-controls-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/svg-fonts-in-html-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/svg-fonts-in-html-expected.png index 6b8d5908..c094bb0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/svg-fonts-in-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/svg-fonts-in-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-background-images-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-background-images-expected.png index ee98c43..34c7554b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-background-images-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-background-images-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/svg/custom/svg-fonts-in-html-expected.png b/third_party/WebKit/LayoutTests/platform/win7/svg/custom/svg-fonts-in-html-expected.png index 194c59d..3123f8f 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/svg/custom/svg-fonts-in-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/svg/custom/svg-fonts-in-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/svg-non-integer-scaled-image-expected.png b/third_party/WebKit/LayoutTests/svg/as-image/svg-non-integer-scaled-image-expected.png index f2ebc81..d986bc7 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/svg-non-integer-scaled-image-expected.png +++ b/third_party/WebKit/LayoutTests/svg/as-image/svg-non-integer-scaled-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size-expected.html b/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size-expected.html new file mode 100644 index 0000000..c9b7b6e --- /dev/null +++ b/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size-expected.html
@@ -0,0 +1,3 @@ +<!DOCTYPE html> +<title>Canvas.drawImage with SVG image</title> +<svg xmlns='http://www.w3.org/2000/svg' width='200' viewBox='0 0 1 1'><rect width='1' height='1' fill='green'/></svg>
diff --git a/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size.html b/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size.html new file mode 100644 index 0000000..917e029e8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size.html
@@ -0,0 +1,19 @@ +<!DOCTYPE html> +<title>Canvas.drawImage with SVG image</title> +<canvas width="300" height="300"></canvas> +<script> + function createSVGImage() { + var image = document.createElement('img'); + image.style.width = "5px"; + image.src = "data:image/svg+xml," + + "<svg xmlns='http://www.w3.org/2000/svg' width='200' viewBox='0 0 1 1'>" + + "<rect width='1' height='1' fill='green'/></svg>"; + return image; + } + document.body.appendChild(createSVGImage()); + document.body.offsetTop; // Force layout + var canvas = document.querySelector('canvas'); + var ctx = canvas.getContext("2d"); + ctx.drawImage(document.querySelector('img'), 0, 0); + document.body.removeChild(document.querySelector('img')); +</script>
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_callback_interface.py b/third_party/WebKit/Source/bindings/scripts/v8_callback_interface.py index 8ceeb9a..a3abad0 100644 --- a/third_party/WebKit/Source/bindings/scripts/v8_callback_interface.py +++ b/third_party/WebKit/Source/bindings/scripts/v8_callback_interface.py
@@ -63,7 +63,8 @@ return 'void' # Callbacks use raw pointers, so raw_type=True raw_cpp_type = idl_type.cpp_type_args(raw_type=True) - if raw_cpp_type.startswith(('Vector', 'HeapVector', 'WillBeHeapVector')): + # Pass containers and dictionaries to callback method by const reference rather than by value + if raw_cpp_type.startswith(('Vector', 'HeapVector', 'WillBeHeapVector')) or idl_type.is_dictionary: return 'const %s&' % raw_cpp_type return raw_cpp_type
diff --git a/third_party/WebKit/Source/core/animation/IntegerSVGInterpolation.h b/third_party/WebKit/Source/core/animation/IntegerSVGInterpolation.h deleted file mode 100644 index be3e1d5..0000000 --- a/third_party/WebKit/Source/core/animation/IntegerSVGInterpolation.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef IntegerSVGInterpolation_h -#define IntegerSVGInterpolation_h - -#include "core/animation/SVGInterpolation.h" -#include "core/svg/SVGInteger.h" - -namespace blink { - -class IntegerSVGInterpolation : public SVGInterpolation { -public: - static PassRefPtr<IntegerSVGInterpolation> create(SVGPropertyBase* start, SVGPropertyBase* end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute) - { - return adoptRef(new IntegerSVGInterpolation(toInterpolableValue(start), toInterpolableValue(end), attribute)); - } - - PassRefPtrWillBeRawPtr<SVGPropertyBase> interpolatedValue(SVGElement&) const final - { - return fromInterpolableValue(*m_cachedValue); - } - -private: - IntegerSVGInterpolation(PassOwnPtr<InterpolableValue> start, PassOwnPtr<InterpolableValue> end, PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> attribute) - : SVGInterpolation(start, end, attribute) - { - } - - static PassOwnPtr<InterpolableValue> toInterpolableValue(SVGPropertyBase* value) - { - return InterpolableNumber::create(toSVGInteger(value)->value()); - } - - static PassRefPtrWillBeRawPtr<SVGInteger> fromInterpolableValue(const InterpolableValue& value) - { - return SVGInteger::create(clampTo<int>(roundf(toInterpolableNumber(value).value()))); - } -}; - -} - -#endif // IntegerSVGInterpolation_h
diff --git a/third_party/WebKit/Source/core/animation/SVGIntegerInterpolationType.cpp b/third_party/WebKit/Source/core/animation/SVGIntegerInterpolationType.cpp new file mode 100644 index 0000000..04aeb89c --- /dev/null +++ b/third_party/WebKit/Source/core/animation/SVGIntegerInterpolationType.cpp
@@ -0,0 +1,31 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "config.h" +#include "core/animation/SVGIntegerInterpolationType.h" + +#include "core/animation/InterpolationEnvironment.h" +#include "core/svg/SVGInteger.h" + +namespace blink { + +PassOwnPtr<InterpolationValue> SVGIntegerInterpolationType::maybeConvertNeutral(const UnderlyingValue&, ConversionCheckers&) const +{ + return InterpolationValue::create(*this, InterpolableNumber::create(0)); +} + +PassOwnPtr<InterpolationValue> SVGIntegerInterpolationType::maybeConvertSVGValue(const SVGPropertyBase& svgValue) const +{ + if (svgValue.type() != AnimatedInteger) + return nullptr; + return InterpolationValue::create(*this, InterpolableNumber::create(toSVGInteger(svgValue).value())); +} + +PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGIntegerInterpolationType::appliedSVGValue(const InterpolableValue& interpolableValue, const NonInterpolableValue*) const +{ + double value = toInterpolableNumber(interpolableValue).value(); + return SVGInteger::create(round(value)); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/SVGIntegerInterpolationType.h b/third_party/WebKit/Source/core/animation/SVGIntegerInterpolationType.h new file mode 100644 index 0000000..9ac6cbfe --- /dev/null +++ b/third_party/WebKit/Source/core/animation/SVGIntegerInterpolationType.h
@@ -0,0 +1,26 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SVGIntegerInterpolationType_h +#define SVGIntegerInterpolationType_h + +#include "core/animation/SVGInterpolationType.h" + +namespace blink { + +class SVGIntegerInterpolationType : public SVGInterpolationType { +public: + SVGIntegerInterpolationType(const QualifiedName& attribute) + : SVGInterpolationType(attribute) + { } + +private: + PassOwnPtr<InterpolationValue> maybeConvertNeutral(const UnderlyingValue&, ConversionCheckers&) const final; + PassOwnPtr<InterpolationValue> maybeConvertSVGValue(const SVGPropertyBase& svgValue) const final; + PassRefPtrWillBeRawPtr<SVGPropertyBase> appliedSVGValue(const InterpolableValue&, const NonInterpolableValue*) const final; +}; + +} // namespace blink + +#endif // SVGIntegerInterpolationType_h
diff --git a/third_party/WebKit/Source/core/animation/StringKeyframe.cpp b/third_party/WebKit/Source/core/animation/StringKeyframe.cpp index 14b2737..200d690a 100644 --- a/third_party/WebKit/Source/core/animation/StringKeyframe.cpp +++ b/third_party/WebKit/Source/core/animation/StringKeyframe.cpp
@@ -22,7 +22,6 @@ #include "core/animation/FilterStyleInterpolation.h" #include "core/animation/ImageSliceStyleInterpolation.h" #include "core/animation/IntegerOptionalIntegerSVGInterpolation.h" -#include "core/animation/IntegerSVGInterpolation.h" #include "core/animation/InterpolationType.h" #include "core/animation/InvalidatableInterpolation.h" #include "core/animation/LegacyStyleInterpolation.h" @@ -37,6 +36,7 @@ #include "core/animation/PathSVGInterpolation.h" #include "core/animation/RectSVGInterpolation.h" #include "core/animation/SVGAngleInterpolationType.h" +#include "core/animation/SVGIntegerInterpolationType.h" #include "core/animation/SVGNumberInterpolationType.h" #include "core/animation/SVGPointListInterpolationType.h" #include "core/animation/SVGStrokeDasharrayStyleInterpolation.h" @@ -268,6 +268,10 @@ const QualifiedName& attribute = property.svgAttribute(); if (attribute == SVGNames::orientAttr) { applicableTypes->append(adoptPtr(new SVGAngleInterpolationType(attribute))); + } else if (attribute == SVGNames::numOctavesAttr + || attribute == SVGNames::targetXAttr + || attribute == SVGNames::targetYAttr) { + applicableTypes->append(adoptPtr(new SVGIntegerInterpolationType(attribute))); } else if (attribute == SVGNames::amplitudeAttr || attribute == SVGNames::azimuthAttr || attribute == SVGNames::biasAttr @@ -555,8 +559,6 @@ RefPtr<Interpolation> interpolation = nullptr; ASSERT(fromValue->type() == toValue->type()); switch (fromValue->type()) { - case AnimatedInteger: - return IntegerSVGInterpolation::create(fromValue, toValue, attribute); case AnimatedIntegerOptionalInteger: { int min = &attribute->attributeName() == &SVGNames::orderAttr ? 1 : 0; return IntegerOptionalIntegerSVGInterpolation::create(fromValue, toValue, attribute, min); @@ -582,6 +584,7 @@ // Handled by SVGInterpolationTypes. case AnimatedAngle: + case AnimatedInteger: case AnimatedNumber: case AnimatedPoints: ASSERT_NOT_REACHED();
diff --git a/third_party/WebKit/Source/core/clipboard/DataTransfer.cpp b/third_party/WebKit/Source/core/clipboard/DataTransfer.cpp index 3a04c4f..687b1a7 100644 --- a/third_party/WebKit/Source/core/clipboard/DataTransfer.cpp +++ b/third_party/WebKit/Source/core/clipboard/DataTransfer.cpp
@@ -281,10 +281,10 @@ { // Shove image data into a DataObject for use as a file ImageResource* cachedImage = getImageResource(element); - if (!cachedImage || !cachedImage->imageForLayoutObject(element->layoutObject()) || !cachedImage->isLoaded()) + if (!cachedImage || !cachedImage->image() || !cachedImage->isLoaded()) return; - SharedBuffer* imageBuffer = cachedImage->imageForLayoutObject(element->layoutObject())->data(); + SharedBuffer* imageBuffer = cachedImage->image()->data(); if (!imageBuffer || !imageBuffer->size()) return;
diff --git a/third_party/WebKit/Source/core/core.gypi b/third_party/WebKit/Source/core/core.gypi index d64b19f..7ed76617e 100644 --- a/third_party/WebKit/Source/core/core.gypi +++ b/third_party/WebKit/Source/core/core.gypi
@@ -912,6 +912,8 @@ 'animation/RectSVGInterpolation.h', 'animation/SVGAngleInterpolationType.cpp', 'animation/SVGAngleInterpolationType.h', + 'animation/SVGIntegerInterpolationType.cpp', + 'animation/SVGIntegerInterpolationType.h', 'animation/SVGInterpolation.cpp', 'animation/SVGInterpolation.h', 'animation/SVGInterpolationType.cpp',
diff --git a/third_party/WebKit/Source/core/css/CSSCrossfadeValue.cpp b/third_party/WebKit/Source/core/css/CSSCrossfadeValue.cpp index cbfeadaa..d4875fa 100644 --- a/third_party/WebKit/Source/core/css/CSSCrossfadeValue.cpp +++ b/third_party/WebKit/Source/core/css/CSSCrossfadeValue.cpp
@@ -93,7 +93,7 @@ if (!cachedImage || !cachedImage->canRender(*layoutObject, 1)) return nullptr; - return cachedImage->imageForLayoutObject(layoutObject); + return cachedImage->image(); } CSSCrossfadeValue::~CSSCrossfadeValue()
diff --git a/third_party/WebKit/Source/core/css/RuleFeature.cpp b/third_party/WebKit/Source/core/css/RuleFeature.cpp index 3c5c6b7..75a438c 100644 --- a/third_party/WebKit/Source/core/css/RuleFeature.cpp +++ b/third_party/WebKit/Source/core/css/RuleFeature.cpp
@@ -293,6 +293,8 @@ case CSSSelector::PseudoActive: case CSSSelector::PseudoChecked: case CSSSelector::PseudoEnabled: + // TODO(rune@opera.com): crbug.com/557683 :default is currently not updated dynamically. + // case CSSSelector::Default: case CSSSelector::PseudoDisabled: case CSSSelector::PseudoOptional: case CSSSelector::PseudoPlaceholderShown: @@ -303,6 +305,7 @@ case CSSSelector::PseudoInvalid: case CSSSelector::PseudoIndeterminate: case CSSSelector::PseudoTarget: + case CSSSelector::PseudoUnresolved: return &ensurePseudoInvalidationSet(selector.pseudoType(), type); default: break;
diff --git a/third_party/WebKit/Source/core/dom/DOMException.h b/third_party/WebKit/Source/core/dom/DOMException.h index c04dce0..5ea667f 100644 --- a/third_party/WebKit/Source/core/dom/DOMException.h +++ b/third_party/WebKit/Source/core/dom/DOMException.h
@@ -33,6 +33,7 @@ #include "core/CoreExport.h" #include "platform/heap/Handle.h" #include "wtf/Forward.h" +#include "wtf/text/WTFString.h" namespace blink {
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp index 6522841..753a0cdc 100644 --- a/third_party/WebKit/Source/core/dom/Document.cpp +++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -3548,6 +3548,8 @@ m_focusedElement = newFocusedElement; m_focusedElement->setFocus(true); + cancelFocusAppearanceUpdate(); + m_focusedElement->updateFocusAppearance(params.selectionBehavior); // Dispatch the focus event and let the node do any other focus related activities (important for text fields) // If page lost focus, event will be dispatched on page focus, don't duplicate
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp index 2351061..cdd3038 100644 --- a/third_party/WebKit/Source/core/dom/Element.cpp +++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -2379,15 +2379,7 @@ if (!document().page()->focusController().setFocusedElement(this, document().frame(), params)) return; - // Setting the focused node above might have invalidated the layout due to scripts. - document().updateLayoutIgnorePendingStylesheets(); - if (!isFocusable()) - return; - - cancelFocusAppearanceUpdate(); - updateFocusAppearance(params.selectionBehavior); - - if (UserGestureIndicator::processedUserGestureSinceLoad()) { + if (document().focusedElement() == this && UserGestureIndicator::processedUserGestureSinceLoad()) { // Bring up the keyboard in the context of anything triggered by a user // gesture. Since tracking that across arbitrary boundaries (eg. // animations) is difficult, for now we match IE's heuristic and bring @@ -2396,8 +2388,10 @@ } } -void Element::updateFocusAppearance(SelectionBehaviorOnFocus) +void Element::updateFocusAppearance(SelectionBehaviorOnFocus selectionBehavior) { + if (selectionBehavior == SelectionBehaviorOnFocus::None) + return; if (isRootEditableElement()) { // Taking the ownership since setSelection() may release the last reference to |frame|. RefPtrWillBeRawPtr<LocalFrame> frame(document().frame());
diff --git a/third_party/WebKit/Source/core/dom/MutationObserverInterestGroup.cpp b/third_party/WebKit/Source/core/dom/MutationObserverInterestGroup.cpp index 689d0f4..26e0a7e0 100644 --- a/third_party/WebKit/Source/core/dom/MutationObserverInterestGroup.cpp +++ b/third_party/WebKit/Source/core/dom/MutationObserverInterestGroup.cpp
@@ -39,7 +39,7 @@ PassOwnPtrWillBeRawPtr<MutationObserverInterestGroup> MutationObserverInterestGroup::createIfNeeded(Node& target, MutationObserver::MutationType type, MutationRecordDeliveryOptions oldValueFlag, const QualifiedName* attributeName) { ASSERT((type == MutationObserver::Attributes && attributeName) || !attributeName); - WillBeHeapHashMap<RawPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions> observers; + WillBeHeapHashMap<RefPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions> observers; target.getRegisteredMutationObserversOfType(observers, type, attributeName); if (observers.isEmpty()) return nullptr; @@ -47,7 +47,7 @@ return adoptPtrWillBeNoop(new MutationObserverInterestGroup(observers, oldValueFlag)); } -MutationObserverInterestGroup::MutationObserverInterestGroup(WillBeHeapHashMap<RawPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>& observers, MutationRecordDeliveryOptions oldValueFlag) +MutationObserverInterestGroup::MutationObserverInterestGroup(WillBeHeapHashMap<RefPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>& observers, MutationRecordDeliveryOptions oldValueFlag) : m_oldValueFlag(oldValueFlag) { ASSERT(!observers.isEmpty()); @@ -68,7 +68,7 @@ RefPtrWillBeRawPtr<MutationRecord> mutation = prpMutation; RefPtrWillBeRawPtr<MutationRecord> mutationWithNullOldValue = nullptr; for (auto& iter : m_observers) { - MutationObserver* observer = iter.key; + MutationObserver* observer = iter.key.get(); if (hasOldValue(iter.value)) { observer->enqueueMutationRecord(mutation); continue;
diff --git a/third_party/WebKit/Source/core/dom/MutationObserverInterestGroup.h b/third_party/WebKit/Source/core/dom/MutationObserverInterestGroup.h index 7182c6c..1759484 100644 --- a/third_party/WebKit/Source/core/dom/MutationObserverInterestGroup.h +++ b/third_party/WebKit/Source/core/dom/MutationObserverInterestGroup.h
@@ -76,11 +76,11 @@ private: static PassOwnPtrWillBeRawPtr<MutationObserverInterestGroup> createIfNeeded(Node& target, MutationObserver::MutationType, MutationRecordDeliveryOptions oldValueFlag, const QualifiedName* attributeName = 0); - MutationObserverInterestGroup(WillBeHeapHashMap<RawPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>& observers, MutationRecordDeliveryOptions oldValueFlag); + MutationObserverInterestGroup(WillBeHeapHashMap<RefPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>& observers, MutationRecordDeliveryOptions oldValueFlag); bool hasOldValue(MutationRecordDeliveryOptions options) { return options & m_oldValueFlag; } - WillBeHeapHashMap<RawPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions> m_observers; + WillBeHeapHashMap<RefPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions> m_observers; MutationRecordDeliveryOptions m_oldValueFlag; };
diff --git a/third_party/WebKit/Source/core/dom/Node.cpp b/third_party/WebKit/Source/core/dom/Node.cpp index 733b797..adf0c2f 100644 --- a/third_party/WebKit/Source/core/dom/Node.cpp +++ b/third_party/WebKit/Source/core/dom/Node.cpp
@@ -29,6 +29,7 @@ #include "bindings/core/v8/ExceptionState.h" #include "bindings/core/v8/V8DOMWrapper.h" #include "core/HTMLNames.h" +#include "core/css/CSSSelector.h" #include "core/css/resolver/StyleResolver.h" #include "core/dom/AXObjectCache.h" #include "core/dom/Attr.h" @@ -1856,7 +1857,7 @@ } template<typename Registry> -static inline void collectMatchingObserversForMutation(WillBeHeapHashMap<RawPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>& observers, Registry* registry, Node& target, MutationObserver::MutationType type, const QualifiedName* attributeName) +static inline void collectMatchingObserversForMutation(WillBeHeapHashMap<RefPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>& observers, Registry* registry, Node& target, MutationObserver::MutationType type, const QualifiedName* attributeName) { if (!registry) return; @@ -1864,14 +1865,14 @@ for (const auto& registration : *registry) { if (registration->shouldReceiveMutationFrom(target, type, attributeName)) { MutationRecordDeliveryOptions deliveryOptions = registration->deliveryOptions(); - WillBeHeapHashMap<RawPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>::AddResult result = observers.add(®istration->observer(), deliveryOptions); + WillBeHeapHashMap<RefPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>::AddResult result = observers.add(®istration->observer(), deliveryOptions); if (!result.isNewEntry) result.storedValue->value |= deliveryOptions; } } } -void Node::getRegisteredMutationObserversOfType(WillBeHeapHashMap<RawPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>& observers, MutationObserver::MutationType type, const QualifiedName* attributeName) +void Node::getRegisteredMutationObserversOfType(WillBeHeapHashMap<RefPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>& observers, MutationObserver::MutationType type, const QualifiedName* attributeName) { ASSERT((type == MutationObserver::Attributes && attributeName) || !attributeName); collectMatchingObserversForMutation(observers, mutationObserverRegistry(), *this, type, attributeName); @@ -2282,7 +2283,7 @@ setFlag(newState == Upgraded, CustomElementUpgradedFlag); if (oldState == NotCustomElement || newState == Upgraded) - setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Unresolved)); // :unresolved has changed + toElement(this)->pseudoStateChanged(CSSSelector::PseudoUnresolved); } DEFINE_TRACE(Node)
diff --git a/third_party/WebKit/Source/core/dom/Node.h b/third_party/WebKit/Source/core/dom/Node.h index 3d58ac8..e7ab471e 100644 --- a/third_party/WebKit/Source/core/dom/Node.h +++ b/third_party/WebKit/Source/core/dom/Node.h
@@ -645,7 +645,7 @@ EventTargetData* eventTargetData() override; EventTargetData& ensureEventTargetData() override; - void getRegisteredMutationObserversOfType(WillBeHeapHashMap<RawPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>&, MutationObserver::MutationType, const QualifiedName* attributeName); + void getRegisteredMutationObserversOfType(WillBeHeapHashMap<RefPtrWillBeMember<MutationObserver>, MutationRecordDeliveryOptions>&, MutationObserver::MutationType, const QualifiedName* attributeName); void registerMutationObserver(MutationObserver&, MutationObserverOptions, const HashSet<AtomicString>& attributeFilter); void unregisterMutationObserver(MutationObserverRegistration*); void registerTransientMutationObserver(MutationObserverRegistration*);
diff --git a/third_party/WebKit/Source/core/editing/Editor.cpp b/third_party/WebKit/Source/core/editing/Editor.cpp index 7a4237d..efec60f7 100644 --- a/third_party/WebKit/Source/core/editing/Editor.cpp +++ b/third_party/WebKit/Source/core/editing/Editor.cpp
@@ -435,7 +435,7 @@ ImageResource* cachedImage = layoutImage->cachedImage(); if (!cachedImage || cachedImage->errorOccurred()) return nullptr; - return cachedImage->imageForLayoutObject(layoutImage); + return cachedImage->image(); } return nullptr;
diff --git a/third_party/WebKit/Source/core/fetch/DEPS b/third_party/WebKit/Source/core/fetch/DEPS index 8153c5a82..9853d822 100644 --- a/third_party/WebKit/Source/core/fetch/DEPS +++ b/third_party/WebKit/Source/core/fetch/DEPS
@@ -8,10 +8,8 @@ # Do not add to this list. "!core/css/StyleSheetContents.h", "!core/dom/XMLDocument.h", - "!core/html/HTMLImageElement.h", "!core/html/parser/TextResourceDecoder.h", "!core/inspector/InspectorInstrumentation.h", "!core/layout/LayoutObject.h", "!core/svg/graphics/SVGImage.h", - "!core/svg/graphics/SVGImageForContainer.h", ]
diff --git a/third_party/WebKit/Source/core/fetch/ImageResource.cpp b/third_party/WebKit/Source/core/fetch/ImageResource.cpp index d7a893a..54b5b9b 100644 --- a/third_party/WebKit/Source/core/fetch/ImageResource.cpp +++ b/third_party/WebKit/Source/core/fetch/ImageResource.cpp
@@ -30,10 +30,8 @@ #include "core/fetch/ResourceClientWalker.h" #include "core/fetch/ResourceFetcher.h" #include "core/fetch/ResourceLoader.h" -#include "core/html/HTMLImageElement.h" #include "core/layout/LayoutObject.h" #include "core/svg/graphics/SVGImage.h" -#include "core/svg/graphics/SVGImageForContainer.h" #include "platform/Logging.h" #include "platform/RuntimeEnabledFeatures.h" #include "platform/SharedBuffer.h" @@ -127,8 +125,6 @@ { ASSERT(c); ASSERT(c->resourceClientType() == ImageResourceClient::expectedType()); - if (m_imageForContainerMap) - m_imageForContainerMap->remove(static_cast<ImageResourceClient*>(c)); Resource::didRemoveClient(c); } @@ -195,47 +191,6 @@ return blink::Image::nullImage(); } -blink::Image* ImageResource::imageForLayoutObject(const LayoutObject* layoutObject) -{ - ASSERT(!isPurgeable()); - - if (errorOccurred()) { - // Returning the 1x broken image is non-ideal, but we cannot reliably access the appropriate - // deviceScaleFactor from here. It is critical that callers use ImageResource::brokenImage() - // when they need the real, deviceScaleFactor-appropriate broken image icon. - return brokenImage(1).first; - } - - if (!m_image) - return blink::Image::nullImage(); - - if (m_image->isSVGImage()) { - blink::Image* image = svgImageForLayoutObject(layoutObject); - if (image != blink::Image::nullImage()) - return image; - } - - return m_image.get(); -} - -void ImageResource::setContainerSizeForLayoutObject(const ImageResourceClient* layoutObject, const IntSize& containerSize, float containerZoom) -{ - if (containerSize.isEmpty()) - return; - ASSERT(layoutObject); - ASSERT(containerZoom); - if (!m_image) - return; - if (!m_image->isSVGImage()) { - m_image->setContainerSize(containerSize); - return; - } - - FloatSize containerSizeWithoutZoom(containerSize); - containerSizeWithoutZoom.scale(1 / containerZoom); - m_imageForContainerMap->set(layoutObject, SVGImageForContainer::create(toSVGImage(m_image.get()), containerSizeWithoutZoom, containerZoom)); -} - bool ImageResource::usesImageContainerSize() const { if (m_image) @@ -271,8 +226,6 @@ if (m_image->isBitmapImage() && (layoutObject && layoutObject->shouldRespectImageOrientation() == RespectImageOrientation)) imageSize = LayoutSize(toBitmapImage(m_image.get())->sizeRespectingOrientation()); - else if (m_image->isSVGImage() && sizeType == NormalSize) - imageSize = LayoutSize(svgImageSizeForLayoutObject(layoutObject)); else imageSize = LayoutSize(m_image->size()); @@ -330,7 +283,6 @@ if (m_response.mimeType() == "image/svg+xml") { m_image = SVGImage::create(this); - m_imageForContainerMap = adoptPtr(new ImageForContainerMap); } else { m_image = BitmapImage::create(this); } @@ -496,7 +448,7 @@ bool ImageResource::currentFrameKnownToBeOpaque(const LayoutObject* layoutObject) { - blink::Image* image = imageForLayoutObject(layoutObject); + blink::Image* image = this->image(); if (image->isBitmapImage()) { TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "PaintImage", "data", InspectorPaintImageEvent::data(layoutObject, *this)); // BitmapImage::currentFrameKnownToBeOpaque() conservatively returns true for uncached @@ -517,45 +469,6 @@ return !securityOrigin->taintsCanvas(response().url()); } -IntSize ImageResource::svgImageSizeForLayoutObject(const LayoutObject* layoutObject) const -{ - IntSize imageSize = m_image->size(); - if (!layoutObject) - return imageSize; - - ImageForContainerMap::const_iterator it = m_imageForContainerMap->find(layoutObject); - if (it == m_imageForContainerMap->end()) - return imageSize; - - RefPtr<SVGImageForContainer> imageForContainer = it->value; - ASSERT(!imageForContainer->size().isEmpty()); - return imageForContainer->size(); -} - -// FIXME: This doesn't take into account the animation timeline so animations will not -// restart on page load, nor will two animations in different pages have different timelines. -Image* ImageResource::svgImageForLayoutObject(const LayoutObject* layoutObject) -{ - if (!layoutObject) - return Image::nullImage(); - - ImageForContainerMap::iterator it = m_imageForContainerMap->find(layoutObject); - if (it == m_imageForContainerMap->end()) - return Image::nullImage(); - - RefPtr<SVGImageForContainer> imageForContainer = it->value; - ASSERT(!imageForContainer->size().isEmpty()); - - Node* node = layoutObject->node(); - if (node && isHTMLImageElement(node)) { - const AtomicString& urlString = toHTMLImageElement(node)->imageSourceURL(); - KURL url = node->document().completeURL(urlString); - imageForContainer->setURL(url); - } - - return imageForContainer.get(); -} - bool ImageResource::loadingMultipartContent() const { return m_loader && m_loader->loadingMultipartContent();
diff --git a/third_party/WebKit/Source/core/fetch/ImageResource.h b/third_party/WebKit/Source/core/fetch/ImageResource.h index ca287bd..5cfe9ca 100644 --- a/third_party/WebKit/Source/core/fetch/ImageResource.h +++ b/third_party/WebKit/Source/core/fetch/ImageResource.h
@@ -41,7 +41,6 @@ class MemoryCache; class LayoutObject; class SecurityOrigin; -class SVGImageForContainer; class CORE_EXPORT ImageResource final : public Resource, public ImageObserver { friend class MemoryCache; @@ -59,7 +58,6 @@ void load(ResourceFetcher*, const ResourceLoaderOptions&) override; blink::Image* image(); // Returns the nullImage() if the image is not available yet. - blink::Image* imageForLayoutObject(const LayoutObject*); // Returns the nullImage() if the image is not available yet. bool hasImage() const { return m_image.get(); } // Side effect: ensures decoded image is in cache, therefore should only be called when about to draw the image. // FIXME: Decoding image on the main thread is expensive, so rather than forcing decode, consider returning false @@ -71,7 +69,6 @@ bool canRender(const LayoutObject& layoutObject, float multiplier) { return !errorOccurred() && !imageSizeForLayoutObject(&layoutObject, multiplier).isEmpty(); } - void setContainerSizeForLayoutObject(const ImageResourceClient*, const IntSize&, float); bool usesImageContainerSize() const; bool imageHasRelativeWidth() const; bool imageHasRelativeHeight() const; @@ -80,12 +77,11 @@ bool hasDevicePixelRatioHeaderValue() const { return m_hasDevicePixelRatioHeaderValue; } enum SizeType { - NormalSize, // Report the size of the image associated with a certain layoutObject - IntrinsicSize, // Report the intrinsic size, i.e. ignore whatever has been set extrinsically. + IntrinsicSize, // Report the intrinsic size. IntrinsicCorrectedToDPR, // Report the intrinsic size corrected to account for image density. }; // This method takes a zoom multiplier that can be used to increase the natural size of the image by the zoom. - LayoutSize imageSizeForLayoutObject(const LayoutObject*, float multiplier, SizeType = NormalSize); // returns the size of the complete image. + LayoutSize imageSizeForLayoutObject(const LayoutObject*, float multiplier, SizeType = IntrinsicSize); // returns the size of the complete image. void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio); bool isAccessAllowed(SecurityOrigin*); @@ -142,15 +138,10 @@ void clearImage(); // If not null, changeRect is the changed part of the image. void notifyObservers(const IntRect* changeRect = nullptr); - IntSize svgImageSizeForLayoutObject(const LayoutObject*) const; - blink::Image* svgImageForLayoutObject(const LayoutObject*); bool loadingMultipartContent() const; float m_devicePixelRatioHeaderValue; - typedef HashMap<const ImageResourceClient*, RefPtr<SVGImageForContainer>> ImageForContainerMap; - OwnPtr<ImageForContainerMap> m_imageForContainerMap; - RefPtr<blink::Image> m_image; bool m_hasDevicePixelRatioHeaderValue; };
diff --git a/third_party/WebKit/Source/core/frame/LocalFrame.h b/third_party/WebKit/Source/core/frame/LocalFrame.h index 03af3b91..c5eb7a7a 100644 --- a/third_party/WebKit/Source/core/frame/LocalFrame.h +++ b/third_party/WebKit/Source/core/frame/LocalFrame.h
@@ -242,8 +242,7 @@ // weak callback, the set itself is not on the heap and the // references are bare pointers (rather than WeakMembers.) // See LocalFrame::clearWeakMembers(). - GC_PLUGIN_IGNORE("553613") - HashSet<HTMLPlugInElement*> m_pluginElements; + HashSet<UntracedMember<HTMLPlugInElement>> m_pluginElements; #endif float m_pageZoomFactor;
diff --git a/third_party/WebKit/Source/core/frame/csp/CSPSource.cpp b/third_party/WebKit/Source/core/frame/csp/CSPSource.cpp index 5be05da..e2b6b18f 100644 --- a/third_party/WebKit/Source/core/frame/csp/CSPSource.cpp +++ b/third_party/WebKit/Source/core/frame/csp/CSPSource.cpp
@@ -39,6 +39,10 @@ { if (m_scheme.isEmpty()) return m_policy->protocolMatchesSelf(url); + if (equalIgnoringCase(m_scheme, "http")) + return equalIgnoringCase(url.protocol(), "http") || equalIgnoringCase(url.protocol(), "https"); + if (equalIgnoringCase(m_scheme, "ws")) + return equalIgnoringCase(url.protocol(), "ws") || equalIgnoringCase(url.protocol(), "wss"); return equalIgnoringCase(url.protocol(), m_scheme); }
diff --git a/third_party/WebKit/Source/core/frame/csp/CSPSourceListTest.cpp b/third_party/WebKit/Source/core/frame/csp/CSPSourceListTest.cpp index ba4118f..cf43e75e 100644 --- a/third_party/WebKit/Source/core/frame/csp/CSPSourceListTest.cpp +++ b/third_party/WebKit/Source/core/frame/csp/CSPSourceListTest.cpp
@@ -146,12 +146,16 @@ EXPECT_TRUE(sourceList.matches(KURL(base, "https://foo.example2.com/bar/"))); EXPECT_TRUE(sourceList.matches(KURL(base, "http://foo.test/"))); EXPECT_TRUE(sourceList.matches(KURL(base, "http://foo.bar.test/"))); + EXPECT_TRUE(sourceList.matches(KURL(base, "https://example1.com/foo/"))); + EXPECT_TRUE(sourceList.matches(KURL(base, "https://example1.com:8000/foo/"))); + EXPECT_TRUE(sourceList.matches(KURL(base, "https://example1.com:9000/foo/"))); + EXPECT_TRUE(sourceList.matches(KURL(base, "https://foo.test/"))); + EXPECT_TRUE(sourceList.matches(KURL(base, "https://foo.bar.test/"))); EXPECT_FALSE(sourceList.matches(KURL(base, "https://example1.com:8000/foo"))); EXPECT_FALSE(sourceList.matches(KURL(base, "https://example2.com:8000/bar"))); EXPECT_FALSE(sourceList.matches(KURL(base, "https://foo.example2.com:8000/bar"))); EXPECT_FALSE(sourceList.matches(KURL(base, "https://example2.foo.com/bar"))); - EXPECT_FALSE(sourceList.matches(KURL(base, "https://foo.test/"))); EXPECT_FALSE(sourceList.matches(KURL(base, "http://foo.test.bar/"))); EXPECT_FALSE(sourceList.matches(KURL(base, "https://example2.com/bar/"))); EXPECT_FALSE(sourceList.matches(KURL(base, "http://test/"))); @@ -168,9 +172,10 @@ EXPECT_TRUE(sourceList.matches(KURL(base, "http://example1.com/bar/"), ContentSecurityPolicy::DidRedirect)); EXPECT_TRUE(sourceList.matches(KURL(base, "http://example2.com/bar/"), ContentSecurityPolicy::DidRedirect)); EXPECT_TRUE(sourceList.matches(KURL(base, "http://example2.com/foo/"), ContentSecurityPolicy::DidRedirect)); + EXPECT_TRUE(sourceList.matches(KURL(base, "https://example1.com/foo/"), ContentSecurityPolicy::DidRedirect)); + EXPECT_TRUE(sourceList.matches(KURL(base, "https://example1.com/bar/"), ContentSecurityPolicy::DidRedirect)); EXPECT_FALSE(sourceList.matches(KURL(base, "http://example3.com/foo/"), ContentSecurityPolicy::DidRedirect)); - EXPECT_FALSE(sourceList.matches(KURL(base, "https://example1.com/foo/"), ContentSecurityPolicy::DidRedirect)); } } // namespace
diff --git a/third_party/WebKit/Source/core/frame/csp/CSPSourceTest.cpp b/third_party/WebKit/Source/core/frame/csp/CSPSourceTest.cpp index 11b239b..94eced9 100644 --- a/third_party/WebKit/Source/core/frame/csp/CSPSourceTest.cpp +++ b/third_party/WebKit/Source/core/frame/csp/CSPSourceTest.cpp
@@ -63,10 +63,33 @@ EXPECT_TRUE(source.matches(KURL(base, "http://example.com:8000/"), ContentSecurityPolicy::DidRedirect)); EXPECT_TRUE(source.matches(KURL(base, "http://example.com:8000/foo"), ContentSecurityPolicy::DidRedirect)); + EXPECT_TRUE(source.matches(KURL(base, "https://example.com:8000/foo"), ContentSecurityPolicy::DidRedirect)); - EXPECT_FALSE(source.matches(KURL(base, "https://example.com:8000/foo"), ContentSecurityPolicy::DidRedirect)); EXPECT_FALSE(source.matches(KURL(base, "http://not-example.com:8000/foo"), ContentSecurityPolicy::DidRedirect)); EXPECT_FALSE(source.matches(KURL(base, "http://example.com:9000/foo/"), ContentSecurityPolicy::DidNotRedirect)); } +TEST_F(CSPSourceTest, InsecureSourceMatchesSecure) +{ + KURL base; + CSPSource source(csp.get(), "http", "", 0, "/", CSPSource::NoWildcard, CSPSource::HasWildcard); + + EXPECT_TRUE(source.matches(KURL(base, "http://example.com:8000/"))); + EXPECT_TRUE(source.matches(KURL(base, "https://example.com:8000/"))); + EXPECT_TRUE(source.matches(KURL(base, "http://not-example.com:8000/"))); + EXPECT_TRUE(source.matches(KURL(base, "https://not-example.com:8000/"))); + EXPECT_FALSE(source.matches(KURL(base, "ftp://example.com:8000/"))); +} + +TEST_F(CSPSourceTest, InsecureHostMatchesSecure) +{ + KURL base; + CSPSource source(csp.get(), "http", "example.com", 0, "/", CSPSource::NoWildcard, CSPSource::HasWildcard); + + EXPECT_TRUE(source.matches(KURL(base, "http://example.com:8000/"))); + EXPECT_FALSE(source.matches(KURL(base, "http://not-example.com:8000/"))); + EXPECT_TRUE(source.matches(KURL(base, "https://example.com:8000/"))); + EXPECT_FALSE(source.matches(KURL(base, "https://not-example.com:8000/"))); +} + } // namespace
diff --git a/third_party/WebKit/Source/core/html/HTMLImageElement.cpp b/third_party/WebKit/Source/core/html/HTMLImageElement.cpp index 829c9ce..ae94760 100644 --- a/third_party/WebKit/Source/core/html/HTMLImageElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLImageElement.cpp
@@ -603,7 +603,7 @@ return nullptr; } - RefPtr<Image> sourceImage = cachedImage()->imageForLayoutObject(layoutObject()); + RefPtr<Image> sourceImage = cachedImage()->image(); // We need to synthesize a container size if a layoutObject is not available to provide one. if (!layoutObject() && sourceImage->usesContainerSize())
diff --git a/third_party/WebKit/Source/core/html/HTMLInputElement.cpp b/third_party/WebKit/Source/core/html/HTMLInputElement.cpp index 49cacf9..38a24f3 100644 --- a/third_party/WebKit/Source/core/html/HTMLInputElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLInputElement.cpp
@@ -351,10 +351,7 @@ restoreCachedSelection(); break; case SelectionBehaviorOnFocus::None: - // |None| is used only for FocusController::setFocusedElement and - // Document::setFocusedElement, and they don't call - // updateFocusAppearance(). - ASSERT_NOT_REACHED(); + return; } if (document().frame()) document().frame()->selection().revealSelection();
diff --git a/third_party/WebKit/Source/core/html/HTMLTextAreaElement.cpp b/third_party/WebKit/Source/core/html/HTMLTextAreaElement.cpp index 8c4f7685f..53ff7b69 100644 --- a/third_party/WebKit/Source/core/html/HTMLTextAreaElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLTextAreaElement.cpp
@@ -251,10 +251,7 @@ restoreCachedSelection(); break; case SelectionBehaviorOnFocus::None: - // |None| is used only for FocusController::setFocusedElement and - // Document::setFocusedElement, and they don't call - // updateFocusAppearance(). - ASSERT_NOT_REACHED(); + return; } if (document().frame()) document().frame()->selection().revealSelection();
diff --git a/third_party/WebKit/Source/core/input/EventHandler.cpp b/third_party/WebKit/Source/core/input/EventHandler.cpp index fc6b6c8..ff2da3c 100644 --- a/third_party/WebKit/Source/core/input/EventHandler.cpp +++ b/third_party/WebKit/Source/core/input/EventHandler.cpp
@@ -815,7 +815,7 @@ // Get hotspot and convert from logical pixels to physical pixels. IntPoint hotSpot = (*cursors)[i].hotSpot(); hotSpot.scale(scale, scale); - IntSize size = cachedImage->imageForLayoutObject(layoutObject)->size(); + IntSize size = cachedImage->image()->size(); if (cachedImage->errorOccurred()) continue; // Limit the size of cursors (in UI pixels) so that they cannot be @@ -824,7 +824,7 @@ if (size.width() > maximumCursorSize || size.height() > maximumCursorSize) continue; - Image* image = cachedImage->imageForLayoutObject(layoutObject); + Image* image = cachedImage->image(); // Ensure no overflow possible in calculations above. if (scale < minimumCursorScale) continue; @@ -3151,6 +3151,7 @@ bool EventHandler::keyEvent(const PlatformKeyboardEvent& initialKeyEvent) { RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); + m_frame->chromeClient().setToolTip(String(), LTR); if (initialKeyEvent.windowsVirtualKeyCode() == VK_CAPITAL) capsLockStateMayHaveChanged();
diff --git a/third_party/WebKit/Source/core/inspector/AsyncCallChain.cpp b/third_party/WebKit/Source/core/inspector/AsyncCallChain.cpp index 0a67c78..eb1d0ea6 100644 --- a/third_party/WebKit/Source/core/inspector/AsyncCallChain.cpp +++ b/third_party/WebKit/Source/core/inspector/AsyncCallChain.cpp
@@ -19,13 +19,14 @@ { } -PassRefPtr<AsyncCallChain> AsyncCallChain::create(PassRefPtr<AsyncCallStack> stack, AsyncCallChain* prevChain, unsigned asyncCallChainMaxLength) +PassRefPtr<AsyncCallChain> AsyncCallChain::create(v8::Local<v8::Context> creationContext, PassRefPtr<AsyncCallStack> stack, AsyncCallChain* prevChain, unsigned asyncCallChainMaxLength) { - return adoptRef(new AsyncCallChain(stack, prevChain, asyncCallChainMaxLength)); + return adoptRef(new AsyncCallChain(creationContext, stack, prevChain, asyncCallChainMaxLength)); } -AsyncCallChain::AsyncCallChain(PassRefPtr<AsyncCallStack> stack, AsyncCallChain* prevChain, unsigned asyncCallChainMaxLength) +AsyncCallChain::AsyncCallChain(v8::Local<v8::Context> creationContext, PassRefPtr<AsyncCallStack> stack, AsyncCallChain* prevChain, unsigned asyncCallChainMaxLength) { + m_creationContext.Reset(creationContext->GetIsolate(), creationContext); if (stack) m_callStacks.append(stack); if (prevChain) {
diff --git a/third_party/WebKit/Source/core/inspector/AsyncCallChain.h b/third_party/WebKit/Source/core/inspector/AsyncCallChain.h index 17d91ff..55383dd 100644 --- a/third_party/WebKit/Source/core/inspector/AsyncCallChain.h +++ b/third_party/WebKit/Source/core/inspector/AsyncCallChain.h
@@ -29,14 +29,16 @@ class AsyncCallChain final : public RefCounted<AsyncCallChain> { public: - static PassRefPtr<AsyncCallChain> create(PassRefPtr<AsyncCallStack>, AsyncCallChain* prevChain, unsigned asyncCallChainMaxLength); + static PassRefPtr<AsyncCallChain> create(v8::Local<v8::Context>, PassRefPtr<AsyncCallStack>, AsyncCallChain* prevChain, unsigned asyncCallChainMaxLength); ~AsyncCallChain(); const AsyncCallStackVector& callStacks() const { return m_callStacks; } + v8::Local<v8::Context> creationContext(v8::Isolate* isolate) const { return m_creationContext.Get(isolate); } private: - AsyncCallChain(PassRefPtr<AsyncCallStack>, AsyncCallChain* prevChain, unsigned asyncCallChainMaxLength); + AsyncCallChain(v8::Local<v8::Context>, PassRefPtr<AsyncCallStack>, AsyncCallChain* prevChain, unsigned asyncCallChainMaxLength); AsyncCallStackVector m_callStacks; + v8::Global<v8::Context> m_creationContext; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/inspector/v8/InspectorWrapper.cpp b/third_party/WebKit/Source/core/inspector/v8/InspectorWrapper.cpp index 7acf308..fe2e2bb2 100644 --- a/third_party/WebKit/Source/core/inspector/v8/InspectorWrapper.cpp +++ b/third_party/WebKit/Source/core/inspector/v8/InspectorWrapper.cpp
@@ -8,6 +8,8 @@ #include "bindings/core/v8/V8ScriptRunner.h" #include "wtf/RefPtr.h" +#include <v8-debug.h> + namespace blink { v8::Local<v8::FunctionTemplate> InspectorWrapperBase::createWrapperTemplate(v8::Isolate* isolate, const char* className, const Vector<V8MethodConfiguration>& methods, const Vector<V8AttributeConfiguration>& attributes) @@ -48,9 +50,10 @@ return result; } -void* InspectorWrapperBase::unwrap(v8::Local<v8::Object> object, const char* name) +void* InspectorWrapperBase::unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object, const char* name) { - v8::Isolate* isolate = object->GetIsolate(); + ASSERT(context != v8::Debug::GetDebugContext()); + v8::Isolate* isolate = context->GetIsolate(); v8::Local<v8::Value> value = V8HiddenValue::getHiddenValue(isolate, object, v8InternalizedString(isolate, name)); if (value.IsEmpty()) return nullptr;
diff --git a/third_party/WebKit/Source/core/inspector/v8/InspectorWrapper.h b/third_party/WebKit/Source/core/inspector/v8/InspectorWrapper.h index 6a9cb96..6ca9792 100644 --- a/third_party/WebKit/Source/core/inspector/v8/InspectorWrapper.h +++ b/third_party/WebKit/Source/core/inspector/v8/InspectorWrapper.h
@@ -30,7 +30,7 @@ protected: static v8::Local<v8::Object> createWrapper(v8::Local<v8::FunctionTemplate>, v8::Local<v8::Context>); - static void* unwrap(v8::Local<v8::Object>, const char* name); + static void* unwrap(v8::Local<v8::Context>, v8::Local<v8::Object>, const char* name); static v8::Local<v8::String> v8InternalizedString(v8::Isolate*, const char* name); }; @@ -89,9 +89,9 @@ V8HiddenValue::setHiddenValue(isolate, result, v8InternalizedString(isolate, hiddenPropertyName), objectReference); return result; } - static T* unwrap(v8::Local<v8::Object> object) + static T* unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object) { - void* data = InspectorWrapperBase::unwrap(object, hiddenPropertyName); + void* data = InspectorWrapperBase::unwrap(context, object, hiddenPropertyName); if (!data) return nullptr; return reinterpret_cast<WeakCallbackData*>(data)->m_impl.get();
diff --git a/third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp b/third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp index fbe5b9f2..d62a316 100644 --- a/third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp +++ b/third_party/WebKit/Source/core/inspector/v8/V8DebuggerAgentImpl.cpp
@@ -109,16 +109,16 @@ return ScriptCallStack::create(frames); } -static PassRefPtr<JavaScriptCallFrame> toJavaScriptCallFrame(v8::Local<v8::Object> value) +static PassRefPtr<JavaScriptCallFrame> toJavaScriptCallFrame(v8::Local<v8::Context> context, v8::Local<v8::Object> value) { if (value.IsEmpty()) return nullptr; - return V8JavaScriptCallFrame::unwrap(value); + return V8JavaScriptCallFrame::unwrap(context, value); } -static PassRefPtrWillBeRawPtr<ScriptCallStack> toScriptCallStack(v8::Local<v8::Object> callFrames) +static PassRefPtrWillBeRawPtr<ScriptCallStack> toScriptCallStack(v8::Local<v8::Context> context, v8::Local<v8::Object> callFrames) { - RefPtr<JavaScriptCallFrame> jsCallFrame = toJavaScriptCallFrame(callFrames); + RefPtr<JavaScriptCallFrame> jsCallFrame = toJavaScriptCallFrame(context, callFrames); return jsCallFrame ? toScriptCallStack(jsCallFrame.get()) : nullptr; } @@ -1113,9 +1113,9 @@ RefPtr<AsyncCallChain> chain; if (callFrames.IsEmpty()) { if (m_currentAsyncCallChain) - chain = AsyncCallChain::create(nullptr, m_currentAsyncCallChain.get(), m_maxAsyncCallStackDepth); + chain = AsyncCallChain::create(m_currentAsyncCallChain.get()->creationContext(m_isolate), nullptr, m_currentAsyncCallChain.get(), m_maxAsyncCallStackDepth); } else { - chain = AsyncCallChain::create(adoptRef(new AsyncCallStack(description, callFrames)), m_currentAsyncCallChain.get(), m_maxAsyncCallStackDepth); + chain = AsyncCallChain::create(debugger().isPaused() ? debugger().pausedContext() : m_isolate->GetCurrentContext(), adoptRef(new AsyncCallStack(description, callFrames)), m_currentAsyncCallChain.get(), m_maxAsyncCallStackDepth); } do { ++m_lastAsyncOperationId; @@ -1244,7 +1244,7 @@ RefPtr<AsyncStackTrace> lastAsyncStackTrace; for (const auto& callStack : callStacks) { v8::HandleScope scope(m_isolate); - RefPtrWillBeRawPtr<ScriptCallStack> scriptCallStack = toScriptCallStack(callStack->callFrames(m_isolate)); + RefPtrWillBeRawPtr<ScriptCallStack> scriptCallStack = toScriptCallStack(chain->creationContext(m_isolate), callStack->callFrames(m_isolate)); if (!scriptCallStack) break; if (!operation) { @@ -1433,7 +1433,7 @@ RefPtrWillBeRawPtr<ScriptAsyncCallStack> result = nullptr; for (AsyncCallStackVector::const_reverse_iterator it = callStacks.rbegin(); it != callStacks.rend(); ++it) { v8::HandleScope scope(m_isolate); - RefPtr<JavaScriptCallFrame> callFrame = toJavaScriptCallFrame((*it)->callFrames(m_isolate)); + RefPtr<JavaScriptCallFrame> callFrame = toJavaScriptCallFrame(chain->creationContext(m_isolate), (*it)->callFrames(m_isolate)); if (!callFrame) break; result = ScriptAsyncCallStack::create((*it)->description(), toScriptCallStack(callFrame.get()), result.release());
diff --git a/third_party/WebKit/Source/core/inspector/v8/V8DebuggerImpl.h b/third_party/WebKit/Source/core/inspector/v8/V8DebuggerImpl.h index 94423ee..d26b814 100644 --- a/third_party/WebKit/Source/core/inspector/v8/V8DebuggerImpl.h +++ b/third_party/WebKit/Source/core/inspector/v8/V8DebuggerImpl.h
@@ -81,6 +81,7 @@ int frameCount(); bool isPaused(); + v8::Local<v8::Context> pausedContext() { return m_pausedContext; } v8::MaybeLocal<v8::Value> functionScopes(v8::Local<v8::Function>) override; v8::Local<v8::Value> generatorObjectDetails(v8::Local<v8::Object>&) override;
diff --git a/third_party/WebKit/Source/core/inspector/v8/V8InjectedScriptHost.cpp b/third_party/WebKit/Source/core/inspector/v8/V8InjectedScriptHost.cpp index f4470bad..f1298a2 100644 --- a/third_party/WebKit/Source/core/inspector/v8/V8InjectedScriptHost.cpp +++ b/third_party/WebKit/Source/core/inspector/v8/V8InjectedScriptHost.cpp
@@ -45,7 +45,7 @@ void V8InjectedScriptHost::clearConsoleMessagesCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { - InjectedScriptHost* impl = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* impl = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); impl->clearConsoleMessages(); } @@ -59,7 +59,7 @@ return; } - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); InjectedScriptHost::InspectableObject* object = host->inspectedObject(info[0].As<v8::Int32>()->Value()); v8SetReturnValue(info, object->get(ScriptState::current(info.GetIsolate())).v8Value()); } @@ -210,7 +210,7 @@ result->Set(v8AtomicString(isolate, "isGenerator"), v8::Boolean::New(isolate, function->IsGeneratorFunction())); - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); V8Debugger& debugger = host->debugger(); v8::MaybeLocal<v8::Value> scopes = debugger.functionScopes(function); if (!scopes.IsEmpty() && scopes.ToLocalChecked()->IsArray()) @@ -226,7 +226,7 @@ v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(info[0]); - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); V8Debugger& debugger = host->debugger(); v8SetReturnValue(info, debugger.generatorObjectDetails(object)); } @@ -238,7 +238,7 @@ v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(info[0]); - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); V8Debugger& debugger = host->debugger(); v8SetReturnValue(info, debugger.collectionEntries(object)); } @@ -291,7 +291,7 @@ EventTarget* target = InjectedScriptHost::eventTargetFromV8Value(info.GetIsolate(), info[0]); if (!target) return; - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); WillBeHeapVector<EventListenerInfo> listenersArray; host->getEventListenersImpl(target, listenersArray); @@ -312,7 +312,7 @@ if (info.Length() < 2) return; - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); ScriptState* scriptState = ScriptState::current(info.GetIsolate()); ScriptValue object(scriptState, info[0]); ScriptValue hints(scriptState, info[1]); @@ -396,7 +396,7 @@ String variableName = toCoreStringWithUndefinedOrNullCheck(info[2]); v8::Local<v8::Value> newValue = info[3]; - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); V8Debugger& debugger = host->debugger(); v8SetReturnValue(info, debugger.setFunctionVariableValue(functionValue, scopeIndex, variableName, newValue)); } @@ -422,7 +422,7 @@ if (!getFunctionLocation(info, &scriptId, &lineNumber, &columnNumber)) return; - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); host->debugFunction(scriptId, lineNumber, columnNumber); } @@ -434,7 +434,7 @@ if (!getFunctionLocation(info, &scriptId, &lineNumber, &columnNumber)) return; - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); host->undebugFunction(scriptId, lineNumber, columnNumber); } @@ -454,7 +454,7 @@ name = function->GetInferredName(); } - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); host->monitorFunction(scriptId, lineNumber, columnNumber, toCoreStringWithUndefinedOrNullCheck(name)); } @@ -466,7 +466,7 @@ if (!getFunctionLocation(info, &scriptId, &lineNumber, &columnNumber)) return; - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); host->unmonitorFunction(scriptId, lineNumber, columnNumber); } @@ -505,7 +505,7 @@ void V8InjectedScriptHost::suppressWarningsAndCallFunctionCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { - InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.Holder()); + InjectedScriptHost* host = V8InjectedScriptHost::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); host->client()->muteWarningsAndDeprecations(); callFunctionCallback(info); @@ -613,9 +613,9 @@ return InjectedScriptHostWrapper::wrap(constructorTemplate, context, host); } -InjectedScriptHost* V8InjectedScriptHost::unwrap(v8::Local<v8::Object> object) +InjectedScriptHost* V8InjectedScriptHost::unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object) { - return InjectedScriptHostWrapper::unwrap(object); + return InjectedScriptHostWrapper::unwrap(context, object); } } // namespace blink
diff --git a/third_party/WebKit/Source/core/inspector/v8/V8InjectedScriptHost.h b/third_party/WebKit/Source/core/inspector/v8/V8InjectedScriptHost.h index fc333be..e61a87b 100644 --- a/third_party/WebKit/Source/core/inspector/v8/V8InjectedScriptHost.h +++ b/third_party/WebKit/Source/core/inspector/v8/V8InjectedScriptHost.h
@@ -16,7 +16,7 @@ class V8InjectedScriptHost { public: static v8::Local<v8::Object> wrap(v8::Local<v8::FunctionTemplate> constructorTemplate, v8::Local<v8::Context>, PassRefPtrWillBeRawPtr<InjectedScriptHost>); - static InjectedScriptHost* unwrap(v8::Local<v8::Object>); + static InjectedScriptHost* unwrap(v8::Local<v8::Context>, v8::Local<v8::Object>); static v8::Local<v8::FunctionTemplate> createWrapperTemplate(v8::Isolate*); static void clearConsoleMessagesCallback(const v8::FunctionCallbackInfo<v8::Value>&);
diff --git a/third_party/WebKit/Source/core/inspector/v8/V8JavaScriptCallFrame.cpp b/third_party/WebKit/Source/core/inspector/v8/V8JavaScriptCallFrame.cpp index 913cc57d..79448ce 100644 --- a/third_party/WebKit/Source/core/inspector/v8/V8JavaScriptCallFrame.cpp +++ b/third_party/WebKit/Source/core/inspector/v8/V8JavaScriptCallFrame.cpp
@@ -17,7 +17,7 @@ void callerAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); JavaScriptCallFrame* caller = impl->caller(); if (!caller) return; @@ -30,37 +30,37 @@ void sourceIDAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->sourceID()); } void lineAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->line()); } void columnAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->column()); } void scopeChainAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->scopeChain()); } void thisObjectAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->thisObject()); } void stepInPositionsAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); CString cstr = impl->stepInPositions().utf8(); v8::Local<v8::Name> result = v8::String::NewFromUtf8(info.GetIsolate(), cstr.data(), v8::NewStringType::kNormal, cstr.length()).ToLocalChecked(); info.GetReturnValue().Set(result); @@ -68,7 +68,7 @@ void functionNameAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); CString cstr = impl->functionName().utf8(); v8::Local<v8::Name> result = v8::String::NewFromUtf8(info.GetIsolate(), cstr.data(), v8::NewStringType::kNormal, cstr.length()).ToLocalChecked(); info.GetReturnValue().Set(result); @@ -76,37 +76,37 @@ void functionLineAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->functionLine()); } void functionColumnAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->functionColumn()); } void isAtReturnAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->isAtReturn()); } void returnValueAttributeGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->returnValue()); } void evaluateWithExceptionDetailsMethodCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); info.GetReturnValue().Set(impl->evaluateWithExceptionDetails(info[0], info[1])); } void restartMethodCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); v8::MaybeLocal<v8::Value> result = impl->restart(); v8::Local<v8::Value> value; if (result.ToLocal(&value)) @@ -115,7 +115,7 @@ void setVariableValueMethodCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); v8::Maybe<int32_t> maybeScopeIndex = info[0]->Int32Value(info.GetIsolate()->GetCurrentContext()); if (maybeScopeIndex.IsNothing()) return; @@ -129,7 +129,7 @@ void scopeTypeMethodCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); v8::Maybe<int32_t> maybeScopeIndex = info[0]->Int32Value(info.GetIsolate()->GetCurrentContext()); if (maybeScopeIndex.IsNothing()) return; @@ -139,7 +139,7 @@ void scopeNameMethodCallback(const v8::FunctionCallbackInfo<v8::Value>& info) { - JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.Holder()); + JavaScriptCallFrame* impl = V8JavaScriptCallFrame::unwrap(info.GetIsolate()->GetCurrentContext(), info.Holder()); v8::Maybe<int32_t> maybeScopeIndex = info[0]->Int32Value(info.GetIsolate()->GetCurrentContext()); if (maybeScopeIndex.IsNothing()) return; @@ -193,9 +193,9 @@ return JavaScriptCallFrameWrapper::wrap(constructorTemplate, context, frame); } -JavaScriptCallFrame* V8JavaScriptCallFrame::unwrap(v8::Local<v8::Object> object) +JavaScriptCallFrame* V8JavaScriptCallFrame::unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object) { - return JavaScriptCallFrameWrapper::unwrap(object); + return JavaScriptCallFrameWrapper::unwrap(context, object); } } // namespace blink
diff --git a/third_party/WebKit/Source/core/inspector/v8/V8JavaScriptCallFrame.h b/third_party/WebKit/Source/core/inspector/v8/V8JavaScriptCallFrame.h index 946440d2..d7b4c2b0 100644 --- a/third_party/WebKit/Source/core/inspector/v8/V8JavaScriptCallFrame.h +++ b/third_party/WebKit/Source/core/inspector/v8/V8JavaScriptCallFrame.h
@@ -18,7 +18,7 @@ public: static v8::Local<v8::FunctionTemplate> createWrapperTemplate(v8::Isolate*); static v8::Local<v8::Object> wrap(v8::Local<v8::FunctionTemplate> constructorTemplate, v8::Local<v8::Context>, PassRefPtr<JavaScriptCallFrame>); - static JavaScriptCallFrame* unwrap(v8::Local<v8::Object>); + static JavaScriptCallFrame* unwrap(v8::Local<v8::Context>, v8::Local<v8::Object>); }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/ClipRects.h b/third_party/WebKit/Source/core/layout/ClipRects.h index a2ab3c05..47d9b5a9 100644 --- a/third_party/WebKit/Source/core/layout/ClipRects.h +++ b/third_party/WebKit/Source/core/layout/ClipRects.h
@@ -76,6 +76,8 @@ && fixed() == other.fixed(); } + bool operator!=(const ClipRects& other) const { return !(*this == other); } + ClipRects& operator=(const ClipRects& other) { m_overflowClipRect = other.overflowClipRect();
diff --git a/third_party/WebKit/Source/core/layout/HitTestResult.cpp b/third_party/WebKit/Source/core/layout/HitTestResult.cpp index fcb509d..0373ced 100644 --- a/third_party/WebKit/Source/core/layout/HitTestResult.cpp +++ b/third_party/WebKit/Source/core/layout/HitTestResult.cpp
@@ -317,7 +317,7 @@ if (layoutObject && layoutObject->isImage()) { LayoutImage* image = toLayoutImage(layoutObject); if (image->cachedImage() && !image->cachedImage()->errorOccurred()) - return image->cachedImage()->imageForLayoutObject(image); + return image->cachedImage()->image(); } return nullptr;
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp index ba3abb1d..787e482 100644 --- a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
@@ -887,17 +887,11 @@ } if (gDelayUpdateScrollInfo) { - LayoutUnit logicalWidthExcludingScrollbar = logicalWidth() - scrollbarLogicalWidth(); - LayoutUnit logicalHeightExcludingScrollbar = logicalHeight() - scrollbarLogicalHeight(); ScrollInfo scrollInfo; layer()->scrollableArea()->updateScrollDimensions(scrollInfo.scrollOffset, scrollInfo.autoHorizontalScrollBarChanged, scrollInfo.autoVerticalScrollBarChanged); DelayedUpdateScrollInfoMap::AddResult scrollInfoIterator = gDelayedUpdateScrollInfoMap->add(this, scrollInfo); if (!scrollInfoIterator.isNewEntry) scrollInfoIterator.storedValue->value.merge(scrollInfo); - if (scrollInfo.autoHorizontalScrollBarChanged) - setLogicalHeight(logicalHeightExcludingScrollbar + scrollbarLogicalHeight()); - if (scrollInfo.autoVerticalScrollBarChanged) - setLogicalWidth(logicalWidthExcludingScrollbar + scrollbarLogicalWidth()); } else { layer()->scrollableArea()->updateAfterLayout(); }
diff --git a/third_party/WebKit/Source/core/layout/LayoutImage.cpp b/third_party/WebKit/Source/core/layout/LayoutImage.cpp index 8e8ecfc..7e0adfc 100644 --- a/third_party/WebKit/Source/core/layout/LayoutImage.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutImage.cpp
@@ -137,19 +137,10 @@ setIntrinsicSize(newSize); } -void LayoutImage::updateInnerContentRect() -{ - // Propagate container size to the image resource. - LayoutRect containerRect = replacedContentRect(); - IntSize containerSize(containerRect.width(), containerRect.height()); - if (!containerSize.isEmpty()) - m_imageResource->setContainerSizeForLayoutObject(containerSize); -} - void LayoutImage::invalidatePaintAndMarkForLayoutIfNeeded() { LayoutSize oldIntrinsicSize = intrinsicSize(); - LayoutSize newIntrinsicSize = m_imageResource->intrinsicSize(style()->effectiveZoom()); + LayoutSize newIntrinsicSize = m_imageResource->imageSize(style()->effectiveZoom()); updateIntrinsicSizeIfNeeded(newIntrinsicSize); // In the case of generated image content using :before/:after/content, we might not be @@ -176,15 +167,6 @@ return; } - // The image hasn't changed in size or its style constrains its size, so a paint invalidation will suffice. - if (everHadLayout() && !selfNeedsLayout()) { - // The inner content rectangle is calculated during layout, but may need an update now - // (unless the box has already been scheduled for layout). In order to calculate it, we - // may need values from the containing block, though, so make sure that we're not too - // early. It may be that layout hasn't even taken place once yet. - updateInnerContentRect(); - } - if (imageResource() && imageResource()->maybeAnimated()) setShouldDoFullPaintInvalidation(PaintInvalidationDelayedFull); else @@ -300,12 +282,6 @@ return inside; } -void LayoutImage::layout() -{ - LayoutReplaced::layout(); - updateInnerContentRect(); -} - void LayoutImage::computeIntrinsicRatioInformation(FloatSize& intrinsicSize, double& intrinsicRatio) const { LayoutReplaced::computeIntrinsicRatioInformation(intrinsicSize, intrinsicRatio);
diff --git a/third_party/WebKit/Source/core/layout/LayoutImage.h b/third_party/WebKit/Source/core/layout/LayoutImage.h index 540b7ad..d52c933 100644 --- a/third_party/WebKit/Source/core/layout/LayoutImage.h +++ b/third_party/WebKit/Source/core/layout/LayoutImage.h
@@ -87,8 +87,6 @@ void paint(const PaintInfo&, const LayoutPoint&) const final; - void layout() override; - bool isOfType(LayoutObjectType type) const override { return type == LayoutObjectLayoutImage || LayoutReplaced::isOfType(type); } void willBeDestroyed() override; @@ -114,8 +112,6 @@ void invalidatePaintAndMarkForLayoutIfNeeded(); void updateIntrinsicSizeIfNeeded(const LayoutSize&); - // Update the size of the image to be rendered. Object-fit may cause this to be different from the CSS box's content rect. - void updateInnerContentRect(); // This member wraps the associated decoded image. //
diff --git a/third_party/WebKit/Source/core/layout/LayoutImageResource.cpp b/third_party/WebKit/Source/core/layout/LayoutImageResource.cpp index 4c4ceb9..beb9793 100644 --- a/third_party/WebKit/Source/core/layout/LayoutImageResource.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutImageResource.cpp
@@ -28,7 +28,9 @@ #include "config.h" #include "core/layout/LayoutImageResource.h" +#include "core/html/HTMLImageElement.h" #include "core/layout/LayoutImage.h" +#include "core/svg/graphics/SVGImageForContainer.h" namespace blink { @@ -88,23 +90,32 @@ m_layoutObject->setShouldDoFullPaintInvalidation(); } -void LayoutImageResource::setContainerSizeForLayoutObject(const IntSize& imageContainerSize) -{ - ASSERT(m_layoutObject); - if (m_cachedImage) - m_cachedImage->setContainerSizeForLayoutObject(m_layoutObject, imageContainerSize, m_layoutObject->style()->effectiveZoom()); -} - -LayoutSize LayoutImageResource::getImageSize(float multiplier, ImageResource::SizeType type) const +LayoutSize LayoutImageResource::imageSize(float multiplier) const { if (!m_cachedImage) return LayoutSize(); - LayoutSize size = m_cachedImage->imageSizeForLayoutObject(m_layoutObject, multiplier, type); + LayoutSize size = m_cachedImage->imageSizeForLayoutObject(m_layoutObject, multiplier, ImageResource::IntrinsicSize); if (m_layoutObject && m_layoutObject->isLayoutImage() && size.width() && size.height()) size.scale(toLayoutImage(m_layoutObject)->imageDevicePixelRatio()); return size; } +PassRefPtr<Image> LayoutImageResource::image(const IntSize& containerSize, float zoom) const +{ + RefPtr<Image> image = m_cachedImage ? m_cachedImage->image() : Image::nullImage(); + if (image->isSVGImage()) { + SVGImage* svgImage = toSVGImage(image.get()); + Node* node = m_layoutObject->node(); + if (node && isHTMLImageElement(node)) { + const AtomicString& urlString = toHTMLImageElement(node)->imageSourceURL(); + KURL url = node->document().completeURL(urlString); + svgImage->setURL(url); + } + return SVGImageForContainer::create(svgImage, containerSize, zoom); + } + return image; +} + bool LayoutImageResource::maybeAnimated() const { Image* image = m_cachedImage ? m_cachedImage->image() : Image::nullImage();
diff --git a/third_party/WebKit/Source/core/layout/LayoutImageResource.h b/third_party/WebKit/Source/core/layout/LayoutImageResource.h index 788e794..556dfe82 100644 --- a/third_party/WebKit/Source/core/layout/LayoutImageResource.h +++ b/third_party/WebKit/Source/core/layout/LayoutImageResource.h
@@ -55,18 +55,13 @@ void resetAnimation(); bool maybeAnimated() const; - virtual PassRefPtr<Image> image(const IntSize&) const - { - return m_cachedImage ? m_cachedImage->imageForLayoutObject(m_layoutObject) : Image::nullImage(); - } + virtual PassRefPtr<Image> image(const IntSize&, float) const; virtual bool errorOccurred() const { return m_cachedImage && m_cachedImage->errorOccurred(); } - virtual void setContainerSizeForLayoutObject(const IntSize&); virtual bool imageHasRelativeWidth() const { return m_cachedImage ? m_cachedImage->imageHasRelativeWidth() : false; } virtual bool imageHasRelativeHeight() const { return m_cachedImage ? m_cachedImage->imageHasRelativeHeight() : false; } - virtual LayoutSize imageSize(float multiplier) const { return getImageSize(multiplier, ImageResource::NormalSize); } - virtual LayoutSize intrinsicSize(float multiplier) const { return getImageSize(multiplier, ImageResource::IntrinsicSize); } + virtual LayoutSize imageSize(float multiplier) const; virtual WrappedImagePtr imagePtr() const { return m_cachedImage.get(); } @@ -76,9 +71,6 @@ LayoutImageResource(); LayoutObject* m_layoutObject; ResourcePtr<ImageResource> m_cachedImage; - -private: - LayoutSize getImageSize(float multiplier, ImageResource::SizeType) const; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/LayoutImageResourceStyleImage.cpp b/third_party/WebKit/Source/core/layout/LayoutImageResourceStyleImage.cpp index 12c68f3..814efdf5 100644 --- a/third_party/WebKit/Source/core/layout/LayoutImageResourceStyleImage.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutImageResourceStyleImage.cpp
@@ -61,18 +61,12 @@ m_cachedImage = 0; } -PassRefPtr<Image> LayoutImageResourceStyleImage::image(const IntSize& size) const +PassRefPtr<Image> LayoutImageResourceStyleImage::image(const IntSize& size, float zoom) const { // Generated content may trigger calls to image() while we're still pending, don't assert but gracefully exit. if (m_styleImage->isPendingImage()) return nullptr; - return m_styleImage->image(m_layoutObject, size); -} - -void LayoutImageResourceStyleImage::setContainerSizeForLayoutObject(const IntSize& size) -{ - ASSERT(m_layoutObject); - m_styleImage->setContainerSizeForLayoutObject(m_layoutObject, size, m_layoutObject->style()->effectiveZoom()); + return m_styleImage->image(m_layoutObject, size, zoom); } DEFINE_TRACE(LayoutImageResourceStyleImage)
diff --git a/third_party/WebKit/Source/core/layout/LayoutImageResourceStyleImage.h b/third_party/WebKit/Source/core/layout/LayoutImageResourceStyleImage.h index 3ed1625d..614bff8 100644 --- a/third_party/WebKit/Source/core/layout/LayoutImageResourceStyleImage.h +++ b/third_party/WebKit/Source/core/layout/LayoutImageResourceStyleImage.h
@@ -46,15 +46,13 @@ void shutdown() override; bool hasImage() const override { return true; } - PassRefPtr<Image> image(const IntSize&) const override; + PassRefPtr<Image> image(const IntSize&, float) const override; bool errorOccurred() const override { return m_styleImage->errorOccurred(); } - void setContainerSizeForLayoutObject(const IntSize&) override; bool imageHasRelativeWidth() const override { return m_styleImage->imageHasRelativeWidth(); } bool imageHasRelativeHeight() const override { return m_styleImage->imageHasRelativeHeight(); } LayoutSize imageSize(float multiplier) const override { return m_styleImage->imageSize(m_layoutObject, multiplier); } - LayoutSize intrinsicSize(float multiplier) const override { return m_styleImage->imageSize(m_layoutObject, multiplier); } WrappedImagePtr imagePtr() const override { return m_styleImage->data(); }
diff --git a/third_party/WebKit/Source/core/layout/MultiColumnFragmentainerGroup.cpp b/third_party/WebKit/Source/core/layout/MultiColumnFragmentainerGroup.cpp index e9246bf..09c64a88 100644 --- a/third_party/WebKit/Source/core/layout/MultiColumnFragmentainerGroup.cpp +++ b/third_party/WebKit/Source/core/layout/MultiColumnFragmentainerGroup.cpp
@@ -39,20 +39,12 @@ return logicalTop() + m_columnSet.logicalTop() + m_columnSet.multiColumnFlowThread()->blockOffsetInEnclosingFlowThread(); } -bool MultiColumnFragmentainerGroup::heightIsAuto() const -{ - // Only the last row may have auto height, and thus be balanced. There are no good reasons to - // balance the preceding rows, and that could potentially lead to an insane number of layout - // passes as well. - return isLastGroup() && m_columnSet.heightIsAuto(); -} - void MultiColumnFragmentainerGroup::resetColumnHeight() { m_maxColumnHeight = calculateMaxColumnHeight(); LayoutMultiColumnFlowThread* flowThread = m_columnSet.multiColumnFlowThread(); - if (heightIsAuto()) { + if (m_columnSet.heightIsAuto()) { LayoutMultiColumnFlowThread* enclosingFlowThread = flowThread->enclosingFlowThread(); if (enclosingFlowThread && enclosingFlowThread->isPageLogicalHeightKnown()) { // Even if height is auto, we set an initial height, in order to tell how much content @@ -72,7 +64,10 @@ m_maxColumnHeight = calculateMaxColumnHeight(); - if (heightIsAuto()) { + // Only the last row may have auto height, and thus be balanced. There are no good reasons to + // balance the preceding rows, and that could potentially lead to an insane number of layout + // passes as well. + if (isLastGroup() && m_columnSet.heightIsAuto()) { LayoutUnit newColumnHeight = calculateColumnHeight(calculationMode); setAndConstrainColumnHeight(newColumnHeight); // After having calculated an initial column height, the multicol container typically needs at
diff --git a/third_party/WebKit/Source/core/layout/MultiColumnFragmentainerGroup.h b/third_party/WebKit/Source/core/layout/MultiColumnFragmentainerGroup.h index 54116a34..4f53c50e 100644 --- a/third_party/WebKit/Source/core/layout/MultiColumnFragmentainerGroup.h +++ b/third_party/WebKit/Source/core/layout/MultiColumnFragmentainerGroup.h
@@ -59,7 +59,6 @@ // The height of our flow thread portion LayoutUnit logicalHeightInFlowThread() const { return m_logicalBottomInFlowThread - m_logicalTopInFlowThread; } - bool heightIsAuto() const; void resetColumnHeight(); bool recalculateColumnHeight(BalancedColumnHeightCalculation calculationMode);
diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp index 29fc0ae..f187ba0 100644 --- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp +++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
@@ -1874,7 +1874,7 @@ if (!cachedImage->hasImage()) return false; - Image* image = cachedImage->imageForLayoutObject(imageLayoutObject); + Image* image = cachedImage->image(); if (!image->isBitmapImage()) return false; @@ -1906,7 +1906,7 @@ if (!cachedImage) return; - Image* image = cachedImage->imageForLayoutObject(imageLayoutObject); + Image* image = cachedImage->image(); if (!image) return;
diff --git a/third_party/WebKit/Source/core/layout/shapes/ShapeOutsideInfo.cpp b/third_party/WebKit/Source/core/layout/shapes/ShapeOutsideInfo.cpp index 5767dcd..d22b77a 100644 --- a/third_party/WebKit/Source/core/layout/shapes/ShapeOutsideInfo.cpp +++ b/third_party/WebKit/Source/core/layout/shapes/ShapeOutsideInfo.cpp
@@ -123,8 +123,6 @@ PassOwnPtr<Shape> ShapeOutsideInfo::createShapeForImage(StyleImage* styleImage, float shapeImageThreshold, WritingMode writingMode, float margin) const { const IntSize& imageSize = m_layoutBox.calculateImageIntrinsicDimensions(styleImage, roundedIntSize(m_referenceBoxLogicalSize), LayoutImage::ScaleByEffectiveZoom); - styleImage->setContainerSizeForLayoutObject(&m_layoutBox, imageSize, m_layoutBox.style()->effectiveZoom()); - const LayoutRect& marginRect = getShapeImageMarginRect(m_layoutBox, m_referenceBoxLogicalSize); const LayoutRect& imageRect = (m_layoutBox.isLayoutImage()) ? toLayoutImage(m_layoutBox).replacedContentRect() @@ -136,7 +134,7 @@ } ASSERT(!styleImage->isPendingImage()); - RefPtr<Image> image = styleImage->image(const_cast<LayoutBox*>(&m_layoutBox), imageSize); + RefPtr<Image> image = styleImage->image(const_cast<LayoutBox*>(&m_layoutBox), imageSize, m_layoutBox.style()->effectiveZoom()); return Shape::createRasterShape(image.get(), shapeImageThreshold, imageRect, marginRect, writingMode, margin); }
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp index 823f99d..e426124 100644 --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp
@@ -63,43 +63,6 @@ LayoutSVGModelObject::willBeDestroyed(); } -FloatSize LayoutSVGImage::computeImageViewportSize(ImageResource& cachedImage) const -{ - if (toSVGImageElement(element())->preserveAspectRatio()->currentValue()->align() != SVGPreserveAspectRatio::SVG_PRESERVEASPECTRATIO_NONE) - return m_objectBoundingBox.size(); - - // Images with preserveAspectRatio=none should force non-uniform - // scaling. This can be achieved by setting the image's container size to - // its viewport size (i.e. if a viewBox is available - use that - else use intrinsic size.) - // See: http://www.w3.org/TR/SVG/single-page.html, 7.8 The 'preserveAspectRatio' attribute. - Length intrinsicWidth; - Length intrinsicHeight; - FloatSize intrinsicRatio; - cachedImage.computeIntrinsicDimensions(intrinsicWidth, intrinsicHeight, intrinsicRatio); - return intrinsicRatio; -} - -static bool containerSizeIsSetForLayoutObject(ImageResource& cachedImage, const LayoutObject* layoutObject) -{ - const Image* image = cachedImage.image(); - // If a container size has been specified for this layoutObject, then - // imageForLayoutObject() will return the SVGImageForContainer while image() - // will return the underlying SVGImage. - return !image->isSVGImage() || image != cachedImage.imageForLayoutObject(layoutObject); -} - -void LayoutSVGImage::updateImageContainerSize() -{ - ImageResource* cachedImage = m_imageResource->cachedImage(); - if (!cachedImage || !cachedImage->usesImageContainerSize()) - return; - FloatSize imageViewportSize = computeImageViewportSize(*cachedImage); - if (LayoutSize(imageViewportSize) != m_imageResource->imageSize(styleRef().effectiveZoom()) - || !containerSizeIsSetForLayoutObject(*cachedImage, this)) { - m_imageResource->setContainerSizeForLayoutObject(roundedIntSize(imageViewportSize)); - } -} - void LayoutSVGImage::updateBoundingBox() { FloatRect oldBoundaries = m_objectBoundingBox; @@ -119,7 +82,6 @@ LayoutAnalyzer::Scope analyzer(*this); updateBoundingBox(); - updateImageContainerSize(); bool transformOrBoundariesUpdate = m_needsTransformUpdate || m_needsBoundariesUpdate; if (m_needsTransformUpdate) { @@ -185,10 +147,6 @@ // representation of this image/layout object. LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(this, false); - // Update the SVGImageCache sizeAndScales entry in case image loading finished after layout. - // (https://bugs.webkit.org/show_bug.cgi?id=99489) - updateImageContainerSize(); - m_bufferedForeground.clear(); setShouldDoFullPaintInvalidation();
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.h b/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.h index 1e176f6e..4e1fc73 100644 --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.h +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.h
@@ -66,8 +66,6 @@ void paint(const PaintInfo&, const LayoutPoint&) const override; void updateBoundingBox(); - void updateImageContainerSize(); - FloatSize computeImageViewportSize(ImageResource&) const; bool nodeAtFloatPoint(HitTestResult&, const FloatPoint& pointInParent, HitTestAction) override;
diff --git a/third_party/WebKit/Source/core/page/PageSerializer.cpp b/third_party/WebKit/Source/core/page/PageSerializer.cpp index 28ac4e0..ebbf288 100644 --- a/third_party/WebKit/Source/core/page/PageSerializer.cpp +++ b/third_party/WebKit/Source/core/page/PageSerializer.cpp
@@ -330,7 +330,7 @@ // If frame is an image document, add the image and don't continue if (document.isImageDocument()) { ImageDocument& imageDocument = toImageDocument(document); - addImageToResources(imageDocument.cachedImage(), imageDocument.imageElement()->layoutObject(), url); + addImageToResources(imageDocument.cachedImage(), url); return; } @@ -364,13 +364,13 @@ HTMLImageElement& imageElement = toHTMLImageElement(element); KURL url = document.completeURL(imageElement.getAttribute(HTMLNames::srcAttr)); ImageResource* cachedImage = imageElement.cachedImage(); - addImageToResources(cachedImage, imageElement.layoutObject(), url); + addImageToResources(cachedImage, url); } else if (isHTMLInputElement(element)) { HTMLInputElement& inputElement = toHTMLInputElement(element); if (inputElement.type() == InputTypeNames::image && inputElement.imageLoader()) { KURL url = inputElement.src(); ImageResource* cachedImage = inputElement.imageLoader()->image(); - addImageToResources(cachedImage, inputElement.layoutObject(), url); + addImageToResources(cachedImage, url); } } else if (isHTMLLinkElement(element)) { HTMLLinkElement& linkElement = toHTMLLinkElement(element); @@ -489,7 +489,7 @@ m_resourceURLs.add(url); } -void PageSerializer::addImageToResources(ImageResource* image, LayoutObject* imageLayoutObject, const KURL& url) +void PageSerializer::addImageToResources(ImageResource* image, const KURL& url) { if (!shouldAddURL(url)) return; @@ -497,10 +497,7 @@ if (!image || !image->hasImage() || image->errorOccurred()) return; - RefPtr<SharedBuffer> data = imageLayoutObject ? image->imageForLayoutObject(imageLayoutObject)->data() : nullptr; - if (!data) - data = image->image()->data(); - + RefPtr<SharedBuffer> data = image->image()->data(); addToResources(image, data, url); } @@ -539,7 +536,7 @@ if (!styleImage || !styleImage->isImageResource()) return; - addImageToResources(styleImage->cachedImage(), nullptr, styleImage->cachedImage()->url()); + addImageToResources(styleImage->cachedImage(), styleImage->cachedImage()->url()); } else if (cssValue->isFontFaceSrcValue()) { CSSFontFaceSrcValue* fontFaceSrcValue = toCSSFontFaceSrcValue(cssValue); if (fontFaceSrcValue->isLocal()) {
diff --git a/third_party/WebKit/Source/core/page/PageSerializer.h b/third_party/WebKit/Source/core/page/PageSerializer.h index 501d99f5..c0f3edb4 100644 --- a/third_party/WebKit/Source/core/page/PageSerializer.h +++ b/third_party/WebKit/Source/core/page/PageSerializer.h
@@ -99,7 +99,7 @@ bool shouldAddURL(const KURL&); void addToResources(Resource *, PassRefPtr<SharedBuffer>, const KURL&); - void addImageToResources(ImageResource*, LayoutObject*, const KURL&); + void addImageToResources(ImageResource*, const KURL&); void addFontToResources(FontResource*); void retrieveResourcesForProperties(const StylePropertySet*, Document&);
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollStateCallback.cpp b/third_party/WebKit/Source/core/page/scrolling/ScrollStateCallback.cpp index c1756f59..bd8c6247 100644 --- a/third_party/WebKit/Source/core/page/scrolling/ScrollStateCallback.cpp +++ b/third_party/WebKit/Source/core/page/scrolling/ScrollStateCallback.cpp
@@ -4,6 +4,7 @@ #include "config.h" #include "core/page/scrolling/ScrollStateCallback.h" +#include "wtf/text/WTFString.h" namespace blink {
diff --git a/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp b/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp index 8f336f2fe..4cfbef50 100644 --- a/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp +++ b/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.cpp
@@ -170,8 +170,7 @@ } void BackgroundImageGeometry::calculate(const LayoutBoxModelObject& obj, const LayoutBoxModelObject* paintContainer, - const GlobalPaintFlags globalPaintFlags, const FillLayer& fillLayer, const LayoutRect& paintRect, - const LayoutObject* backgroundObject) + const GlobalPaintFlags globalPaintFlags, const FillLayer& fillLayer, const LayoutRect& paintRect) { LayoutUnit left = 0; LayoutUnit top = 0; @@ -257,10 +256,9 @@ positioningAreaSize = destRect().size(); } - const LayoutObject* clientForBackgroundImage = backgroundObject ? backgroundObject : &obj; IntSize fillTileSize = calculateFillTileSize(positioningBox, fillLayer, positioningAreaSize); - fillLayer.image()->setContainerSizeForLayoutObject(clientForBackgroundImage, fillTileSize, obj.style()->effectiveZoom()); setTileSize(fillTileSize); + setImageContainerSize(fillTileSize); EFillRepeat backgroundRepeatX = fillLayer.repeatX(); EFillRepeat backgroundRepeatY = fillLayer.repeatY();
diff --git a/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.h b/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.h index a40080a..7c96e8d 100644 --- a/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.h +++ b/third_party/WebKit/Source/core/paint/BackgroundImageGeometry.h
@@ -26,11 +26,11 @@ { } void calculate(const LayoutBoxModelObject&, const LayoutBoxModelObject* paintContainer, - const GlobalPaintFlags, const FillLayer&, const LayoutRect& paintRect, - const LayoutObject* backgroundObject = nullptr); + const GlobalPaintFlags, const FillLayer&, const LayoutRect& paintRect); IntRect destRect() const { return m_destRect; } IntSize tileSize() const { return m_tileSize; } + IntSize imageContainerSize() const { return m_imageContainerSize; } IntPoint phase() const { return m_phase; } // Space-size represents extra width and height that may be added to // the image if used as a pattern with background-repeat: space. @@ -41,6 +41,7 @@ private: void setDestRect(const IntRect& destRect) { m_destRect = destRect; } void setPhase(const IntPoint& phase) { m_phase = phase; } + void setImageContainerSize(const IntSize& imageContainerSize) { m_imageContainerSize = imageContainerSize; } void setTileSize(const IntSize& tileSize) { m_tileSize = tileSize; } void setSpaceSize(const IntSize& repeatSpacing) { m_repeatSpacing = repeatSpacing; } void setPhaseX(int x) { m_phase.setX(x); } @@ -54,6 +55,7 @@ IntRect m_destRect; IntPoint m_phase; + IntSize m_imageContainerSize; IntSize m_tileSize; IntSize m_repeatSpacing; bool m_hasNonLocalGeometry;
diff --git a/third_party/WebKit/Source/core/paint/BoxPainter.cpp b/third_party/WebKit/Source/core/paint/BoxPainter.cpp index 3b1f0b3..c56ba6ae 100644 --- a/third_party/WebKit/Source/core/paint/BoxPainter.cpp +++ b/third_party/WebKit/Source/core/paint/BoxPainter.cpp
@@ -437,7 +437,7 @@ BackgroundImageGeometry geometry; if (bgImage) - geometry.calculate(obj, paintInfo.paintContainer(), paintInfo.globalPaintFlags(), bgLayer, scrolledPaintRect, backgroundObject); + geometry.calculate(obj, paintInfo.paintContainer(), paintInfo.globalPaintFlags(), bgLayer, scrolledPaintRect); bool shouldPaintBackgroundImage = bgImage && bgImage->canRender(obj, obj.style()->effectiveZoom()); // Paint the color first underneath all images, culled if background image occludes it. @@ -464,7 +464,7 @@ // if op != SkXfermode::kSrcOver_Mode, a mask is being painted. SkXfermode::Mode compositeOp = op == SkXfermode::kSrcOver_Mode ? bgOp : op; const LayoutObject* clientForBackgroundImage = backgroundObject ? backgroundObject : &obj; - RefPtr<Image> image = bgImage->image(clientForBackgroundImage, geometry.tileSize()); + RefPtr<Image> image = bgImage->image(clientForBackgroundImage, geometry.imageContainerSize(), obj.style()->effectiveZoom()); InterpolationQuality interpolationQuality = chooseInterpolationQuality(*clientForBackgroundImage, context, image.get(), &bgLayer, LayoutSize(geometry.tileSize())); if (bgLayer.maskSourceType() == MaskLuminance) context->setColorFilter(ColorFilterLuminanceToAlpha);
diff --git a/third_party/WebKit/Source/core/paint/ImagePainter.cpp b/third_party/WebKit/Source/core/paint/ImagePainter.cpp index fc4d51c..61846e6 100644 --- a/third_party/WebKit/Source/core/paint/ImagePainter.cpp +++ b/third_party/WebKit/Source/core/paint/ImagePainter.cpp
@@ -128,7 +128,7 @@ if (alignedRect.width() <= 0 || alignedRect.height() <= 0) return; - RefPtr<Image> image = m_layoutImage.imageResource()->image(alignedRect.size()); + RefPtr<Image> image = m_layoutImage.imageResource()->image(alignedRect.size(), m_layoutImage.style()->effectiveZoom()); if (!image || image->isNull()) return;
diff --git a/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp b/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp index ff115bb4..5ef8f14 100644 --- a/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp +++ b/third_party/WebKit/Source/core/paint/ListMarkerPainter.cpp
@@ -74,7 +74,8 @@ GraphicsContext* context = paintInfo.context; if (m_layoutListMarker.isImage()) { - context->drawImage(m_layoutListMarker.image()->image(&m_layoutListMarker, marker.size()).get(), marker); + context->drawImage(m_layoutListMarker.image()->image( + &m_layoutListMarker, marker.size(), m_layoutListMarker.styleRef().effectiveZoom()).get(), marker); if (m_layoutListMarker.selectionState() != SelectionNone) { LayoutRect selRect = m_layoutListMarker.localSelectionRect(); selRect.moveBy(boxOrigin);
diff --git a/third_party/WebKit/Source/core/paint/NinePieceImagePainter.cpp b/third_party/WebKit/Source/core/paint/NinePieceImagePainter.cpp index a963d65..8947ad8 100644 --- a/third_party/WebKit/Source/core/paint/NinePieceImagePainter.cpp +++ b/third_party/WebKit/Source/core/paint/NinePieceImagePainter.cpp
@@ -53,14 +53,11 @@ IntSize imageSize = m_layoutObject.calculateImageIntrinsicDimensions(styleImage, borderImageRect.size(), LayoutBoxModelObject::DoNotScaleByEffectiveZoom); - // If both values are 'auto' then the intrinsic width and/or height of the image should be used, if any. - styleImage->setContainerSizeForLayoutObject(&m_layoutObject, imageSize, style.effectiveZoom()); - IntRectOutsets borderWidths(style.borderTopWidth(), style.borderRightWidth(), style.borderBottomWidth(), style.borderLeftWidth()); NinePieceImageGrid grid(ninePieceImage, imageSize, borderImageRect, borderWidths); - RefPtr<Image> image = styleImage->image(&m_layoutObject, imageSize); + RefPtr<Image> image = styleImage->image(&m_layoutObject, imageSize, style.effectiveZoom()); InterpolationQuality interpolationQuality = BoxPainter::chooseInterpolationQuality(m_layoutObject, graphicsContext, image.get(), 0, rectWithOutsets.size());
diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.h b/third_party/WebKit/Source/core/paint/PaintLayer.h index 4b47a60..7a0ec3b 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayer.h +++ b/third_party/WebKit/Source/core/paint/PaintLayer.h
@@ -616,6 +616,9 @@ IntSize previousScrollOffsetAccumulationForPainting() const { return m_previousScrollOffsetAccumulationForPainting; } void setPreviousScrollOffsetAccumulationForPainting(const IntSize& s) { m_previousScrollOffsetAccumulationForPainting = s; } + ClipRects* previousPaintingClipRects() const { return m_previousPaintingClipRects.get(); } + void setPreviousPaintingClipRects(ClipRects* clipRects) { m_previousPaintingClipRects = clipRects; } + // For subsequence display items. DisplayItemClient displayItemClient() const { return toDisplayItemClient(this); } @@ -806,6 +809,7 @@ LayoutSize m_subpixelAccumulation; // The accumulated subpixel offset of a composited layer's composited bounds compared to absolute coordinates. IntSize m_previousScrollOffsetAccumulationForPainting; + RefPtr<ClipRects> m_previousPaintingClipRects; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp b/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp index 7bb1bae..0ff40ac 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp +++ b/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp
@@ -329,4 +329,12 @@ return true; } +ClipRects* PaintLayerClipper::paintingClipRects(const PaintLayer* rootLayer, ShouldRespectOverflowClip respectOverflowClip, const LayoutSize& subpixelAccumulation) const +{ + ClipRectsContext context(rootLayer, PaintingClipRects, IgnoreOverlayScrollbarSize, subpixelAccumulation); + if (respectOverflowClip == IgnoreOverflowClip) + context.setIgnoreOverflowClip(); + return getClipRects(context); +} + } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerClipper.h b/third_party/WebKit/Source/core/paint/PaintLayerClipper.h index 0c04bea8..b891d05 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerClipper.h +++ b/third_party/WebKit/Source/core/paint/PaintLayerClipper.h
@@ -167,6 +167,9 @@ // Pass offsetFromRoot if known. void calculateRects(const ClipRectsContext&, const LayoutRect& paintDirtyRect, LayoutRect& layerBounds, ClipRect& backgroundRect, ClipRect& foregroundRect, const LayoutPoint* offsetFromRoot = 0) const; + + ClipRects* paintingClipRects(const PaintLayer* rootLayer, ShouldRespectOverflowClip, const LayoutSize& subpixelAccumulation) const; + private: ClipRects* getClipRects(const ClipRectsContext&) const;
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp b/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp index 71cd3e2..edaa4dd 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp +++ b/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp
@@ -220,14 +220,29 @@ // Ensure our lists are up-to-date. m_paintLayer.stackingNode()->updateLayerListsIfNeeded(); + bool clipRectsChanged = false; + LayoutSize subpixelAccumulation = m_paintLayer.compositingState() == PaintsIntoOwnBacking ? m_paintLayer.subpixelAccumulation() : paintingInfoArg.subPixelAccumulation; + ShouldRespectOverflowClip respectOverflowClip = shouldRespectOverflowClip(paintFlags, m_paintLayer.layoutObject()); + if (paintFlags & PaintLayerUncachedClipRects) { + m_paintLayer.setPreviousPaintingClipRects(nullptr); + } else { + ClipRects* clipRects = m_paintLayer.clipper().paintingClipRects(paintingInfoArg.rootLayer, respectOverflowClip, subpixelAccumulation); + if (!m_paintLayer.needsRepaint()) { + ClipRects* previousClipRects = m_paintLayer.previousPaintingClipRects(); + if (clipRects != previousClipRects && (!clipRects || !previousClipRects || *clipRects != *previousClipRects)) + clipRectsChanged = true; + } + m_paintLayer.setPreviousPaintingClipRects(clipRects); + } + Optional<SubsequenceRecorder> subsequenceRecorder; - if (!paintingInfoArg.disableSubsequenceCache - && !context->printing() + if (!context->printing() && !(paintingInfoArg.globalPaintFlags() & GlobalPaintFlattenCompositingLayers) - && !(paintFlags & (PaintLayerPaintingReflection | PaintLayerPaintingRootBackgroundOnly | PaintLayerPaintingOverlayScrollbars)) + && !(paintFlags & (PaintLayerPaintingReflection | PaintLayerPaintingRootBackgroundOnly | PaintLayerPaintingOverlayScrollbars | PaintLayerUncachedClipRects)) && m_paintLayer.stackingNode()->isStackingContext() && PaintLayerStackingNodeIterator(*m_paintLayer.stackingNode(), AllChildren).next()) { if (!m_paintLayer.needsRepaint() + && !clipRectsChanged && paintingInfoArg.scrollOffsetAccumulation == m_paintLayer.previousScrollOffsetAccumulationForPainting() && SubsequenceRecorder::useCachedSubsequenceIfPossible(*context, m_paintLayer)) return result; @@ -236,22 +251,9 @@ PaintLayerPaintingInfo paintingInfo = paintingInfoArg; - // This is a workaround of ancestor clip change issue (crbug.com/533717). - // TODO(wangxianzhu): - // - spv1: This disables subsequence cache for all descendants of LayoutView with root-layer-scrolls because - // LayoutView has overflow clip. Should find another workaround method working with root-layer-scrolls - // if it ships before slimming paint v2. crbug.com/552030. - // - spv2: Ensure subsequence cache works with ancestor clip change. crbug.com/536138. - if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled() && m_paintLayer.layoutObject()->hasClipOrOverflowClip()) - paintingInfo.disableSubsequenceCache = true; - LayoutPoint offsetFromRoot; m_paintLayer.convertToLayerCoords(paintingInfo.rootLayer, offsetFromRoot); - - if (m_paintLayer.compositingState() == PaintsIntoOwnBacking) - offsetFromRoot.move(m_paintLayer.subpixelAccumulation()); - else - offsetFromRoot.move(paintingInfo.subPixelAccumulation); + offsetFromRoot.move(subpixelAccumulation); LayoutRect bounds = m_paintLayer.physicalBoundingBox(offsetFromRoot); if (!paintingInfo.paintDirtyRect.contains(bounds)) @@ -280,14 +282,12 @@ } PaintLayerPaintingInfo localPaintingInfo(paintingInfo); - if (m_paintLayer.compositingState() == PaintsIntoOwnBacking) - localPaintingInfo.subPixelAccumulation = m_paintLayer.subpixelAccumulation(); + localPaintingInfo.subPixelAccumulation = subpixelAccumulation; PaintLayerFragments layerFragments; if (shouldPaintContent || shouldPaintOutline || isPaintingOverlayScrollbars) { // Collect the fragments. This will compute the clip rectangles and paint offsets for each layer fragment. ClipRectsCacheSlot cacheSlot = (paintFlags & PaintLayerUncachedClipRects) ? UncachedClipRects : PaintingClipRects; - ShouldRespectOverflowClip respectOverflowClip = shouldRespectOverflowClip(paintFlags, m_paintLayer.layoutObject()); if (fragmentPolicy == ForceSingleFragment) m_paintLayer.appendSingleFragmentIgnoringPagination(layerFragments, localPaintingInfo.rootLayer, localPaintingInfo.paintDirtyRect, cacheSlot, IgnoreOverlayScrollbarSize, respectOverflowClip, &offsetFromRoot, localPaintingInfo.subPixelAccumulation); else
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp b/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp index 5b8c64a..ac451f00 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp +++ b/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp
@@ -35,7 +35,6 @@ "</div>"); document().view()->updateAllLifecyclePhases(); - bool rootLayerScrolls = document().frame()->settings()->rootLayerScrolls(); PaintLayer& rootLayer = *layoutView().layer(); PaintLayer& htmlLayer = *toLayoutBoxModelObject(document().documentElement()->layoutObject())->layer(); LayoutObject& container1 = *document().getElementById("container1")->layoutObject(); @@ -45,86 +44,53 @@ PaintLayer& container2Layer = *toLayoutBoxModelObject(container2).layer(); LayoutObject& content2 = *document().getElementById("content2")->layoutObject(); - if (rootLayerScrolls) { - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 7, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), backgroundType), - TestDisplayItem(container1, backgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container2, backgroundType), - TestDisplayItem(content2, backgroundType), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } else { - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), backgroundType), - TestDisplayItem(htmlLayer, DisplayItem::Subsequence), - TestDisplayItem(container1Layer, DisplayItem::Subsequence), - TestDisplayItem(container1, backgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), - TestDisplayItem(container2Layer, DisplayItem::Subsequence), - TestDisplayItem(container2, backgroundType), - TestDisplayItem(content2, backgroundType), - TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), - TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } + EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13, + TestDisplayItem(rootLayer, DisplayItem::Subsequence), + TestDisplayItem(layoutView(), backgroundType), + TestDisplayItem(htmlLayer, DisplayItem::Subsequence), + TestDisplayItem(container1Layer, DisplayItem::Subsequence), + TestDisplayItem(container1, backgroundType), + TestDisplayItem(content1, backgroundType), + TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), + TestDisplayItem(container2Layer, DisplayItem::Subsequence), + TestDisplayItem(container2, backgroundType), + TestDisplayItem(content2, backgroundType), + TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), + TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), + TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); toHTMLElement(content1.node())->setAttribute(HTMLNames::styleAttr, "position: absolute; width: 100px; height: 100px; background-color: green"); updateLifecyclePhasesBeforePaint(); paint(); - if (rootLayerScrolls) { - EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 7, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), cachedBackgroundType), - TestDisplayItem(container1, cachedBackgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container2, cachedBackgroundType), - TestDisplayItem(content2, cachedBackgroundType), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } else { - EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 10, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), cachedBackgroundType), - TestDisplayItem(htmlLayer, DisplayItem::Subsequence), - TestDisplayItem(container1Layer, DisplayItem::Subsequence), - TestDisplayItem(container1, cachedBackgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), - TestDisplayItem(container2Layer, DisplayItem::CachedSubsequence), - TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } + EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 10, + TestDisplayItem(rootLayer, DisplayItem::Subsequence), + TestDisplayItem(layoutView(), cachedBackgroundType), + TestDisplayItem(htmlLayer, DisplayItem::Subsequence), + TestDisplayItem(container1Layer, DisplayItem::Subsequence), + TestDisplayItem(container1, cachedBackgroundType), + TestDisplayItem(content1, backgroundType), + TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), + TestDisplayItem(container2Layer, DisplayItem::CachedSubsequence), + TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), + TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); commit(); - if (rootLayerScrolls) { - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 7, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), backgroundType), - TestDisplayItem(container1, backgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container2, backgroundType), - TestDisplayItem(content2, backgroundType), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } else { - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), backgroundType), - TestDisplayItem(htmlLayer, DisplayItem::Subsequence), - TestDisplayItem(container1Layer, DisplayItem::Subsequence), - TestDisplayItem(container1, backgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), - TestDisplayItem(container2Layer, DisplayItem::Subsequence), - TestDisplayItem(container2, backgroundType), - TestDisplayItem(content2, backgroundType), - TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), - TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } + EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13, + TestDisplayItem(rootLayer, DisplayItem::Subsequence), + TestDisplayItem(layoutView(), backgroundType), + TestDisplayItem(htmlLayer, DisplayItem::Subsequence), + TestDisplayItem(container1Layer, DisplayItem::Subsequence), + TestDisplayItem(container1, backgroundType), + TestDisplayItem(content1, backgroundType), + TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), + TestDisplayItem(container2Layer, DisplayItem::Subsequence), + TestDisplayItem(container2, backgroundType), + TestDisplayItem(content2, backgroundType), + TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), + TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), + TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); } TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange) @@ -144,7 +110,6 @@ "</div>"); rootPaintController().invalidateAll(); - bool rootLayerScrolls = document().frame()->settings()->rootLayerScrolls(); PaintLayer& rootLayer = *layoutView().layer(); PaintLayer& htmlLayer = *toLayoutBoxModelObject(document().documentElement()->layoutObject())->layer(); LayoutObject& container1 = *document().getElementById("container1")->layoutObject(); @@ -167,37 +132,24 @@ // Container2 is partly (including its stacking chidren) in the interest rect; // Content2b is out of the interest rect and output nothing; // Container3 is partly in the interest rect. - if (rootLayerScrolls) { - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 9, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), backgroundType), - TestDisplayItem(container1, backgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container2, backgroundType), - TestDisplayItem(content2a, backgroundType), - TestDisplayItem(container3, backgroundType), - TestDisplayItem(content3, backgroundType), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } else { - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 17, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), backgroundType), - TestDisplayItem(htmlLayer, DisplayItem::Subsequence), - TestDisplayItem(container1Layer, DisplayItem::Subsequence), - TestDisplayItem(container1, backgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), - TestDisplayItem(container2Layer, DisplayItem::Subsequence), - TestDisplayItem(container2, backgroundType), - TestDisplayItem(content2a, backgroundType), - TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), - TestDisplayItem(container3Layer, DisplayItem::Subsequence), - TestDisplayItem(container3, backgroundType), - TestDisplayItem(content3, backgroundType), - TestDisplayItem(container3Layer, DisplayItem::EndSubsequence), - TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } + EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 17, + TestDisplayItem(rootLayer, DisplayItem::Subsequence), + TestDisplayItem(layoutView(), backgroundType), + TestDisplayItem(htmlLayer, DisplayItem::Subsequence), + TestDisplayItem(container1Layer, DisplayItem::Subsequence), + TestDisplayItem(container1, backgroundType), + TestDisplayItem(content1, backgroundType), + TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), + TestDisplayItem(container2Layer, DisplayItem::Subsequence), + TestDisplayItem(container2, backgroundType), + TestDisplayItem(content2a, backgroundType), + TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), + TestDisplayItem(container3Layer, DisplayItem::Subsequence), + TestDisplayItem(container3, backgroundType), + TestDisplayItem(content3, backgroundType), + TestDisplayItem(container3Layer, DisplayItem::EndSubsequence), + TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), + TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); updateLifecyclePhasesBeforePaint(); IntRect newInterestRect(0, 100, 300, 1000); @@ -208,61 +160,36 @@ // Container2's intersection with the interest rect changes; // Content2b is out of the interest rect and outputs nothing; // Container3 becomes out of the interest rect and outputs nothing. - - if (rootLayerScrolls) { - EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 8, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), cachedBackgroundType), - TestDisplayItem(container1, cachedBackgroundType), - TestDisplayItem(content1, cachedBackgroundType), - TestDisplayItem(container2, cachedBackgroundType), - TestDisplayItem(content2a, cachedBackgroundType), - TestDisplayItem(content2b, backgroundType), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } else { - EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 11, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), cachedBackgroundType), - TestDisplayItem(htmlLayer, DisplayItem::Subsequence), - TestDisplayItem(container1Layer, DisplayItem::CachedSubsequence), - TestDisplayItem(container2Layer, DisplayItem::Subsequence), - TestDisplayItem(container2, cachedBackgroundType), - TestDisplayItem(content2a, cachedBackgroundType), - TestDisplayItem(content2b, backgroundType), - TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), - TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } + EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 11, + TestDisplayItem(rootLayer, DisplayItem::Subsequence), + TestDisplayItem(layoutView(), cachedBackgroundType), + TestDisplayItem(htmlLayer, DisplayItem::Subsequence), + TestDisplayItem(container1Layer, DisplayItem::CachedSubsequence), + TestDisplayItem(container2Layer, DisplayItem::Subsequence), + TestDisplayItem(container2, cachedBackgroundType), + TestDisplayItem(content2a, cachedBackgroundType), + TestDisplayItem(content2b, backgroundType), + TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), + TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), + TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); commit(); - if (rootLayerScrolls) { - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 8, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), backgroundType), - TestDisplayItem(container1, backgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container2, backgroundType), - TestDisplayItem(content2a, backgroundType), - TestDisplayItem(content2b, backgroundType), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } else { - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 14, - TestDisplayItem(rootLayer, DisplayItem::Subsequence), - TestDisplayItem(layoutView(), backgroundType), - TestDisplayItem(htmlLayer, DisplayItem::Subsequence), - TestDisplayItem(container1Layer, DisplayItem::Subsequence), - TestDisplayItem(container1, backgroundType), - TestDisplayItem(content1, backgroundType), - TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), - TestDisplayItem(container2Layer, DisplayItem::Subsequence), - TestDisplayItem(container2, backgroundType), - TestDisplayItem(content2a, backgroundType), - TestDisplayItem(content2b, backgroundType), - TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), - TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), - TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); - } + EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 14, + TestDisplayItem(rootLayer, DisplayItem::Subsequence), + TestDisplayItem(layoutView(), backgroundType), + TestDisplayItem(htmlLayer, DisplayItem::Subsequence), + TestDisplayItem(container1Layer, DisplayItem::Subsequence), + TestDisplayItem(container1, backgroundType), + TestDisplayItem(content1, backgroundType), + TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), + TestDisplayItem(container2Layer, DisplayItem::Subsequence), + TestDisplayItem(container2, backgroundType), + TestDisplayItem(content2a, backgroundType), + TestDisplayItem(content2b, backgroundType), + TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), + TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence), + TestDisplayItem(rootLayer, DisplayItem::EndSubsequence)); } } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerPaintingInfo.h b/third_party/WebKit/Source/core/paint/PaintLayerPaintingInfo.h index 05152e4..52849c5 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerPaintingInfo.h +++ b/third_party/WebKit/Source/core/paint/PaintLayerPaintingInfo.h
@@ -86,7 +86,6 @@ , subPixelAccumulation(inSubPixelAccumulation) , clipToDirtyRect(true) , ancestorHasClipPathClipping(false) - , disableSubsequenceCache(false) , m_globalPaintFlags(globalPaintFlags) { } @@ -100,8 +99,6 @@ IntSize scrollOffsetAccumulation; bool clipToDirtyRect; bool ancestorHasClipPathClipping; - // TODO(wangxianzhu): Remove for slimming paint v2. - bool disableSubsequenceCache; private: const GlobalPaintFlags m_globalPaintFlags;
diff --git a/third_party/WebKit/Source/core/paint/SVGImagePainter.cpp b/third_party/WebKit/Source/core/paint/SVGImagePainter.cpp index 1f1be38..fec17f7 100644 --- a/third_party/WebKit/Source/core/paint/SVGImagePainter.cpp +++ b/third_party/WebKit/Source/core/paint/SVGImagePainter.cpp
@@ -51,7 +51,12 @@ void SVGImagePainter::paintForeground(const PaintInfo& paintInfo) { - RefPtr<Image> image = m_layoutSVGImage.imageResource()->image(IntSize()); + const LayoutImageResource* imageResource = m_layoutSVGImage.imageResource(); + IntSize imageViewportSize = expandedIntSize(computeImageViewportSize()); + if (imageViewportSize.isEmpty()) + return; + + RefPtr<Image> image = imageResource->image(imageViewportSize, m_layoutSVGImage.style()->effectiveZoom()); FloatRect destRect = m_layoutSVGImage.objectBoundingBox(); FloatRect srcRect(0, 0, image->width(), image->height()); @@ -67,4 +72,24 @@ paintInfo.context->setImageInterpolationQuality(previousInterpolationQuality); } +FloatSize SVGImagePainter::computeImageViewportSize() const +{ + ASSERT(m_layoutSVGImage.imageResource()->hasImage()); + + if (toSVGImageElement(m_layoutSVGImage.element())->preserveAspectRatio()->currentValue()->align() != SVGPreserveAspectRatio::SVG_PRESERVEASPECTRATIO_NONE) + return m_layoutSVGImage.objectBoundingBox().size(); + + ImageResource* cachedImage = m_layoutSVGImage.imageResource()->cachedImage(); + + // Images with preserveAspectRatio=none should force non-uniform + // scaling. This can be achieved by setting the image's container size to + // its viewport size (i.e. if a viewBox is available - use that - else use intrinsic size.) + // See: http://www.w3.org/TR/SVG/single-page.html, 7.8 The 'preserveAspectRatio' attribute. + Length intrinsicWidth; + Length intrinsicHeight; + FloatSize intrinsicRatio; + cachedImage->computeIntrinsicDimensions(intrinsicWidth, intrinsicHeight, intrinsicRatio); + return intrinsicRatio; +} + } // namespace blink
diff --git a/third_party/WebKit/Source/core/paint/SVGImagePainter.h b/third_party/WebKit/Source/core/paint/SVGImagePainter.h index 3a2eeb4..a679f8b 100644 --- a/third_party/WebKit/Source/core/paint/SVGImagePainter.h +++ b/third_party/WebKit/Source/core/paint/SVGImagePainter.h
@@ -5,6 +5,7 @@ #ifndef SVGImagePainter_h #define SVGImagePainter_h +#include "platform/geometry/FloatSize.h" #include "wtf/Allocator.h" namespace blink { @@ -22,6 +23,7 @@ private: // Assumes the PaintInfo context has had all local transforms applied. void paintForeground(const PaintInfo&); + FloatSize computeImageViewportSize() const; const LayoutSVGImage& m_layoutSVGImage; };
diff --git a/third_party/WebKit/Source/core/style/StyleFetchedImage.cpp b/third_party/WebKit/Source/core/style/StyleFetchedImage.cpp index 63fc68a5..d92ac5c 100644 --- a/third_party/WebKit/Source/core/style/StyleFetchedImage.cpp +++ b/third_party/WebKit/Source/core/style/StyleFetchedImage.cpp
@@ -28,6 +28,7 @@ #include "core/fetch/ImageResource.h" #include "core/layout/LayoutObject.h" #include "core/svg/graphics/SVGImage.h" +#include "core/svg/graphics/SVGImageForContainer.h" namespace blink { @@ -104,11 +105,6 @@ return m_image->usesImageContainerSize(); } -void StyleFetchedImage::setContainerSizeForLayoutObject(const LayoutObject* layoutObject, const IntSize& imageContainerSize, float imageContainerZoomFactor) -{ - m_image->setContainerSizeForLayoutObject(layoutObject, imageContainerSize, imageContainerZoomFactor); -} - void StyleFetchedImage::addClient(LayoutObject* layoutObject) { m_image->addClient(layoutObject); @@ -127,9 +123,12 @@ m_document.clear(); } -PassRefPtr<Image> StyleFetchedImage::image(const LayoutObject* layoutObject, const IntSize&) const +PassRefPtr<Image> StyleFetchedImage::image(const LayoutObject*, const IntSize& containerSize, float zoom) const { - return m_image->imageForLayoutObject(layoutObject); + RefPtr<Image> image = m_image->image(); + if (image->isSVGImage()) + return SVGImageForContainer::create(toSVGImage(image.get()), containerSize, zoom); + return image; } bool StyleFetchedImage::knownToBeOpaque(const LayoutObject* layoutObject) const
diff --git a/third_party/WebKit/Source/core/style/StyleFetchedImage.h b/third_party/WebKit/Source/core/style/StyleFetchedImage.h index 9730098..2ee7d3e9 100644 --- a/third_party/WebKit/Source/core/style/StyleFetchedImage.h +++ b/third_party/WebKit/Source/core/style/StyleFetchedImage.h
@@ -55,12 +55,11 @@ bool imageHasRelativeHeight() const override; void computeIntrinsicDimensions(const LayoutObject*, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override; bool usesImageContainerSize() const override; - void setContainerSizeForLayoutObject(const LayoutObject*, const IntSize&, float) override; void addClient(LayoutObject*) override; void removeClient(LayoutObject*) override; void notifyFinished(Resource*) override; String debugName() const override { return "StyleFetchedImage"; } - PassRefPtr<Image> image(const LayoutObject*, const IntSize&) const override; + PassRefPtr<Image> image(const LayoutObject*, const IntSize&, float zoom) const override; bool knownToBeOpaque(const LayoutObject*) const override; ImageResource* cachedImage() const override;
diff --git a/third_party/WebKit/Source/core/style/StyleFetchedImageSet.cpp b/third_party/WebKit/Source/core/style/StyleFetchedImageSet.cpp index 035df772d..ee78108 100644 --- a/third_party/WebKit/Source/core/style/StyleFetchedImageSet.cpp +++ b/third_party/WebKit/Source/core/style/StyleFetchedImageSet.cpp
@@ -29,6 +29,7 @@ #include "core/css/CSSImageSetValue.h" #include "core/fetch/ImageResource.h" #include "core/layout/LayoutObject.h" +#include "core/svg/graphics/SVGImageForContainer.h" namespace blink { @@ -109,11 +110,6 @@ return m_bestFitImage->usesImageContainerSize(); } -void StyleFetchedImageSet::setContainerSizeForLayoutObject(const LayoutObject* layoutObject, const IntSize& imageContainerSize, float imageContainerZoomFactor) -{ - m_bestFitImage->setContainerSizeForLayoutObject(layoutObject, imageContainerSize, imageContainerZoomFactor); -} - void StyleFetchedImageSet::addClient(LayoutObject* layoutObject) { m_bestFitImage->addClient(layoutObject); @@ -124,9 +120,12 @@ m_bestFitImage->removeClient(layoutObject); } -PassRefPtr<Image> StyleFetchedImageSet::image(const LayoutObject* layoutObject, const IntSize&) const +PassRefPtr<Image> StyleFetchedImageSet::image(const LayoutObject*, const IntSize& containerSize, float zoom) const { - return m_bestFitImage->imageForLayoutObject(layoutObject); + RefPtr<Image> image = m_bestFitImage->image(); + if (image && image->isSVGImage()) + return SVGImageForContainer::create(toSVGImage(image.get()), containerSize, zoom); + return image; } bool StyleFetchedImageSet::knownToBeOpaque(const LayoutObject* layoutObject) const
diff --git a/third_party/WebKit/Source/core/style/StyleFetchedImageSet.h b/third_party/WebKit/Source/core/style/StyleFetchedImageSet.h index 21c20568..8625c40 100644 --- a/third_party/WebKit/Source/core/style/StyleFetchedImageSet.h +++ b/third_party/WebKit/Source/core/style/StyleFetchedImageSet.h
@@ -67,10 +67,9 @@ bool imageHasRelativeHeight() const override; void computeIntrinsicDimensions(const LayoutObject*, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override; bool usesImageContainerSize() const override; - void setContainerSizeForLayoutObject(const LayoutObject*, const IntSize&, float) override; void addClient(LayoutObject*) override; void removeClient(LayoutObject*) override; - PassRefPtr<Image> image(const LayoutObject*, const IntSize&) const override; + PassRefPtr<Image> image(const LayoutObject*, const IntSize&, float) const override; float imageScaleFactor() const override { return m_imageScaleFactor; } bool knownToBeOpaque(const LayoutObject*) const override; ImageResource* cachedImage() const override;
diff --git a/third_party/WebKit/Source/core/style/StyleGeneratedImage.cpp b/third_party/WebKit/Source/core/style/StyleGeneratedImage.cpp index 83d8ff59..4386981 100644 --- a/third_party/WebKit/Source/core/style/StyleGeneratedImage.cpp +++ b/third_party/WebKit/Source/core/style/StyleGeneratedImage.cpp
@@ -67,7 +67,7 @@ return LayoutSize(width, height); } - return LayoutSize(m_containerSize); + return LayoutSize(); } void StyleGeneratedImage::computeIntrinsicDimensions(const LayoutObject* layoutObject, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) @@ -89,7 +89,7 @@ m_imageGeneratorValue->removeClient(layoutObject); } -PassRefPtr<Image> StyleGeneratedImage::image(const LayoutObject* layoutObject, const IntSize& size) const +PassRefPtr<Image> StyleGeneratedImage::image(const LayoutObject* layoutObject, const IntSize& size, float) const { return m_imageGeneratorValue->image(layoutObject, size); }
diff --git a/third_party/WebKit/Source/core/style/StyleGeneratedImage.h b/third_party/WebKit/Source/core/style/StyleGeneratedImage.h index 712528b1..07bd5e2f 100644 --- a/third_party/WebKit/Source/core/style/StyleGeneratedImage.h +++ b/third_party/WebKit/Source/core/style/StyleGeneratedImage.h
@@ -49,10 +49,9 @@ bool imageHasRelativeHeight() const override { return !m_fixedSize; } void computeIntrinsicDimensions(const LayoutObject*, Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) override; bool usesImageContainerSize() const override { return !m_fixedSize; } - void setContainerSizeForLayoutObject(const LayoutObject*, const IntSize& containerSize, float) override { m_containerSize = containerSize; } void addClient(LayoutObject*) override; void removeClient(LayoutObject*) override; - PassRefPtr<Image> image(const LayoutObject*, const IntSize&) const override; + PassRefPtr<Image> image(const LayoutObject*, const IntSize&, float) const override; bool knownToBeOpaque(const LayoutObject*) const override; DECLARE_VIRTUAL_TRACE(); @@ -63,7 +62,6 @@ // TODO(sashab): Replace this with <const CSSImageGeneratorValue> once RefPtrWillBeMember<> // supports const types. RefPtrWillBeMember<CSSImageGeneratorValue> m_imageGeneratorValue; - IntSize m_containerSize; bool m_fixedSize; };
diff --git a/third_party/WebKit/Source/core/style/StyleImage.h b/third_party/WebKit/Source/core/style/StyleImage.h index 7f68d38..8d5df40 100644 --- a/third_party/WebKit/Source/core/style/StyleImage.h +++ b/third_party/WebKit/Source/core/style/StyleImage.h
@@ -61,10 +61,9 @@ virtual bool imageHasRelativeWidth() const = 0; virtual bool imageHasRelativeHeight() const = 0; virtual bool usesImageContainerSize() const = 0; - virtual void setContainerSizeForLayoutObject(const LayoutObject*, const IntSize&, float) = 0; virtual void addClient(LayoutObject*) = 0; virtual void removeClient(LayoutObject*) = 0; - virtual PassRefPtr<Image> image(const LayoutObject*, const IntSize&) const = 0; + virtual PassRefPtr<Image> image(const LayoutObject*, const IntSize&, float) const = 0; virtual WrappedImagePtr data() const = 0; virtual float imageScaleFactor() const { return 1; } virtual bool knownToBeOpaque(const LayoutObject*) const = 0;
diff --git a/third_party/WebKit/Source/core/style/StylePendingImage.h b/third_party/WebKit/Source/core/style/StylePendingImage.h index 458a732a..483f3b14 100644 --- a/third_party/WebKit/Source/core/style/StylePendingImage.h +++ b/third_party/WebKit/Source/core/style/StylePendingImage.h
@@ -66,10 +66,9 @@ bool imageHasRelativeHeight() const override { return false; } void computeIntrinsicDimensions(const LayoutObject*, Length& /* intrinsicWidth */ , Length& /* intrinsicHeight */, FloatSize& /* intrinsicRatio */) override { } bool usesImageContainerSize() const override { return false; } - void setContainerSizeForLayoutObject(const LayoutObject*, const IntSize&, float) override { } void addClient(LayoutObject*) override { } void removeClient(LayoutObject*) override { } - PassRefPtr<Image> image(const LayoutObject*, const IntSize&) const override + PassRefPtr<Image> image(const LayoutObject*, const IntSize&, float) const override { ASSERT_NOT_REACHED(); return nullptr;
diff --git a/third_party/WebKit/Source/core/svg/SVGFEImageElement.cpp b/third_party/WebKit/Source/core/svg/SVGFEImageElement.cpp index 440520d..ec9b5cc5 100644 --- a/third_party/WebKit/Source/core/svg/SVGFEImageElement.cpp +++ b/third_party/WebKit/Source/core/svg/SVGFEImageElement.cpp
@@ -162,7 +162,7 @@ if (m_cachedImage) { // Don't use the broken image icon on image loading errors. RefPtr<Image> image = m_cachedImage->errorOccurred() ? - nullptr : m_cachedImage->imageForLayoutObject(layoutObject()); + nullptr : m_cachedImage->image(); return FEImage::createWithImage(filter, image, m_preserveAspectRatio->currentValue()); }
diff --git a/third_party/WebKit/Source/core/svg/graphics/SVGImageForContainer.h b/third_party/WebKit/Source/core/svg/graphics/SVGImageForContainer.h index 23bbf30..2ea5975 100644 --- a/third_party/WebKit/Source/core/svg/graphics/SVGImageForContainer.h +++ b/third_party/WebKit/Source/core/svg/graphics/SVGImageForContainer.h
@@ -35,16 +35,16 @@ namespace blink { class SVGImageForContainer final : public Image { + USING_FAST_MALLOC(SVGImageForContainer); public: - static PassRefPtr<SVGImageForContainer> create(SVGImage* image, const FloatSize& containerSize, float zoom) + static PassRefPtr<SVGImageForContainer> create(SVGImage* image, const IntSize& containerSize, float zoom) { - return adoptRef(new SVGImageForContainer(image, containerSize, zoom)); + FloatSize containerSizeWithoutZoom(containerSize); + containerSizeWithoutZoom.scale(1 / zoom); + return adoptRef(new SVGImageForContainer(image, containerSizeWithoutZoom, zoom)); } - bool isSVGImage() const override { return true; } - IntSize size() const override; - void setURL(const KURL& url) { m_image->setURL(url); } bool usesContainerSize() const override { return m_image->usesContainerSize(); } bool hasRelativeWidth() const override { return m_image->hasRelativeWidth(); }
diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp index 14efa5d7..8badf1f 100644 --- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp +++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
@@ -191,8 +191,8 @@ { ExecutionContext* context = scriptState->executionContext(); DOMWrapperWorld& world = scriptState->world(); - RefPtr<SecurityOrigin> securityOrigin = world.isIsolatedWorld() ? world.isolatedWorldSecurityOrigin() : nullptr; - XMLHttpRequest* xmlHttpRequest = new XMLHttpRequest(context, securityOrigin); + RefPtr<SecurityOrigin> isolatedWorldSecurityOrigin = world.isIsolatedWorld() ? world.isolatedWorldSecurityOrigin() : nullptr; + XMLHttpRequest* xmlHttpRequest = new XMLHttpRequest(context, isolatedWorldSecurityOrigin); xmlHttpRequest->suspendIfNeeded(); return xmlHttpRequest; @@ -206,7 +206,7 @@ return xmlHttpRequest; } -XMLHttpRequest::XMLHttpRequest(ExecutionContext* context, PassRefPtr<SecurityOrigin> securityOrigin) +XMLHttpRequest::XMLHttpRequest(ExecutionContext* context, PassRefPtr<SecurityOrigin> isolatedWorldSecurityOrigin) : ActiveDOMObject(context) , m_timeoutMilliseconds(0) , m_state(UNSENT) @@ -215,7 +215,7 @@ , m_exceptionCode(0) , m_progressEventThrottle(XMLHttpRequestProgressEventThrottle::create(this)) , m_responseTypeCode(ResponseTypeDefault) - , m_securityOrigin(securityOrigin) + , m_isolatedWorldSecurityOrigin(isolatedWorldSecurityOrigin) , m_eventDispatchRecursionLevel(0) , m_async(true) , m_includeCredentials(false) @@ -246,7 +246,7 @@ SecurityOrigin* XMLHttpRequest::securityOrigin() const { - return m_securityOrigin ? m_securityOrigin.get() : executionContext()->securityOrigin(); + return m_isolatedWorldSecurityOrigin ? m_isolatedWorldSecurityOrigin.get() : executionContext()->securityOrigin(); } XMLHttpRequest::State XMLHttpRequest::readyState() const @@ -893,6 +893,7 @@ request.setHTTPMethod(m_method); request.setRequestContext(WebURLRequest::RequestContextXMLHttpRequest); request.setFetchCredentialsMode(m_includeCredentials ? WebURLRequest::FetchCredentialsModeInclude : WebURLRequest::FetchCredentialsModeSameOrigin); + request.setSkipServiceWorker(m_isolatedWorldSecurityOrigin); InspectorInstrumentation::willLoadXHR(&executionContext, this, this, m_method, m_url, m_async, httpBody ? httpBody->deepCopy() : nullptr, m_requestHeaders, m_includeCredentials);
diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h index a23597c..60c51e5 100644 --- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h +++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
@@ -293,7 +293,7 @@ // An enum corresponding to the allowed string values for the responseType attribute. ResponseTypeCode m_responseTypeCode; - RefPtr<SecurityOrigin> m_securityOrigin; + RefPtr<SecurityOrigin> m_isolatedWorldSecurityOrigin; // This blob loader will be used if |m_downloadingToFile| is true and // |m_responseTypeCode| is NOT ResponseTypeBlob.
diff --git a/third_party/WebKit/Source/modules/audio_output_devices/SetSinkIdCallbacks.h b/third_party/WebKit/Source/modules/audio_output_devices/SetSinkIdCallbacks.h index 1beddb6..fd25ea0b 100644 --- a/third_party/WebKit/Source/modules/audio_output_devices/SetSinkIdCallbacks.h +++ b/third_party/WebKit/Source/modules/audio_output_devices/SetSinkIdCallbacks.h
@@ -10,6 +10,7 @@ #include "public/platform/WebSetSinkIdCallbacks.h" #include "wtf/Noncopyable.h" #include "wtf/RefPtr.h" +#include "wtf/text/WTFString.h" namespace blink {
diff --git a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp index 5c309bf..9014e6a 100644 --- a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp +++ b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp
@@ -56,9 +56,9 @@ class FetchManager::Loader final : public GarbageCollectedFinalized<FetchManager::Loader>, public ThreadableLoaderClient, public ContextLifecycleObserver { WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(FetchManager::Loader); public: - static Loader* create(ExecutionContext* executionContext, FetchManager* fetchManager, ScriptPromiseResolver* resolver, FetchRequestData* request) + static Loader* create(ExecutionContext* executionContext, FetchManager* fetchManager, ScriptPromiseResolver* resolver, FetchRequestData* request, bool isIsolatedWorld) { - return new Loader(executionContext, fetchManager, resolver, request); + return new Loader(executionContext, fetchManager, resolver, request, isIsolatedWorld); } ~Loader() override; @@ -151,7 +151,7 @@ }; private: - Loader(ExecutionContext*, FetchManager*, ScriptPromiseResolver*, FetchRequestData*); + Loader(ExecutionContext*, FetchManager*, ScriptPromiseResolver*, FetchRequestData*, bool isIsolatedWorld); void performBasicFetch(); void performNetworkError(const String& message); @@ -171,9 +171,10 @@ int m_responseHttpStatusCode; Member<SRIVerifier> m_integrityVerifier; bool m_didFinishLoading; + bool m_isIsolatedWorld; }; -FetchManager::Loader::Loader(ExecutionContext* executionContext, FetchManager* fetchManager, ScriptPromiseResolver* resolver, FetchRequestData* request) +FetchManager::Loader::Loader(ExecutionContext* executionContext, FetchManager* fetchManager, ScriptPromiseResolver* resolver, FetchRequestData* request, bool isIsolatedWorld) : ContextLifecycleObserver(executionContext) , m_fetchManager(fetchManager) , m_resolver(resolver) @@ -183,6 +184,7 @@ , m_responseHttpStatusCode(0) , m_integrityVerifier(nullptr) , m_didFinishLoading(false) + , m_isIsolatedWorld(isIsolatedWorld) { } @@ -561,6 +563,7 @@ // referrer string (i.e. String()). request.setHTTPReferrer(SecurityPolicy::generateReferrer(policy, m_request->url(), m_request->referrerString())); } + request.setSkipServiceWorker(m_isIsolatedWorld); // "3. Append `Host`, ..." // FIXME: Implement this when the spec is fixed. @@ -691,7 +694,7 @@ request->setContext(WebURLRequest::RequestContextFetch); - Loader* loader = Loader::create(m_executionContext, this, resolver, request); + Loader* loader = Loader::create(m_executionContext, this, resolver, request, scriptState->world().isIsolatedWorld()); m_loaders.add(loader); loader->start(); return promise;
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp index cd4dd7e2..3531cba5 100644 --- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp +++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
@@ -829,7 +829,7 @@ if (isContextLost() || !image || !validateHTMLImageElement("texSubImage3D", image, exceptionState)) return; - RefPtr<Image> imageForRender = image->cachedImage()->imageForLayoutObject(image->layoutObject()); + RefPtr<Image> imageForRender = image->cachedImage()->image(); if (imageForRender->isSVGImage()) imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(), image->height(), "texSubImage3D");
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp index 2488559..ffcaded 100644 --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
@@ -4350,7 +4350,7 @@ type = GL_FLOAT; } - RefPtr<Image> imageForRender = image->cachedImage()->imageForLayoutObject(image->layoutObject()); + RefPtr<Image> imageForRender = image->cachedImage()->image(); if (imageForRender && imageForRender->isSVGImage()) imageForRender = drawImageIntoBuffer(imageForRender.release(), image->width(), image->height(), "texImage2D"); @@ -4676,7 +4676,7 @@ type = GL_FLOAT; } - RefPtr<Image> imageForRender = image->cachedImage()->imageForLayoutObject(image->layoutObject()); + RefPtr<Image> imageForRender = image->cachedImage()->image(); if (imageForRender && imageForRender->isSVGImage()) imageForRender = drawImageIntoBuffer(imageForRender.release(), image->width(), image->height(), "texSubImage2D");
diff --git a/third_party/WebKit/Source/platform/PartitionAllocMemoryDumpProvider.cpp b/third_party/WebKit/Source/platform/PartitionAllocMemoryDumpProvider.cpp index 895108d..f18f6a5 100644 --- a/third_party/WebKit/Source/platform/PartitionAllocMemoryDumpProvider.cpp +++ b/third_party/WebKit/Source/platform/PartitionAllocMemoryDumpProvider.cpp
@@ -8,6 +8,7 @@ #include "public/platform/WebMemoryAllocatorDump.h" #include "public/platform/WebProcessMemoryDump.h" #include "wtf/Partitions.h" +#include "wtf/text/WTFString.h" namespace blink {
diff --git a/third_party/WebKit/Source/platform/PurgeableVector.cpp b/third_party/WebKit/Source/platform/PurgeableVector.cpp index 19376a0..3e791fd 100644 --- a/third_party/WebKit/Source/platform/PurgeableVector.cpp +++ b/third_party/WebKit/Source/platform/PurgeableVector.cpp
@@ -37,6 +37,7 @@ #include "wtf/Assertions.h" #include "wtf/OwnPtr.h" #include "wtf/PassOwnPtr.h" +#include "wtf/text/WTFString.h" #include <cstring>
diff --git a/third_party/WebKit/Source/platform/exported/WebRTCSessionDescriptionRequest.cpp b/third_party/WebKit/Source/platform/exported/WebRTCSessionDescriptionRequest.cpp index e1b6686..6c3629d 100644 --- a/third_party/WebKit/Source/platform/exported/WebRTCSessionDescriptionRequest.cpp +++ b/third_party/WebKit/Source/platform/exported/WebRTCSessionDescriptionRequest.cpp
@@ -35,6 +35,7 @@ #include "platform/mediastream/RTCSessionDescriptionRequest.h" #include "public/platform/WebRTCSessionDescription.h" #include "wtf/PassOwnPtr.h" +#include "wtf/text/WTFString.h" namespace blink {
diff --git a/third_party/WebKit/Source/platform/exported/WebRTCVoidRequest.cpp b/third_party/WebKit/Source/platform/exported/WebRTCVoidRequest.cpp index 09330107..0bcf8bd 100644 --- a/third_party/WebKit/Source/platform/exported/WebRTCVoidRequest.cpp +++ b/third_party/WebKit/Source/platform/exported/WebRTCVoidRequest.cpp
@@ -34,6 +34,7 @@ #include "platform/mediastream/RTCVoidRequest.h" #include "wtf/PassOwnPtr.h" +#include "wtf/text/WTFString.h" namespace blink {
diff --git a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp index 738c142..93f225da 100644 --- a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp +++ b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
@@ -528,7 +528,7 @@ // Invalidate texture state in case the compositor altered it since the copy-on-write. if (releasedMailboxInfo->m_image) { if (mailbox.validSyncToken) { - context()->waitSyncTokenCHROMIUM(mailbox.syncToken); + context()->waitSyncToken(mailbox.syncToken); } GrTexture* texture = releasedMailboxInfo->m_image->getTexture(); if (texture) {
diff --git a/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp b/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp index 750610420..de389a89 100644 --- a/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp +++ b/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp
@@ -207,12 +207,11 @@ // Contexts may be in a different share group. We must transfer the texture through a mailbox first sharedContext->genMailboxCHROMIUM(mailbox->name); sharedContext->produceTextureDirectCHROMIUM(textureId, GL_TEXTURE_2D, mailbox->name); - const WGC3Duint64 sharedFenceSync = sharedContext->insertFenceSyncCHROMIUM(); sharedContext->flush(); - mailbox->validSyncToken = sharedContext->genSyncTokenCHROMIUM(sharedFenceSync, mailbox->syncToken); + mailbox->validSyncToken = sharedContext->insertSyncPoint(mailbox->syncToken); if (mailbox->validSyncToken) - context->waitSyncTokenCHROMIUM(mailbox->syncToken); + context->waitSyncToken(mailbox->syncToken); Platform3DObject sourceTexture = context->createAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox->name); @@ -222,13 +221,11 @@ context->deleteTexture(sourceTexture); - const WGC3Duint64 contextFenceSync = context->insertFenceSyncCHROMIUM(); - context->flush(); WGC3Dbyte syncToken[24]; - if (context->genSyncTokenCHROMIUM(contextFenceSync, syncToken)) - sharedContext->waitSyncTokenCHROMIUM(syncToken); + if (context->insertSyncPoint(syncToken)) + sharedContext->waitSyncToken(syncToken); // Undo grContext texture binding changes introduced in this function provider->grContext()->resetContext(kTextureBinding_GrGLBackendState);
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp index 16d54fd..c8b928e 100644 --- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp +++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp
@@ -312,9 +312,8 @@ m_contentsChanged = false; m_context->produceTextureDirectCHROMIUM(frontColorBufferMailbox->textureInfo.textureId, GL_TEXTURE_2D, frontColorBufferMailbox->mailbox.name); - const WGC3Duint64 fenceSync = m_context->insertFenceSyncCHROMIUM(); m_context->flush(); - frontColorBufferMailbox->mailbox.validSyncToken = m_context->genSyncTokenCHROMIUM(fenceSync, frontColorBufferMailbox->mailbox.syncToken); + frontColorBufferMailbox->mailbox.validSyncToken = m_context->insertSyncPoint(frontColorBufferMailbox->mailbox.syncToken); frontColorBufferMailbox->mailbox.allowOverlay = frontColorBufferMailbox->textureInfo.imageId != 0; setBufferClearNeeded(true); @@ -379,7 +378,7 @@ ASSERT(mailboxInfo); if (mailboxInfo->mailbox.validSyncToken) { - m_context->waitSyncTokenCHROMIUM(mailboxInfo->mailbox.syncToken); + m_context->waitSyncToken(mailboxInfo->mailbox.syncToken); mailboxInfo->mailbox.validSyncToken = false; } @@ -407,7 +406,7 @@ for (size_t i = 0; i < m_textureMailboxes.size(); i++) { if (nameEquals(m_textureMailboxes[i]->mailbox, mailbox)) { if (mailbox.validSyncToken) - m_context->waitSyncTokenCHROMIUM(mailbox.syncToken); + m_context->waitSyncToken(mailbox.syncToken); deleteChromiumImageForTexture(&m_textureMailboxes[i]->textureInfo); @@ -514,13 +513,11 @@ textureId = m_colorBuffer.textureId; m_context->genMailboxCHROMIUM(mailbox.name); m_context->produceTextureDirectCHROMIUM(textureId, GL_TEXTURE_2D, mailbox.name); - const WGC3Duint64 fenceSync = m_context->insertFenceSyncCHROMIUM(); m_context->flush(); - mailbox.validSyncToken = m_context->genSyncTokenCHROMIUM(fenceSync, mailbox.syncToken); + mailbox.validSyncToken = m_context->insertSyncPoint(mailbox.syncToken); } - if (mailbox.validSyncToken) - context->waitSyncTokenCHROMIUM(mailbox.syncToken); + context->waitSyncToken(mailbox.syncToken); Platform3DObject sourceTexture = context->createAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); GLboolean unpackPremultiplyAlphaNeeded = GL_FALSE; @@ -534,12 +531,10 @@ context->deleteTexture(sourceTexture); - const WGC3Duint64 fenceSync = context->insertFenceSyncCHROMIUM(); - context->flush(); GLbyte syncToken[24]; - if (context->genSyncTokenCHROMIUM(fenceSync, syncToken)) - m_context->waitSyncTokenCHROMIUM(syncToken); + if (context->insertSyncPoint(syncToken)) + m_context->waitSyncToken(syncToken); return true; }
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp index ccb6f561c..ace81a1 100644 --- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp +++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
@@ -91,19 +91,15 @@ return m_mostRecentlyProducedSize; } - WGC3Duint64 insertFenceSyncCHROMIUM() override + bool insertSyncPoint(WGC3Dbyte* syncToken) override { - static WGC3Duint64 syncPointGenerator = 0; - return ++syncPointGenerator; - } - - bool genSyncTokenCHROMIUM(WGC3Duint64 fenceSync, WGC3Dbyte* syncToken) override - { - memcpy(syncToken, &fenceSync, sizeof(fenceSync)); + static WGC3Duint syncPointGenerator = 0; + WGC3Duint newSyncPoint = ++syncPointGenerator; + memcpy(syncToken, &newSyncPoint, sizeof(newSyncPoint)); return true; } - void waitSyncTokenCHROMIUM(const WGC3Dbyte* syncToken) override + void waitSyncToken(const WGC3Dbyte* syncToken) override { memcpy(&m_mostRecentlyWaitedSyncToken, syncToken, sizeof(m_mostRecentlyWaitedSyncToken)); } @@ -405,8 +401,8 @@ // prepareMailbox() does not wait for any sync point. EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); - WGC3Duint64 waitSyncToken = 0; - webContext()->genSyncTokenCHROMIUM(webContext()->insertFenceSyncCHROMIUM(), reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); + WGC3Duint waitSyncToken = 0; + webContext()->insertSyncPoint(reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); mailbox.validSyncToken = true; m_drawingBuffer->mailboxReleased(mailbox, false); @@ -419,7 +415,7 @@ EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); m_drawingBuffer->beginDestruction(); - webContext()->genSyncTokenCHROMIUM(webContext()->insertFenceSyncCHROMIUM(), reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); + webContext()->insertSyncPoint(reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); mailbox.validSyncToken = true; m_drawingBuffer->mailboxReleased(mailbox, false); @@ -650,7 +646,7 @@ m_drawingBuffer->markContentsChanged(); EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); - mailbox.validSyncToken = webContext()->genSyncTokenCHROMIUM(webContext()->insertFenceSyncCHROMIUM(), mailbox.syncToken); + mailbox.validSyncToken = webContext()->insertSyncPoint(mailbox.syncToken); m_drawingBuffer->setIsHidden(true); m_drawingBuffer->mailboxReleased(mailbox); // m_drawingBuffer deletes mailbox immediately when hidden.
diff --git a/third_party/WebKit/Source/platform/heap/ThreadState.h b/third_party/WebKit/Source/platform/heap/ThreadState.h index e8b1a0c3..17bb942 100644 --- a/third_party/WebKit/Source/platform/heap/ThreadState.h +++ b/third_party/WebKit/Source/platform/heap/ThreadState.h
@@ -44,7 +44,6 @@ #include "wtf/ThreadSpecific.h" #include "wtf/Threading.h" #include "wtf/ThreadingPrimitives.h" -#include "wtf/text/WTFString.h" namespace v8 { class Isolate;
diff --git a/third_party/WebKit/Source/platform/heap/Visitor.h b/third_party/WebKit/Source/platform/heap/Visitor.h index 0c6d21c6..a32b7c9 100644 --- a/third_party/WebKit/Source/platform/heap/Visitor.h +++ b/third_party/WebKit/Source/platform/heap/Visitor.h
@@ -43,7 +43,6 @@ #include "wtf/HashTraits.h" #include "wtf/InstanceCounter.h" #include "wtf/TypeTraits.h" -#include "wtf/text/WTFString.h" namespace blink {
diff --git a/third_party/WebKit/Source/platform/network/HTTPParsers.cpp b/third_party/WebKit/Source/platform/network/HTTPParsers.cpp index 9ac24844..e043166 100644 --- a/third_party/WebKit/Source/platform/network/HTTPParsers.cpp +++ b/third_party/WebKit/Source/platform/network/HTTPParsers.cpp
@@ -158,14 +158,6 @@ return true; } -static const size_t maxInputSampleSize = 128; -static String trimInputSample(const char* p, size_t length) -{ - if (length > maxInputSampleSize) - return String(p, maxInputSampleSize) + horizontalEllipsisCharacter; - return String(p, length); -} - ContentDispositionType contentDispositionType(const String& contentDisposition) { if (contentDisposition.isEmpty()) @@ -264,39 +256,6 @@ return parseDateFromNullTerminatedCharacters(value.utf8().data()); } -// FIXME: This function doesn't comply with RFC 6266. -// For example, this function doesn't handle the interaction between " and ; -// that arises from quoted-string, nor does this function properly unquote -// attribute values. Further this function appears to process parameter names -// in a case-sensitive manner. (There are likely other bugs as well.) -String filenameFromHTTPContentDisposition(const String& value) -{ - Vector<String> keyValuePairs; - value.split(';', keyValuePairs); - - unsigned length = keyValuePairs.size(); - for (unsigned i = 0; i < length; i++) { - size_t valueStartPos = keyValuePairs[i].find('='); - if (valueStartPos == kNotFound) - continue; - - String key = keyValuePairs[i].left(valueStartPos).stripWhiteSpace(); - - if (key.isEmpty() || key != "filename") - continue; - - String value = keyValuePairs[i].substring(valueStartPos + 1).stripWhiteSpace(); - - // Remove quotes if there are any - if (value[0] == '\"') - value = value.substring(1, value.length() - 2); - - return value; - } - - return String(); -} - AtomicString extractMIMETypeFromMediaType(const AtomicString& mediaType) { StringBuilder mimeType; @@ -479,14 +438,6 @@ return ContentTypeOptionsNone; } -String extractReasonPhraseFromHTTPStatusLine(const String& statusLine) -{ - size_t spacePos = statusLine.find(' '); - // Remove status code from the status line. - spacePos = statusLine.find(' ', spacePos + 1); - return statusLine.substring(spacePos + 1); -} - XFrameOptionsDisposition parseXFrameOptionsHeader(const String& header) { XFrameOptionsDisposition result = XFrameOptionsNone; @@ -517,229 +468,6 @@ return result; } -bool parseRange(const String& range, long long& rangeOffset, long long& rangeEnd, long long& rangeSuffixLength) -{ - // The format of "Range" header is defined in RFC 2616 Section 14.35.1. - // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1 - // We don't support multiple range requests. - - rangeOffset = rangeEnd = rangeSuffixLength = -1; - - // The "bytes" unit identifier should be present. - static const char bytesStart[] = "bytes="; - if (!range.startsWith(bytesStart, TextCaseInsensitive)) - return false; - String byteRange = range.substring(sizeof(bytesStart) - 1); - - // The '-' character needs to be present. - int index = byteRange.find('-'); - if (index == -1) - return false; - - // If the '-' character is at the beginning, the suffix length, which specifies the last N bytes, is provided. - // Example: - // -500 - if (!index) { - String suffixLengthString = byteRange.substring(index + 1).stripWhiteSpace(); - bool ok; - long long value = suffixLengthString.toInt64Strict(&ok); - if (ok) - rangeSuffixLength = value; - return true; - } - - // Otherwise, the first-byte-position and the last-byte-position are provied. - // Examples: - // 0-499 - // 500- - String firstBytePosStr = byteRange.left(index).stripWhiteSpace(); - bool ok; - long long firstBytePos = firstBytePosStr.toInt64Strict(&ok); - if (!ok) - return false; - - String lastBytePosStr = byteRange.substring(index + 1).stripWhiteSpace(); - long long lastBytePos = -1; - if (!lastBytePosStr.isEmpty()) { - lastBytePos = lastBytePosStr.toInt64Strict(&ok); - if (!ok) - return false; - } - - if (firstBytePos < 0 || !(lastBytePos == -1 || lastBytePos >= firstBytePos)) - return false; - - rangeOffset = firstBytePos; - rangeEnd = lastBytePos; - return true; -} - -// HTTP/1.1 - RFC 2616 -// http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1 -// Request-Line = Method SP Request-URI SP HTTP-Version CRLF -size_t parseHTTPRequestLine(const char* data, size_t length, String& failureReason, String& method, String& url, HTTPVersion& httpVersion) -{ - method = String(); - url = String(); - httpVersion = Unknown; - - const char* space1 = 0; - const char* space2 = 0; - const char* p; - size_t consumedLength; - - for (p = data, consumedLength = 0; consumedLength < length; p++, consumedLength++) { - if (*p == ' ') { - if (!space1) - space1 = p; - else if (!space2) - space2 = p; - } else if (*p == '\n') { - break; - } - } - - // Haven't finished header line. - if (consumedLength == length) { - failureReason = "Incomplete Request Line"; - return 0; - } - - // RequestLine does not contain 3 parts. - if (!space1 || !space2) { - failureReason = "Request Line does not appear to contain: <Method> <Url> <HTTPVersion>."; - return 0; - } - - // The line must end with "\r\n". - const char* end = p + 1; - if (*(end - 2) != '\r') { - failureReason = "Request line does not end with CRLF"; - return 0; - } - - // Request Method. - method = String(data, space1 - data); // For length subtract 1 for space, but add 1 for data being the first character. - - // Request URI. - url = String(space1 + 1, space2 - space1 - 1); // For length subtract 1 for space. - - // HTTP Version. - String httpVersionString(space2 + 1, end - space2 - 3); // For length subtract 1 for space, and 2 for "\r\n". - if (httpVersionString.length() != 8 || !httpVersionString.startsWith("HTTP/1.")) - httpVersion = Unknown; - else if (httpVersionString[7] == '0') - httpVersion = HTTP_1_0; - else if (httpVersionString[7] == '1') - httpVersion = HTTP_1_1; - else - httpVersion = Unknown; - - return end - data; -} - -static bool parseHTTPHeaderName(const char* s, size_t start, size_t size, String& failureReason, size_t* position, AtomicString* name) -{ - size_t nameBegin = start; - for (size_t i = start; i < size; ++i) { - switch (s[i]) { - case '\r': - failureReason = "Unexpected CR in name at " + trimInputSample(&s[nameBegin], i - nameBegin); - return false; - case '\n': - failureReason = "Unexpected LF in name at " + trimInputSample(&s[nameBegin], i - nameBegin); - return false; - case ':': - if (i == nameBegin) { - failureReason = "Header name is missing"; - return false; - } - *name = AtomicString::fromUTF8(&s[nameBegin], i - nameBegin); - if (name->isNull()) { - failureReason = "Invalid UTF-8 sequence in header name"; - return false; - } - *position = i; - return true; - default: - break; - } - } - failureReason = "Unterminated header name"; - return false; -} - -static bool parseHTTPHeaderValue(const char* s, size_t start, size_t size, String& failureReason, size_t* position, AtomicString* value) -{ - size_t i = start; - for (; i < size && s[i] == ' '; ++i) { - } - size_t valueBegin = i; - - for (; i < size && s[i] != '\r'; ++i) { - if (s[i] == '\n') { - failureReason = "Unexpected LF in value at " + trimInputSample(&s[valueBegin], i - valueBegin); - return false; - } - } - if (i == size) { - failureReason = "Unterminated header value"; - return false; - } - - ASSERT(i < size && s[i] == '\r'); - if (i + 1 >= size || s[i + 1] != '\n') { - failureReason = "LF doesn't follow CR after value at " + trimInputSample(&s[i + 1], size - i - 1); - return false; - } - - *value = AtomicString::fromUTF8(&s[valueBegin], i - valueBegin); - if (i != valueBegin && value->isNull()) { - failureReason = "Invalid UTF-8 sequence in header value"; - return false; - } - - // 2 for strlen("\r\n") - *position = i + 2; - return true; -} - -// Note that the header is already parsed and re-formatted in chromium side. -// We assume that the input is more restricted than RFC2616. -size_t parseHTTPHeader(const char* s, size_t size, String& failureReason, AtomicString& name, AtomicString& value) -{ - name = nullAtom; - value = nullAtom; - if (size >= 1 && s[0] == '\r') { - if (size >= 2 && s[1] == '\n') { - // Skip an empty line. - return 2; - } - failureReason = "LF doesn't follow CR at " + trimInputSample(0, size); - return 0; - } - size_t current = 0; - if (!parseHTTPHeaderName(s, current, size, failureReason, ¤t, &name)) { - return 0; - } - ASSERT(s[current] == ':'); - ++current; - - if (!parseHTTPHeaderValue(s, current, size, failureReason, ¤t, &value)) { - return 0; - } - - return current; -} - -size_t parseHTTPRequestBody(const char* data, size_t length, Vector<unsigned char>& body) -{ - body.clear(); - body.append(data, length); - - return length; -} - static bool isCacheHeaderSeparator(UChar c) { // See RFC 2616, Section 2.2
diff --git a/third_party/WebKit/Source/platform/network/HTTPParsers.h b/third_party/WebKit/Source/platform/network/HTTPParsers.h index 04dbc29..3a0708e 100644 --- a/third_party/WebKit/Source/platform/network/HTTPParsers.h +++ b/third_party/WebKit/Source/platform/network/HTTPParsers.h
@@ -96,27 +96,16 @@ PLATFORM_EXPORT bool isValidHTTPToken(const String&); PLATFORM_EXPORT bool parseHTTPRefresh(const String& refresh, bool fromHttpEquivMeta, double& delay, String& url); PLATFORM_EXPORT double parseDate(const String&); -PLATFORM_EXPORT String filenameFromHTTPContentDisposition(const String&); PLATFORM_EXPORT AtomicString extractMIMETypeFromMediaType(const AtomicString&); PLATFORM_EXPORT String extractCharsetFromMediaType(const String&); PLATFORM_EXPORT void findCharsetInMediaType(const String& mediaType, unsigned& charsetPos, unsigned& charsetLen, unsigned start = 0); PLATFORM_EXPORT ReflectedXSSDisposition parseXSSProtectionHeader(const String& header, String& failureReason, unsigned& failurePosition, String& reportURL); -PLATFORM_EXPORT String extractReasonPhraseFromHTTPStatusLine(const String&); PLATFORM_EXPORT XFrameOptionsDisposition parseXFrameOptionsHeader(const String&); PLATFORM_EXPORT CacheControlHeader parseCacheControlDirectives(const AtomicString& cacheControlHeader, const AtomicString& pragmaHeader); PLATFORM_EXPORT void parseCommaDelimitedHeader(const String& headerValue, CommaDelimitedHeaderSet&); -// -1 could be set to one of the return parameters to indicate the value is not specified. -PLATFORM_EXPORT bool parseRange(const String&, long long& rangeOffset, long long& rangeEnd, long long& rangeSuffixLength); - PLATFORM_EXPORT ContentTypeOptionsDisposition parseContentTypeOptionsHeader(const String& header); -// Parsing Complete HTTP Messages. -enum HTTPVersion { Unknown, HTTP_1_0, HTTP_1_1 }; -PLATFORM_EXPORT size_t parseHTTPRequestLine(const char* data, size_t length, String& failureReason, String& method, String& url, HTTPVersion&); -PLATFORM_EXPORT size_t parseHTTPHeader(const char* data, size_t length, String& failureReason, AtomicString& nameStr, AtomicString& valueStr); -PLATFORM_EXPORT size_t parseHTTPRequestBody(const char* data, size_t length, Vector<unsigned char>& body); - } #endif
diff --git a/third_party/WebKit/Source/platform/network/HTTPParsersTest.cpp b/third_party/WebKit/Source/platform/network/HTTPParsersTest.cpp index 09d551d5..a95d0cd8 100644 --- a/third_party/WebKit/Source/platform/network/HTTPParsersTest.cpp +++ b/third_party/WebKit/Source/platform/network/HTTPParsersTest.cpp
@@ -11,15 +11,6 @@ namespace blink { -namespace { - -size_t parseHTTPHeader(const char* data, String& failureReason, AtomicString& nameStr, AtomicString& valueStr) -{ - return blink::parseHTTPHeader(data, strlen(data), failureReason, nameStr, valueStr); -} - -} // namespace - TEST(HTTPParsersTest, ParseCacheControl) { CacheControlHeader header; @@ -102,125 +93,6 @@ EXPECT_TRUE(std::isnan(header.maxAge)); } -TEST(HTTPParsersTest, parseHTTPHeaderSimple) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(12u, parseHTTPHeader("foo: bar\r\notherdata", failureReason, name, value)); - EXPECT_TRUE(failureReason.isEmpty()); - EXPECT_EQ("foo", name.string()); - EXPECT_EQ("bar", value.string()); -} - -TEST(HTTPParsersTest, parseHTTPHeaderEmptyName) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader(": bar\r\notherdata", failureReason, name, value)); - EXPECT_EQ("Header name is missing", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderEmptyValue) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(7u, parseHTTPHeader("foo: \r\notherdata", failureReason, name, value)); - EXPECT_TRUE(failureReason.isEmpty()); - EXPECT_EQ("foo", name.string()); - EXPECT_TRUE(value.isEmpty()); -} - -TEST(HTTPParsersTest, parseHTTPHeaderInvalidName) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader("\xfa: \r\notherdata", failureReason, name, value)); - EXPECT_EQ("Invalid UTF-8 sequence in header name", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderInvalidValue) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader("foo: \xfa\r\notherdata", failureReason, name, value)); - EXPECT_EQ("Invalid UTF-8 sequence in header value", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderEmpty) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader("", failureReason, name, value)); - EXPECT_EQ("Unterminated header name", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderEmptyLine) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(2u, parseHTTPHeader("\r\notherdata", failureReason, name, value)); - EXPECT_TRUE(failureReason.isEmpty()); - EXPECT_TRUE(name.isNull()); - EXPECT_TRUE(value.isNull()); -} - -TEST(HTTPParsersTest, parseHTTPHeaderUnexpectedCRinName) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader("foo\rotherdata\n", failureReason, name, value)); - EXPECT_EQ("Unexpected CR in name at foo", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderUnexpectedLFinName) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader("foo\notherdata\n", failureReason, name, value)); - EXPECT_EQ("Unexpected LF in name at foo", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderUnexpectedLFinValue) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader("foo: bar\notherdata\n", failureReason, name, value)); - EXPECT_EQ("Unexpected LF in value at bar", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderNoLFAtEndOfLine) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader("foo: bar\r", failureReason, name, value)); - EXPECT_EQ("LF doesn't follow CR after value at ", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderNoLF) -{ - String failureReason; - AtomicString name, value; - EXPECT_EQ(0u, parseHTTPHeader("foo: bar\rhoge\r\n", failureReason, name, value)); - EXPECT_EQ("LF doesn't follow CR after value at hoge\r\n", failureReason); -} - -TEST(HTTPParsersTest, parseHTTPHeaderTwoLines) -{ - const char data[] = "foo: bar\r\nhoge: fuga\r\nxxx"; - String failureReason; - AtomicString name, value; - - EXPECT_EQ(10u, parseHTTPHeader(data, failureReason, name, value)); - EXPECT_TRUE(failureReason.isEmpty()); - EXPECT_EQ("foo", name.string()); - EXPECT_EQ("bar", value.string()); - - EXPECT_EQ(12u, parseHTTPHeader(data + 10, failureReason, name, value)); - EXPECT_TRUE(failureReason.isEmpty()); - EXPECT_EQ("hoge", name.string()); - EXPECT_EQ("fuga", value.string()); -} - TEST(HTTPParsersTest, CommaDelimitedHeaderSet) { CommaDelimitedHeaderSet set1; @@ -263,4 +135,3 @@ } } // namespace blink -
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.cpp b/third_party/WebKit/Source/web/ChromeClientImpl.cpp index cb3e93d..5488a95 100644 --- a/third_party/WebKit/Source/web/ChromeClientImpl.cpp +++ b/third_party/WebKit/Source/web/ChromeClientImpl.cpp
@@ -122,6 +122,7 @@ ChromeClientImpl::ChromeClientImpl(WebViewImpl* webView) : m_webView(webView) , m_cursorOverridden(false) + , m_didRequestNonEmptyToolTip(false) { } @@ -576,8 +577,17 @@ void ChromeClientImpl::setToolTip(const String& tooltipText, TextDirection dir) { - if (m_webView->client()) + if (!m_webView->client()) + return; + if (!tooltipText.isEmpty()) { m_webView->client()->setToolTipText(tooltipText, toWebTextDirection(dir)); + m_didRequestNonEmptyToolTip = true; + } else if (m_didRequestNonEmptyToolTip) { + // WebViewClient::setToolTipText will send an IPC message. We'd like to + // reduce the number of setToolTipText calls. + m_webView->client()->setToolTipText(tooltipText, toWebTextDirection(dir)); + m_didRequestNonEmptyToolTip = false; + } } void ChromeClientImpl::dispatchViewportPropertiesDidChange(const ViewportDescription& description) const
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.h b/third_party/WebKit/Source/web/ChromeClientImpl.h index 9324144..ea028bcb 100644 --- a/third_party/WebKit/Source/web/ChromeClientImpl.h +++ b/third_party/WebKit/Source/web/ChromeClientImpl.h
@@ -190,6 +190,7 @@ Vector<PopupOpeningObserver*> m_popupOpeningObservers; Cursor m_lastSetMouseCursorForTesting; bool m_cursorOverridden; + bool m_didRequestNonEmptyToolTip; }; DEFINE_TYPE_CASTS(ChromeClientImpl, ChromeClient, client, client->isChromeClientImpl(), client.isChromeClientImpl());
diff --git a/third_party/WebKit/Source/wtf/Atomics.h b/third_party/WebKit/Source/wtf/Atomics.h index 09b707e..cdd631ef 100644 --- a/third_party/WebKit/Source/wtf/Atomics.h +++ b/third_party/WebKit/Source/wtf/Atomics.h
@@ -319,17 +319,6 @@ return value; } -ALWAYS_INLINE void noBarrierStore(volatile int* ptr, int value) -{ - *ptr = value; -} - -ALWAYS_INLINE int noBarrierLoad(volatile const int* ptr) -{ - int value = *ptr; - return value; -} - #if defined(ADDRESS_SANITIZER) NO_SANITIZE_ADDRESS ALWAYS_INLINE void asanUnsafeReleaseStore(volatile unsigned* ptr, unsigned value)
diff --git a/third_party/WebKit/Source/wtf/SpinLock.cpp b/third_party/WebKit/Source/wtf/SpinLock.cpp index f958c0fb..0b5586e 100644 --- a/third_party/WebKit/Source/wtf/SpinLock.cpp +++ b/third_party/WebKit/Source/wtf/SpinLock.cpp
@@ -62,13 +62,13 @@ for (int count = 0; count < kYieldProcessorTries; ++count) { // Let the Processor know we're spinning. YIELD_PROCESSOR; - if (!noBarrierLoad(lock) && LIKELY(!atomicTestAndSetToOne(lock))) + if (!*lock && LIKELY(!atomicTestAndSetToOne(lock))) return; } // Give the OS a chance to schedule something on this core. YIELD_THREAD; - } while (noBarrierLoad(lock)); + } while (*lock); } while (UNLIKELY(atomicTestAndSetToOne(lock))); }
diff --git a/third_party/WebKit/Tools/Scripts/check-blink-deps b/third_party/WebKit/Tools/Scripts/check-blink-deps deleted file mode 100755 index e360a97..0000000 --- a/third_party/WebKit/Tools/Scripts/check-blink-deps +++ /dev/null
@@ -1,53 +0,0 @@ -#!/usr/bin/env python -# Copyright (C) 2013 Google Inc. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"""A utility script for running Chromium's dependency checker script on Blink.""" - -import os -import subprocess -import sys - -def show_help(): - print 'Usage: %s [dir=Source]' % os.path.basename(sys.argv[0]) - -def main(): - start_dir = None - if len(sys.argv) > 1: - start_dir = sys.argv[1] - - if start_dir == '--help': - show_help() - return - - root_dir = os.path.realpath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) - if not start_dir: - start_dir = os.path.join(root_dir, 'Source') - - check_deps = os.path.realpath(os.path.join(root_dir, os.pardir, os.pardir, 'buildtools', 'checkdeps', 'checkdeps.py')) - subprocess.call([sys.executable, check_deps, '--root', root_dir, start_dir]) - -if '__main__' == __name__: - main()
diff --git a/third_party/WebKit/public/platform/WebGraphicsContext3D.h b/third_party/WebKit/public/platform/WebGraphicsContext3D.h index f4fcb933..5c4d0460 100644 --- a/third_party/WebKit/public/platform/WebGraphicsContext3D.h +++ b/third_party/WebKit/public/platform/WebGraphicsContext3D.h
@@ -148,9 +148,8 @@ virtual void discardBackbufferCHROMIUM() { } virtual void ensureBackbufferCHROMIUM() { } - virtual WGC3Duint64 insertFenceSyncCHROMIUM() { return 0; } - virtual bool genSyncTokenCHROMIUM(WGC3Duint64, WGC3Dbyte*) { return false; } - virtual void waitSyncTokenCHROMIUM(const WGC3Dbyte*) {} + virtual bool insertSyncPoint(WGC3Dbyte*) { return false; } + virtual void waitSyncToken(const WGC3Dbyte*) {} // Copies the contents of the off-screen render target used by the WebGL // context to the corresponding texture used by the compositor.
diff --git a/third_party/boringssl/BUILD.gn b/third_party/boringssl/BUILD.gn index 914af59..f4114d9 100644 --- a/third_party/boringssl/BUILD.gn +++ b/third_party/boringssl/BUILD.gn
@@ -6,10 +6,10 @@ # Config for us and everybody else depending on BoringSSL. config("openssl_config") { - include_dirs = [] - include_dirs += [ "src/include" ] + defines = [ "OPENSSL_SMALL" ] + include_dirs = [ "src/include" ] if (is_component_build) { - defines = [ "BORINGSSL_SHARED_LIBRARY" ] + defines += [ "BORINGSSL_SHARED_LIBRARY" ] } }
diff --git a/third_party/boringssl/boringssl.gyp b/third_party/boringssl/boringssl.gyp index 724be078..19456fc 100644 --- a/third_party/boringssl/boringssl.gyp +++ b/third_party/boringssl/boringssl.gyp
@@ -17,7 +17,6 @@ 'defines': [ 'BORINGSSL_IMPLEMENTATION', 'BORINGSSL_NO_STATIC_INITIALIZER', - 'OPENSSL_SMALL', ], # TODO(davidben): Fix size_t truncations in BoringSSL. # https://crbug.com/429039 @@ -102,6 +101,9 @@ 'src/include', ], 'direct_dependent_settings': { + 'defines': [ + 'OPENSSL_SMALL', + ], 'include_dirs': [ 'src/include', ],
diff --git a/third_party/boringssl/boringssl.gypi b/third_party/boringssl/boringssl.gypi index 19484fb..c3ffa5b4 100644 --- a/third_party/boringssl/boringssl.gypi +++ b/third_party/boringssl/boringssl.gypi
@@ -133,6 +133,7 @@ 'src/crypto/cpu-arm.c', 'src/crypto/cpu-intel.c', 'src/crypto/crypto.c', + 'src/crypto/curve25519/curve25519.c', 'src/crypto/des/des.c', 'src/crypto/dh/check.c', 'src/crypto/dh/dh.c',
diff --git a/third_party/boringssl/boringssl_tests.gypi b/third_party/boringssl/boringssl_tests.gypi index a8642478..ebf81c03 100644 --- a/third_party/boringssl/boringssl_tests.gypi +++ b/third_party/boringssl/boringssl_tests.gypi
@@ -133,6 +133,34 @@ 'msvs_disabled_warnings': [ 4267, ], }, { + 'target_name': 'boringssl_ed25519_test', + 'type': 'executable', + 'dependencies': [ + 'boringssl.gyp:boringssl', + ], + 'sources': [ + 'src/crypto/curve25519/ed25519_test.cc', + '<@(boringssl_test_support_sources)', + ], + # TODO(davidben): Fix size_t truncations in BoringSSL. + # https://crbug.com/429039 + 'msvs_disabled_warnings': [ 4267, ], + }, + { + 'target_name': 'boringssl_x25519_test', + 'type': 'executable', + 'dependencies': [ + 'boringssl.gyp:boringssl', + ], + 'sources': [ + 'src/crypto/curve25519/x25519_test.cc', + '<@(boringssl_test_support_sources)', + ], + # TODO(davidben): Fix size_t truncations in BoringSSL. + # https://crbug.com/429039 + 'msvs_disabled_warnings': [ 4267, ], + }, + { 'target_name': 'boringssl_dh_test', 'type': 'executable', 'dependencies': [ @@ -504,6 +532,7 @@ 'boringssl_dsa_test', 'boringssl_ec_test', 'boringssl_ecdsa_test', + 'boringssl_ed25519_test', 'boringssl_err_test', 'boringssl_evp_extra_test', 'boringssl_evp_test', @@ -524,6 +553,7 @@ 'boringssl_tab_test', 'boringssl_thread_test', 'boringssl_v3name_test', + 'boringssl_x25519_test', ], } }
diff --git a/third_party/boringssl/boringssl_unittest.cc b/third_party/boringssl/boringssl_unittest.cc index 8538c69f..a299dec 100644 --- a/third_party/boringssl/boringssl_unittest.cc +++ b/third_party/boringssl/boringssl_unittest.cc
@@ -200,6 +200,19 @@ TestSimple("ecdsa_test"); } +TEST(BoringSSL, ED25519) { + base::FilePath data_file; + ASSERT_TRUE(BoringSSLPath(&data_file)); + data_file = data_file.Append(FILE_PATH_LITERAL("crypto")); + data_file = data_file.Append(FILE_PATH_LITERAL("curve25519")); + data_file = data_file.Append(FILE_PATH_LITERAL("ed25519_tests.txt")); + + std::vector<base::CommandLine::StringType> args; + args.push_back(data_file.value()); + + TestProcess("ed25519_test", args); +} + TEST(BoringSSL, ERR) { TestSimple("err_test"); } @@ -306,3 +319,7 @@ TEST(BoringSSL, V3NameTest) { TestSimple("v3name_test"); } + +TEST(BoringSSL, X25519) { + TestSimple("x25519_test"); +}
diff --git a/third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S b/third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S index 0a43989..d955d82 100644 --- a/third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S +++ b/third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S
@@ -6,7 +6,7 @@ .text .code 32 -#ifdef __APPLE__ +#ifdef __clang__ #define ldrplb ldrbpl #define ldrneb ldrbne #endif
diff --git a/third_party/boringssl/linux-x86/crypto/sha/sha1-586.S b/third_party/boringssl/linux-x86/crypto/sha/sha1-586.S index dd86f31f..58d0bc1 100644 --- a/third_party/boringssl/linux-x86/crypto/sha/sha1-586.S +++ b/third_party/boringssl/linux-x86/crypto/sha/sha1-586.S
@@ -23,6 +23,11 @@ movl 8(%esi),%ecx testl $16777216,%eax jz .L001x86 + andl $268435456,%edx + andl $1073741824,%eax + orl %edx,%eax + cmpl $1342177280,%eax + je .Lavx_shortcut jmp .Lssse3_shortcut .align 16 .L001x86: @@ -2611,6 +2616,1177 @@ popl %ebp ret .size _sha1_block_data_order_ssse3,.-_sha1_block_data_order_ssse3 +.hidden _sha1_block_data_order_avx +.type _sha1_block_data_order_avx,@function +.align 16 +_sha1_block_data_order_avx: + pushl %ebp + pushl %ebx + pushl %esi + pushl %edi + call .L006pic_point +.L006pic_point: + popl %ebp + leal .LK_XX_XX-.L006pic_point(%ebp),%ebp +.Lavx_shortcut: + vzeroall + vmovdqa (%ebp),%xmm7 + vmovdqa 16(%ebp),%xmm0 + vmovdqa 32(%ebp),%xmm1 + vmovdqa 48(%ebp),%xmm2 + vmovdqa 64(%ebp),%xmm6 + movl 20(%esp),%edi + movl 24(%esp),%ebp + movl 28(%esp),%edx + movl %esp,%esi + subl $208,%esp + andl $-64,%esp + vmovdqa %xmm0,112(%esp) + vmovdqa %xmm1,128(%esp) + vmovdqa %xmm2,144(%esp) + shll $6,%edx + vmovdqa %xmm7,160(%esp) + addl %ebp,%edx + vmovdqa %xmm6,176(%esp) + addl $64,%ebp + movl %edi,192(%esp) + movl %ebp,196(%esp) + movl %edx,200(%esp) + movl %esi,204(%esp) + movl (%edi),%eax + movl 4(%edi),%ebx + movl 8(%edi),%ecx + movl 12(%edi),%edx + movl 16(%edi),%edi + movl %ebx,%esi + vmovdqu -64(%ebp),%xmm0 + vmovdqu -48(%ebp),%xmm1 + vmovdqu -32(%ebp),%xmm2 + vmovdqu -16(%ebp),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + vpshufb %xmm6,%xmm1,%xmm1 + vpshufb %xmm6,%xmm2,%xmm2 + vmovdqa %xmm7,96(%esp) + vpshufb %xmm6,%xmm3,%xmm3 + vpaddd %xmm7,%xmm0,%xmm4 + vpaddd %xmm7,%xmm1,%xmm5 + vpaddd %xmm7,%xmm2,%xmm6 + vmovdqa %xmm4,(%esp) + movl %ecx,%ebp + vmovdqa %xmm5,16(%esp) + xorl %edx,%ebp + vmovdqa %xmm6,32(%esp) + andl %ebp,%esi + jmp .L007loop +.align 16 +.L007loop: + shrdl $2,%ebx,%ebx + xorl %edx,%esi + vpalignr $8,%xmm0,%xmm1,%xmm4 + movl %eax,%ebp + addl (%esp),%edi + vpaddd %xmm3,%xmm7,%xmm7 + vmovdqa %xmm0,64(%esp) + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrldq $4,%xmm3,%xmm6 + addl %esi,%edi + andl %ebx,%ebp + vpxor %xmm0,%xmm4,%xmm4 + xorl %ecx,%ebx + addl %eax,%edi + vpxor %xmm2,%xmm6,%xmm6 + shrdl $7,%eax,%eax + xorl %ecx,%ebp + vmovdqa %xmm7,48(%esp) + movl %edi,%esi + addl 4(%esp),%edx + vpxor %xmm6,%xmm4,%xmm4 + xorl %ebx,%eax + shldl $5,%edi,%edi + addl %ebp,%edx + andl %eax,%esi + vpsrld $31,%xmm4,%xmm6 + xorl %ebx,%eax + addl %edi,%edx + shrdl $7,%edi,%edi + xorl %ebx,%esi + vpslldq $12,%xmm4,%xmm0 + vpaddd %xmm4,%xmm4,%xmm4 + movl %edx,%ebp + addl 8(%esp),%ecx + xorl %eax,%edi + shldl $5,%edx,%edx + vpsrld $30,%xmm0,%xmm7 + vpor %xmm6,%xmm4,%xmm4 + addl %esi,%ecx + andl %edi,%ebp + xorl %eax,%edi + addl %edx,%ecx + vpslld $2,%xmm0,%xmm0 + shrdl $7,%edx,%edx + xorl %eax,%ebp + vpxor %xmm7,%xmm4,%xmm4 + movl %ecx,%esi + addl 12(%esp),%ebx + xorl %edi,%edx + shldl $5,%ecx,%ecx + vpxor %xmm0,%xmm4,%xmm4 + addl %ebp,%ebx + andl %edx,%esi + vmovdqa 96(%esp),%xmm0 + xorl %edi,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %edi,%esi + vpalignr $8,%xmm1,%xmm2,%xmm5 + movl %ebx,%ebp + addl 16(%esp),%eax + vpaddd %xmm4,%xmm0,%xmm0 + vmovdqa %xmm1,80(%esp) + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrldq $4,%xmm4,%xmm7 + addl %esi,%eax + andl %ecx,%ebp + vpxor %xmm1,%xmm5,%xmm5 + xorl %edx,%ecx + addl %ebx,%eax + vpxor %xmm3,%xmm7,%xmm7 + shrdl $7,%ebx,%ebx + xorl %edx,%ebp + vmovdqa %xmm0,(%esp) + movl %eax,%esi + addl 20(%esp),%edi + vpxor %xmm7,%xmm5,%xmm5 + xorl %ecx,%ebx + shldl $5,%eax,%eax + addl %ebp,%edi + andl %ebx,%esi + vpsrld $31,%xmm5,%xmm7 + xorl %ecx,%ebx + addl %eax,%edi + shrdl $7,%eax,%eax + xorl %ecx,%esi + vpslldq $12,%xmm5,%xmm1 + vpaddd %xmm5,%xmm5,%xmm5 + movl %edi,%ebp + addl 24(%esp),%edx + xorl %ebx,%eax + shldl $5,%edi,%edi + vpsrld $30,%xmm1,%xmm0 + vpor %xmm7,%xmm5,%xmm5 + addl %esi,%edx + andl %eax,%ebp + xorl %ebx,%eax + addl %edi,%edx + vpslld $2,%xmm1,%xmm1 + shrdl $7,%edi,%edi + xorl %ebx,%ebp + vpxor %xmm0,%xmm5,%xmm5 + movl %edx,%esi + addl 28(%esp),%ecx + xorl %eax,%edi + shldl $5,%edx,%edx + vpxor %xmm1,%xmm5,%xmm5 + addl %ebp,%ecx + andl %edi,%esi + vmovdqa 112(%esp),%xmm1 + xorl %eax,%edi + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + vpalignr $8,%xmm2,%xmm3,%xmm6 + movl %ecx,%ebp + addl 32(%esp),%ebx + vpaddd %xmm5,%xmm1,%xmm1 + vmovdqa %xmm2,96(%esp) + xorl %edi,%edx + shldl $5,%ecx,%ecx + vpsrldq $4,%xmm5,%xmm0 + addl %esi,%ebx + andl %edx,%ebp + vpxor %xmm2,%xmm6,%xmm6 + xorl %edi,%edx + addl %ecx,%ebx + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%ecx,%ecx + xorl %edi,%ebp + vmovdqa %xmm1,16(%esp) + movl %ebx,%esi + addl 36(%esp),%eax + vpxor %xmm0,%xmm6,%xmm6 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + addl %ebp,%eax + andl %ecx,%esi + vpsrld $31,%xmm6,%xmm0 + xorl %edx,%ecx + addl %ebx,%eax + shrdl $7,%ebx,%ebx + xorl %edx,%esi + vpslldq $12,%xmm6,%xmm2 + vpaddd %xmm6,%xmm6,%xmm6 + movl %eax,%ebp + addl 40(%esp),%edi + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm1 + vpor %xmm0,%xmm6,%xmm6 + addl %esi,%edi + andl %ebx,%ebp + xorl %ecx,%ebx + addl %eax,%edi + vpslld $2,%xmm2,%xmm2 + vmovdqa 64(%esp),%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%ebp + vpxor %xmm1,%xmm6,%xmm6 + movl %edi,%esi + addl 44(%esp),%edx + xorl %ebx,%eax + shldl $5,%edi,%edi + vpxor %xmm2,%xmm6,%xmm6 + addl %ebp,%edx + andl %eax,%esi + vmovdqa 112(%esp),%xmm2 + xorl %ebx,%eax + addl %edi,%edx + shrdl $7,%edi,%edi + xorl %ebx,%esi + vpalignr $8,%xmm3,%xmm4,%xmm7 + movl %edx,%ebp + addl 48(%esp),%ecx + vpaddd %xmm6,%xmm2,%xmm2 + vmovdqa %xmm3,64(%esp) + xorl %eax,%edi + shldl $5,%edx,%edx + vpsrldq $4,%xmm6,%xmm1 + addl %esi,%ecx + andl %edi,%ebp + vpxor %xmm3,%xmm7,%xmm7 + xorl %eax,%edi + addl %edx,%ecx + vpxor %xmm5,%xmm1,%xmm1 + shrdl $7,%edx,%edx + xorl %eax,%ebp + vmovdqa %xmm2,32(%esp) + movl %ecx,%esi + addl 52(%esp),%ebx + vpxor %xmm1,%xmm7,%xmm7 + xorl %edi,%edx + shldl $5,%ecx,%ecx + addl %ebp,%ebx + andl %edx,%esi + vpsrld $31,%xmm7,%xmm1 + xorl %edi,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %edi,%esi + vpslldq $12,%xmm7,%xmm3 + vpaddd %xmm7,%xmm7,%xmm7 + movl %ebx,%ebp + addl 56(%esp),%eax + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm2 + vpor %xmm1,%xmm7,%xmm7 + addl %esi,%eax + andl %ecx,%ebp + xorl %edx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + vmovdqa 80(%esp),%xmm1 + shrdl $7,%ebx,%ebx + xorl %edx,%ebp + vpxor %xmm2,%xmm7,%xmm7 + movl %eax,%esi + addl 60(%esp),%edi + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpxor %xmm3,%xmm7,%xmm7 + addl %ebp,%edi + andl %ebx,%esi + vmovdqa 112(%esp),%xmm3 + xorl %ecx,%ebx + addl %eax,%edi + vpalignr $8,%xmm6,%xmm7,%xmm2 + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%esi + movl %edi,%ebp + addl (%esp),%edx + vpxor %xmm1,%xmm0,%xmm0 + vmovdqa %xmm4,80(%esp) + xorl %ebx,%eax + shldl $5,%edi,%edi + vmovdqa %xmm3,%xmm4 + vpaddd %xmm7,%xmm3,%xmm3 + addl %esi,%edx + andl %eax,%ebp + vpxor %xmm2,%xmm0,%xmm0 + xorl %ebx,%eax + addl %edi,%edx + shrdl $7,%edi,%edi + xorl %ebx,%ebp + vpsrld $30,%xmm0,%xmm2 + vmovdqa %xmm3,48(%esp) + movl %edx,%esi + addl 4(%esp),%ecx + xorl %eax,%edi + shldl $5,%edx,%edx + vpslld $2,%xmm0,%xmm0 + addl %ebp,%ecx + andl %edi,%esi + xorl %eax,%edi + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + movl %ecx,%ebp + addl 8(%esp),%ebx + vpor %xmm2,%xmm0,%xmm0 + xorl %edi,%edx + shldl $5,%ecx,%ecx + vmovdqa 96(%esp),%xmm2 + addl %esi,%ebx + andl %edx,%ebp + xorl %edi,%edx + addl %ecx,%ebx + addl 12(%esp),%eax + xorl %edi,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm7,%xmm0,%xmm3 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + vpxor %xmm2,%xmm1,%xmm1 + vmovdqa %xmm5,96(%esp) + addl %esi,%edi + xorl %ecx,%ebp + vmovdqa %xmm4,%xmm5 + vpaddd %xmm0,%xmm4,%xmm4 + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpxor %xmm3,%xmm1,%xmm1 + addl 20(%esp),%edx + xorl %ebx,%ebp + movl %edi,%esi + shldl $5,%edi,%edi + vpsrld $30,%xmm1,%xmm3 + vmovdqa %xmm4,(%esp) + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + vpslld $2,%xmm1,%xmm1 + addl 24(%esp),%ecx + xorl %eax,%esi + movl %edx,%ebp + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%ebp + shrdl $7,%edi,%edi + addl %edx,%ecx + vpor %xmm3,%xmm1,%xmm1 + addl 28(%esp),%ebx + xorl %edi,%ebp + vmovdqa 64(%esp),%xmm3 + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpalignr $8,%xmm0,%xmm1,%xmm4 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%esp),%eax + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + vpxor %xmm3,%xmm2,%xmm2 + vmovdqa %xmm6,64(%esp) + addl %esi,%eax + xorl %edx,%ebp + vmovdqa 128(%esp),%xmm6 + vpaddd %xmm1,%xmm5,%xmm5 + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpxor %xmm4,%xmm2,%xmm2 + addl 36(%esp),%edi + xorl %ecx,%ebp + movl %eax,%esi + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm4 + vmovdqa %xmm5,16(%esp) + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpslld $2,%xmm2,%xmm2 + addl 40(%esp),%edx + xorl %ebx,%esi + movl %edi,%ebp + shldl $5,%edi,%edi + addl %esi,%edx + xorl %ebx,%ebp + shrdl $7,%eax,%eax + addl %edi,%edx + vpor %xmm4,%xmm2,%xmm2 + addl 44(%esp),%ecx + xorl %eax,%ebp + vmovdqa 80(%esp),%xmm4 + movl %edx,%esi + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + vpalignr $8,%xmm1,%xmm2,%xmm5 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + vpxor %xmm4,%xmm3,%xmm3 + vmovdqa %xmm7,80(%esp) + addl %esi,%ebx + xorl %edi,%ebp + vmovdqa %xmm6,%xmm7 + vpaddd %xmm2,%xmm6,%xmm6 + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpxor %xmm5,%xmm3,%xmm3 + addl 52(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm5 + vmovdqa %xmm6,32(%esp) + addl %ebp,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + addl 56(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + addl %esi,%edi + xorl %ecx,%ebp + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpor %xmm5,%xmm3,%xmm3 + addl 60(%esp),%edx + xorl %ebx,%ebp + vmovdqa 96(%esp),%xmm5 + movl %edi,%esi + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + vpalignr $8,%xmm2,%xmm3,%xmm6 + vpxor %xmm0,%xmm4,%xmm4 + addl (%esp),%ecx + xorl %eax,%esi + movl %edx,%ebp + shldl $5,%edx,%edx + vpxor %xmm5,%xmm4,%xmm4 + vmovdqa %xmm0,96(%esp) + addl %esi,%ecx + xorl %eax,%ebp + vmovdqa %xmm7,%xmm0 + vpaddd %xmm3,%xmm7,%xmm7 + shrdl $7,%edi,%edi + addl %edx,%ecx + vpxor %xmm6,%xmm4,%xmm4 + addl 4(%esp),%ebx + xorl %edi,%ebp + movl %ecx,%esi + shldl $5,%ecx,%ecx + vpsrld $30,%xmm4,%xmm6 + vmovdqa %xmm7,48(%esp) + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpslld $2,%xmm4,%xmm4 + addl 8(%esp),%eax + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%ebp + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpor %xmm6,%xmm4,%xmm4 + addl 12(%esp),%edi + xorl %ecx,%ebp + vmovdqa 64(%esp),%xmm6 + movl %eax,%esi + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpalignr $8,%xmm3,%xmm4,%xmm7 + vpxor %xmm1,%xmm5,%xmm5 + addl 16(%esp),%edx + xorl %ebx,%esi + movl %edi,%ebp + shldl $5,%edi,%edi + vpxor %xmm6,%xmm5,%xmm5 + vmovdqa %xmm1,64(%esp) + addl %esi,%edx + xorl %ebx,%ebp + vmovdqa %xmm0,%xmm1 + vpaddd %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + addl %edi,%edx + vpxor %xmm7,%xmm5,%xmm5 + addl 20(%esp),%ecx + xorl %eax,%ebp + movl %edx,%esi + shldl $5,%edx,%edx + vpsrld $30,%xmm5,%xmm7 + vmovdqa %xmm0,(%esp) + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + vpslld $2,%xmm5,%xmm5 + addl 24(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpor %xmm7,%xmm5,%xmm5 + addl 28(%esp),%eax + vmovdqa 80(%esp),%xmm7 + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%ebp + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm4,%xmm5,%xmm0 + vpxor %xmm2,%xmm6,%xmm6 + addl 32(%esp),%edi + andl %ecx,%esi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vpxor %xmm7,%xmm6,%xmm6 + vmovdqa %xmm2,80(%esp) + movl %eax,%ebp + xorl %ecx,%esi + vmovdqa %xmm1,%xmm2 + vpaddd %xmm5,%xmm1,%xmm1 + shldl $5,%eax,%eax + addl %esi,%edi + vpxor %xmm0,%xmm6,%xmm6 + xorl %ebx,%ebp + xorl %ecx,%ebx + addl %eax,%edi + addl 36(%esp),%edx + vpsrld $30,%xmm6,%xmm0 + vmovdqa %xmm1,16(%esp) + andl %ebx,%ebp + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %edi,%esi + vpslld $2,%xmm6,%xmm6 + xorl %ebx,%ebp + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %edi,%edx + addl 40(%esp),%ecx + andl %eax,%esi + vpor %xmm0,%xmm6,%xmm6 + xorl %ebx,%eax + shrdl $7,%edi,%edi + vmovdqa 96(%esp),%xmm0 + movl %edx,%ebp + xorl %eax,%esi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %edi,%ebp + xorl %eax,%edi + addl %edx,%ecx + addl 44(%esp),%ebx + andl %edi,%ebp + xorl %eax,%edi + shrdl $7,%edx,%edx + movl %ecx,%esi + xorl %edi,%ebp + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edx,%esi + xorl %edi,%edx + addl %ecx,%ebx + vpalignr $8,%xmm5,%xmm6,%xmm1 + vpxor %xmm3,%xmm7,%xmm7 + addl 48(%esp),%eax + andl %edx,%esi + xorl %edi,%edx + shrdl $7,%ecx,%ecx + vpxor %xmm0,%xmm7,%xmm7 + vmovdqa %xmm3,96(%esp) + movl %ebx,%ebp + xorl %edx,%esi + vmovdqa 144(%esp),%xmm3 + vpaddd %xmm6,%xmm2,%xmm2 + shldl $5,%ebx,%ebx + addl %esi,%eax + vpxor %xmm1,%xmm7,%xmm7 + xorl %ecx,%ebp + xorl %edx,%ecx + addl %ebx,%eax + addl 52(%esp),%edi + vpsrld $30,%xmm7,%xmm1 + vmovdqa %xmm2,32(%esp) + andl %ecx,%ebp + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + vpslld $2,%xmm7,%xmm7 + xorl %ecx,%ebp + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%edi + addl 56(%esp),%edx + andl %ebx,%esi + vpor %xmm1,%xmm7,%xmm7 + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vmovdqa 64(%esp),%xmm1 + movl %edi,%ebp + xorl %ebx,%esi + shldl $5,%edi,%edi + addl %esi,%edx + xorl %eax,%ebp + xorl %ebx,%eax + addl %edi,%edx + addl 60(%esp),%ecx + andl %eax,%ebp + xorl %ebx,%eax + shrdl $7,%edi,%edi + movl %edx,%esi + xorl %eax,%ebp + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %edi,%esi + xorl %eax,%edi + addl %edx,%ecx + vpalignr $8,%xmm6,%xmm7,%xmm2 + vpxor %xmm4,%xmm0,%xmm0 + addl (%esp),%ebx + andl %edi,%esi + xorl %eax,%edi + shrdl $7,%edx,%edx + vpxor %xmm1,%xmm0,%xmm0 + vmovdqa %xmm4,64(%esp) + movl %ecx,%ebp + xorl %edi,%esi + vmovdqa %xmm3,%xmm4 + vpaddd %xmm7,%xmm3,%xmm3 + shldl $5,%ecx,%ecx + addl %esi,%ebx + vpxor %xmm2,%xmm0,%xmm0 + xorl %edx,%ebp + xorl %edi,%edx + addl %ecx,%ebx + addl 4(%esp),%eax + vpsrld $30,%xmm0,%xmm2 + vmovdqa %xmm3,48(%esp) + andl %edx,%ebp + xorl %edi,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + vpslld $2,%xmm0,%xmm0 + xorl %edx,%ebp + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + addl 8(%esp),%edi + andl %ecx,%esi + vpor %xmm2,%xmm0,%xmm0 + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vmovdqa 80(%esp),%xmm2 + movl %eax,%ebp + xorl %ecx,%esi + shldl $5,%eax,%eax + addl %esi,%edi + xorl %ebx,%ebp + xorl %ecx,%ebx + addl %eax,%edi + addl 12(%esp),%edx + andl %ebx,%ebp + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %edi,%esi + xorl %ebx,%ebp + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %edi,%edx + vpalignr $8,%xmm7,%xmm0,%xmm3 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%esp),%ecx + andl %eax,%esi + xorl %ebx,%eax + shrdl $7,%edi,%edi + vpxor %xmm2,%xmm1,%xmm1 + vmovdqa %xmm5,80(%esp) + movl %edx,%ebp + xorl %eax,%esi + vmovdqa %xmm4,%xmm5 + vpaddd %xmm0,%xmm4,%xmm4 + shldl $5,%edx,%edx + addl %esi,%ecx + vpxor %xmm3,%xmm1,%xmm1 + xorl %edi,%ebp + xorl %eax,%edi + addl %edx,%ecx + addl 20(%esp),%ebx + vpsrld $30,%xmm1,%xmm3 + vmovdqa %xmm4,(%esp) + andl %edi,%ebp + xorl %eax,%edi + shrdl $7,%edx,%edx + movl %ecx,%esi + vpslld $2,%xmm1,%xmm1 + xorl %edi,%ebp + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edx,%esi + xorl %edi,%edx + addl %ecx,%ebx + addl 24(%esp),%eax + andl %edx,%esi + vpor %xmm3,%xmm1,%xmm1 + xorl %edi,%edx + shrdl $7,%ecx,%ecx + vmovdqa 96(%esp),%xmm3 + movl %ebx,%ebp + xorl %edx,%esi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %ecx,%ebp + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%esp),%edi + andl %ecx,%ebp + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + xorl %ecx,%ebp + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%edi + vpalignr $8,%xmm0,%xmm1,%xmm4 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%esp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vpxor %xmm3,%xmm2,%xmm2 + vmovdqa %xmm6,96(%esp) + movl %edi,%ebp + xorl %ebx,%esi + vmovdqa %xmm5,%xmm6 + vpaddd %xmm1,%xmm5,%xmm5 + shldl $5,%edi,%edi + addl %esi,%edx + vpxor %xmm4,%xmm2,%xmm2 + xorl %eax,%ebp + xorl %ebx,%eax + addl %edi,%edx + addl 36(%esp),%ecx + vpsrld $30,%xmm2,%xmm4 + vmovdqa %xmm5,16(%esp) + andl %eax,%ebp + xorl %ebx,%eax + shrdl $7,%edi,%edi + movl %edx,%esi + vpslld $2,%xmm2,%xmm2 + xorl %eax,%ebp + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %edi,%esi + xorl %eax,%edi + addl %edx,%ecx + addl 40(%esp),%ebx + andl %edi,%esi + vpor %xmm4,%xmm2,%xmm2 + xorl %eax,%edi + shrdl $7,%edx,%edx + vmovdqa 64(%esp),%xmm4 + movl %ecx,%ebp + xorl %edi,%esi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edx,%ebp + xorl %edi,%edx + addl %ecx,%ebx + addl 44(%esp),%eax + andl %edx,%ebp + xorl %edi,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%ebp + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %edx,%esi + addl %ebx,%eax + vpalignr $8,%xmm1,%xmm2,%xmm5 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + vpxor %xmm4,%xmm3,%xmm3 + vmovdqa %xmm7,64(%esp) + addl %esi,%edi + xorl %ecx,%ebp + vmovdqa %xmm6,%xmm7 + vpaddd %xmm2,%xmm6,%xmm6 + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpxor %xmm5,%xmm3,%xmm3 + addl 52(%esp),%edx + xorl %ebx,%ebp + movl %edi,%esi + shldl $5,%edi,%edi + vpsrld $30,%xmm3,%xmm5 + vmovdqa %xmm6,32(%esp) + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + vpslld $2,%xmm3,%xmm3 + addl 56(%esp),%ecx + xorl %eax,%esi + movl %edx,%ebp + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%ebp + shrdl $7,%edi,%edi + addl %edx,%ecx + vpor %xmm5,%xmm3,%xmm3 + addl 60(%esp),%ebx + xorl %edi,%ebp + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl (%esp),%eax + vpaddd %xmm3,%xmm7,%xmm7 + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + addl %esi,%eax + vmovdqa %xmm7,48(%esp) + xorl %edx,%ebp + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 4(%esp),%edi + xorl %ecx,%ebp + movl %eax,%esi + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 8(%esp),%edx + xorl %ebx,%esi + movl %edi,%ebp + shldl $5,%edi,%edi + addl %esi,%edx + xorl %ebx,%ebp + shrdl $7,%eax,%eax + addl %edi,%edx + addl 12(%esp),%ecx + xorl %eax,%ebp + movl %edx,%esi + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + movl 196(%esp),%ebp + cmpl 200(%esp),%ebp + je .L008done + vmovdqa 160(%esp),%xmm7 + vmovdqa 176(%esp),%xmm6 + vmovdqu (%ebp),%xmm0 + vmovdqu 16(%ebp),%xmm1 + vmovdqu 32(%ebp),%xmm2 + vmovdqu 48(%ebp),%xmm3 + addl $64,%ebp + vpshufb %xmm6,%xmm0,%xmm0 + movl %ebp,196(%esp) + vmovdqa %xmm7,96(%esp) + addl 16(%esp),%ebx + xorl %edi,%esi + vpshufb %xmm6,%xmm1,%xmm1 + movl %ecx,%ebp + shldl $5,%ecx,%ecx + vpaddd %xmm7,%xmm0,%xmm4 + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + vmovdqa %xmm4,(%esp) + addl 20(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + addl %esi,%edi + xorl %ecx,%ebp + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 28(%esp),%edx + xorl %ebx,%ebp + movl %edi,%esi + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + addl 32(%esp),%ecx + xorl %eax,%esi + vpshufb %xmm6,%xmm2,%xmm2 + movl %edx,%ebp + shldl $5,%edx,%edx + vpaddd %xmm7,%xmm1,%xmm5 + addl %esi,%ecx + xorl %eax,%ebp + shrdl $7,%edi,%edi + addl %edx,%ecx + vmovdqa %xmm5,16(%esp) + addl 36(%esp),%ebx + xorl %edi,%ebp + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%esp),%eax + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%ebp + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%esp),%edi + xorl %ecx,%ebp + movl %eax,%esi + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 48(%esp),%edx + xorl %ebx,%esi + vpshufb %xmm6,%xmm3,%xmm3 + movl %edi,%ebp + shldl $5,%edi,%edi + vpaddd %xmm7,%xmm2,%xmm6 + addl %esi,%edx + xorl %ebx,%ebp + shrdl $7,%eax,%eax + addl %edi,%edx + vmovdqa %xmm6,32(%esp) + addl 52(%esp),%ecx + xorl %eax,%ebp + movl %edx,%esi + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + addl 56(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + movl 192(%esp),%ebp + addl (%ebp),%eax + addl 4(%ebp),%esi + addl 8(%ebp),%ecx + movl %eax,(%ebp) + addl 12(%ebp),%edx + movl %esi,4(%ebp) + addl 16(%ebp),%edi + movl %ecx,%ebx + movl %ecx,8(%ebp) + xorl %edx,%ebx + movl %edx,12(%ebp) + movl %edi,16(%ebp) + movl %esi,%ebp + andl %ebx,%esi + movl %ebp,%ebx + jmp .L007loop +.align 16 +.L008done: + addl 16(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 20(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + addl %esi,%edi + xorl %ecx,%ebp + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 28(%esp),%edx + xorl %ebx,%ebp + movl %edi,%esi + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + addl 32(%esp),%ecx + xorl %eax,%esi + movl %edx,%ebp + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%ebp + shrdl $7,%edi,%edi + addl %edx,%ecx + addl 36(%esp),%ebx + xorl %edi,%ebp + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%esp),%eax + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%ebp + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%esp),%edi + xorl %ecx,%ebp + movl %eax,%esi + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 48(%esp),%edx + xorl %ebx,%esi + movl %edi,%ebp + shldl $5,%edi,%edi + addl %esi,%edx + xorl %ebx,%ebp + shrdl $7,%eax,%eax + addl %edi,%edx + addl 52(%esp),%ecx + xorl %eax,%ebp + movl %edx,%esi + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + addl 56(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vzeroall + movl 192(%esp),%ebp + addl (%ebp),%eax + movl 204(%esp),%esp + addl 4(%ebp),%esi + addl 8(%ebp),%ecx + movl %eax,(%ebp) + addl 12(%ebp),%edx + movl %esi,4(%ebp) + addl 16(%ebp),%edi + movl %ecx,8(%ebp) + movl %edx,12(%ebp) + movl %edi,16(%ebp) + popl %edi + popl %esi + popl %ebx + popl %ebp + ret +.size _sha1_block_data_order_avx,.-_sha1_block_data_order_avx .align 64 .LK_XX_XX: .long 1518500249,1518500249,1518500249,1518500249
diff --git a/third_party/boringssl/linux-x86/crypto/sha/sha256-586.S b/third_party/boringssl/linux-x86/crypto/sha/sha256-586.S index 196f7f9..38acbd8 100644 --- a/third_party/boringssl/linux-x86/crypto/sha/sha256-586.S +++ b/third_party/boringssl/linux-x86/crypto/sha/sha256-586.S
@@ -40,12 +40,13 @@ orl %ebx,%ecx andl $1342177280,%ecx cmpl $1342177280,%ecx + je .L004AVX testl $512,%ebx - jnz .L004SSSE3 + jnz .L005SSSE3 .L003no_xmm: subl %edi,%eax cmpl $256,%eax - jae .L005unrolled + jae .L006unrolled jmp .L002loop .align 16 .L002loop: @@ -117,7 +118,7 @@ movl %ecx,28(%esp) movl %edi,32(%esp) .align 16 -.L00600_15: +.L00700_15: movl %edx,%ecx movl 24(%esp),%esi rorl $14,%ecx @@ -155,11 +156,11 @@ addl $4,%ebp addl %ebx,%eax cmpl $3248222580,%esi - jne .L00600_15 + jne .L00700_15 movl 156(%esp),%ecx - jmp .L00716_63 + jmp .L00816_63 .align 16 -.L00716_63: +.L00816_63: movl %ecx,%ebx movl 104(%esp),%esi rorl $11,%ecx @@ -214,7 +215,7 @@ addl $4,%ebp addl %ebx,%eax cmpl $3329325298,%esi - jne .L00716_63 + jne .L00816_63 movl 356(%esp),%esi movl 8(%esp),%ebx movl 16(%esp),%ecx @@ -258,7 +259,7 @@ .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 .byte 62,0 .align 16 -.L005unrolled: +.L006unrolled: leal -96(%esp),%esp movl (%esi),%eax movl 4(%esi),%ebp @@ -275,9 +276,9 @@ movl %ebx,20(%esp) movl %ecx,24(%esp) movl %esi,28(%esp) - jmp .L008grand_loop + jmp .L009grand_loop .align 16 -.L008grand_loop: +.L009grand_loop: movl (%edi),%ebx movl 4(%edi),%ecx bswap %ebx @@ -3157,7 +3158,7 @@ movl %ebx,24(%esp) movl %ecx,28(%esp) cmpl 104(%esp),%edi - jb .L008grand_loop + jb .L009grand_loop movl 108(%esp),%esp popl %edi popl %esi @@ -3165,7 +3166,7 @@ popl %ebp ret .align 32 -.L004SSSE3: +.L005SSSE3: leal -96(%esp),%esp movl (%esi),%eax movl 4(%esi),%ebx @@ -3184,9 +3185,9 @@ movl %ecx,24(%esp) movl %esi,28(%esp) movdqa 256(%ebp),%xmm7 - jmp .L009grand_ssse3 + jmp .L010grand_ssse3 .align 16 -.L009grand_ssse3: +.L010grand_ssse3: movdqu (%edi),%xmm0 movdqu 16(%edi),%xmm1 movdqu 32(%edi),%xmm2 @@ -3209,9 +3210,9 @@ paddd %xmm3,%xmm7 movdqa %xmm6,64(%esp) movdqa %xmm7,80(%esp) - jmp .L010ssse3_00_47 + jmp .L011ssse3_00_47 .align 16 -.L010ssse3_00_47: +.L011ssse3_00_47: addl $64,%ebp movl %edx,%ecx movdqa %xmm1,%xmm4 @@ -3854,7 +3855,7 @@ addl %ecx,%eax movdqa %xmm6,80(%esp) cmpl $66051,64(%ebp) - jne .L010ssse3_00_47 + jne .L011ssse3_00_47 movl %edx,%ecx rorl $14,%edx movl 20(%esp),%esi @@ -4368,12 +4369,1193 @@ movdqa 64(%ebp),%xmm7 subl $192,%ebp cmpl 104(%esp),%edi - jb .L009grand_ssse3 + jb .L010grand_ssse3 movl 108(%esp),%esp popl %edi popl %esi popl %ebx popl %ebp ret +.align 32 +.L004AVX: + leal -96(%esp),%esp + vzeroall + movl (%esi),%eax + movl 4(%esi),%ebx + movl 8(%esi),%ecx + movl 12(%esi),%edi + movl %ebx,4(%esp) + xorl %ecx,%ebx + movl %ecx,8(%esp) + movl %edi,12(%esp) + movl 16(%esi),%edx + movl 20(%esi),%edi + movl 24(%esi),%ecx + movl 28(%esi),%esi + movl %edi,20(%esp) + movl 100(%esp),%edi + movl %ecx,24(%esp) + movl %esi,28(%esp) + vmovdqa 256(%ebp),%xmm7 + jmp .L012grand_avx +.align 32 +.L012grand_avx: + vmovdqu (%edi),%xmm0 + vmovdqu 16(%edi),%xmm1 + vmovdqu 32(%edi),%xmm2 + vmovdqu 48(%edi),%xmm3 + addl $64,%edi + vpshufb %xmm7,%xmm0,%xmm0 + movl %edi,100(%esp) + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd (%ebp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 16(%ebp),%xmm1,%xmm5 + vpaddd 32(%ebp),%xmm2,%xmm6 + vpaddd 48(%ebp),%xmm3,%xmm7 + vmovdqa %xmm4,32(%esp) + vmovdqa %xmm5,48(%esp) + vmovdqa %xmm6,64(%esp) + vmovdqa %xmm7,80(%esp) + jmp .L013avx_00_47 +.align 16 +.L013avx_00_47: + addl $64,%ebp + vpalignr $4,%xmm0,%xmm1,%xmm4 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 20(%esp),%esi + vpalignr $4,%xmm2,%xmm3,%xmm7 + xorl %ecx,%edx + movl 24(%esp),%edi + xorl %edi,%esi + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,16(%esp) + vpaddd %xmm7,%xmm0,%xmm0 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrld $3,%xmm4,%xmm7 + movl %eax,%ecx + addl %edi,%edx + movl 4(%esp),%edi + vpslld $14,%xmm4,%xmm5 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,(%esp) + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%ecx + xorl %edi,%eax + addl 28(%esp),%edx + vpshufd $250,%xmm3,%xmm7 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpsrld $11,%xmm6,%xmm6 + addl 32(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpxor %xmm5,%xmm4,%xmm4 + addl %edx,%ebx + addl 12(%esp),%edx + addl %ecx,%ebx + vpslld $11,%xmm5,%xmm5 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 16(%esp),%esi + vpxor %xmm6,%xmm4,%xmm4 + xorl %ecx,%edx + movl 20(%esp),%edi + xorl %edi,%esi + vpsrld $10,%xmm7,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,12(%esp) + vpxor %xmm5,%xmm4,%xmm4 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %ebx,%ecx + addl %edi,%edx + movl (%esp),%edi + vpaddd %xmm4,%xmm0,%xmm0 + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,28(%esp) + vpxor %xmm5,%xmm6,%xmm6 + xorl %ebx,%ecx + xorl %edi,%ebx + addl 24(%esp),%edx + vpsrlq $19,%xmm7,%xmm7 + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + vpxor %xmm7,%xmm6,%xmm6 + addl 36(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + vpshufd $132,%xmm6,%xmm7 + addl %edx,%eax + addl 8(%esp),%edx + addl %ecx,%eax + vpsrldq $8,%xmm7,%xmm7 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 12(%esp),%esi + vpaddd %xmm7,%xmm0,%xmm0 + xorl %ecx,%edx + movl 16(%esp),%edi + xorl %edi,%esi + vpshufd $80,%xmm0,%xmm7 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,8(%esp) + vpsrld $10,%xmm7,%xmm6 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %eax,%ecx + addl %edi,%edx + movl 28(%esp),%edi + vpxor %xmm5,%xmm6,%xmm6 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,24(%esp) + vpsrlq $19,%xmm7,%xmm7 + xorl %eax,%ecx + xorl %edi,%eax + addl 20(%esp),%edx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpshufd $232,%xmm6,%xmm7 + addl 40(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpslldq $8,%xmm7,%xmm7 + addl %edx,%ebx + addl 4(%esp),%edx + addl %ecx,%ebx + vpaddd %xmm7,%xmm0,%xmm0 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 8(%esp),%esi + vpaddd (%ebp),%xmm0,%xmm6 + xorl %ecx,%edx + movl 12(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,4(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 24(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,20(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 16(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 44(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl (%esp),%edx + addl %ecx,%eax + vmovdqa %xmm6,32(%esp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 4(%esp),%esi + vpalignr $4,%xmm3,%xmm0,%xmm7 + xorl %ecx,%edx + movl 8(%esp),%edi + xorl %edi,%esi + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,(%esp) + vpaddd %xmm7,%xmm1,%xmm1 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrld $3,%xmm4,%xmm7 + movl %eax,%ecx + addl %edi,%edx + movl 20(%esp),%edi + vpslld $14,%xmm4,%xmm5 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,16(%esp) + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%ecx + xorl %edi,%eax + addl 12(%esp),%edx + vpshufd $250,%xmm0,%xmm7 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpsrld $11,%xmm6,%xmm6 + addl 48(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpxor %xmm5,%xmm4,%xmm4 + addl %edx,%ebx + addl 28(%esp),%edx + addl %ecx,%ebx + vpslld $11,%xmm5,%xmm5 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl (%esp),%esi + vpxor %xmm6,%xmm4,%xmm4 + xorl %ecx,%edx + movl 4(%esp),%edi + xorl %edi,%esi + vpsrld $10,%xmm7,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,28(%esp) + vpxor %xmm5,%xmm4,%xmm4 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %ebx,%ecx + addl %edi,%edx + movl 16(%esp),%edi + vpaddd %xmm4,%xmm1,%xmm1 + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,12(%esp) + vpxor %xmm5,%xmm6,%xmm6 + xorl %ebx,%ecx + xorl %edi,%ebx + addl 8(%esp),%edx + vpsrlq $19,%xmm7,%xmm7 + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + vpxor %xmm7,%xmm6,%xmm6 + addl 52(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + vpshufd $132,%xmm6,%xmm7 + addl %edx,%eax + addl 24(%esp),%edx + addl %ecx,%eax + vpsrldq $8,%xmm7,%xmm7 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 28(%esp),%esi + vpaddd %xmm7,%xmm1,%xmm1 + xorl %ecx,%edx + movl (%esp),%edi + xorl %edi,%esi + vpshufd $80,%xmm1,%xmm7 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,24(%esp) + vpsrld $10,%xmm7,%xmm6 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %eax,%ecx + addl %edi,%edx + movl 12(%esp),%edi + vpxor %xmm5,%xmm6,%xmm6 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,8(%esp) + vpsrlq $19,%xmm7,%xmm7 + xorl %eax,%ecx + xorl %edi,%eax + addl 4(%esp),%edx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpshufd $232,%xmm6,%xmm7 + addl 56(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpslldq $8,%xmm7,%xmm7 + addl %edx,%ebx + addl 20(%esp),%edx + addl %ecx,%ebx + vpaddd %xmm7,%xmm1,%xmm1 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 24(%esp),%esi + vpaddd 16(%ebp),%xmm1,%xmm6 + xorl %ecx,%edx + movl 28(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,20(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 8(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,4(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl (%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 60(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 16(%esp),%edx + addl %ecx,%eax + vmovdqa %xmm6,48(%esp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 20(%esp),%esi + vpalignr $4,%xmm0,%xmm1,%xmm7 + xorl %ecx,%edx + movl 24(%esp),%edi + xorl %edi,%esi + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,16(%esp) + vpaddd %xmm7,%xmm2,%xmm2 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrld $3,%xmm4,%xmm7 + movl %eax,%ecx + addl %edi,%edx + movl 4(%esp),%edi + vpslld $14,%xmm4,%xmm5 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,(%esp) + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%ecx + xorl %edi,%eax + addl 28(%esp),%edx + vpshufd $250,%xmm1,%xmm7 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpsrld $11,%xmm6,%xmm6 + addl 64(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpxor %xmm5,%xmm4,%xmm4 + addl %edx,%ebx + addl 12(%esp),%edx + addl %ecx,%ebx + vpslld $11,%xmm5,%xmm5 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 16(%esp),%esi + vpxor %xmm6,%xmm4,%xmm4 + xorl %ecx,%edx + movl 20(%esp),%edi + xorl %edi,%esi + vpsrld $10,%xmm7,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,12(%esp) + vpxor %xmm5,%xmm4,%xmm4 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %ebx,%ecx + addl %edi,%edx + movl (%esp),%edi + vpaddd %xmm4,%xmm2,%xmm2 + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,28(%esp) + vpxor %xmm5,%xmm6,%xmm6 + xorl %ebx,%ecx + xorl %edi,%ebx + addl 24(%esp),%edx + vpsrlq $19,%xmm7,%xmm7 + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + vpxor %xmm7,%xmm6,%xmm6 + addl 68(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + vpshufd $132,%xmm6,%xmm7 + addl %edx,%eax + addl 8(%esp),%edx + addl %ecx,%eax + vpsrldq $8,%xmm7,%xmm7 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 12(%esp),%esi + vpaddd %xmm7,%xmm2,%xmm2 + xorl %ecx,%edx + movl 16(%esp),%edi + xorl %edi,%esi + vpshufd $80,%xmm2,%xmm7 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,8(%esp) + vpsrld $10,%xmm7,%xmm6 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %eax,%ecx + addl %edi,%edx + movl 28(%esp),%edi + vpxor %xmm5,%xmm6,%xmm6 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,24(%esp) + vpsrlq $19,%xmm7,%xmm7 + xorl %eax,%ecx + xorl %edi,%eax + addl 20(%esp),%edx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpshufd $232,%xmm6,%xmm7 + addl 72(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpslldq $8,%xmm7,%xmm7 + addl %edx,%ebx + addl 4(%esp),%edx + addl %ecx,%ebx + vpaddd %xmm7,%xmm2,%xmm2 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 8(%esp),%esi + vpaddd 32(%ebp),%xmm2,%xmm6 + xorl %ecx,%edx + movl 12(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,4(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 24(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,20(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 16(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 76(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl (%esp),%edx + addl %ecx,%eax + vmovdqa %xmm6,64(%esp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 4(%esp),%esi + vpalignr $4,%xmm1,%xmm2,%xmm7 + xorl %ecx,%edx + movl 8(%esp),%edi + xorl %edi,%esi + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,(%esp) + vpaddd %xmm7,%xmm3,%xmm3 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrld $3,%xmm4,%xmm7 + movl %eax,%ecx + addl %edi,%edx + movl 20(%esp),%edi + vpslld $14,%xmm4,%xmm5 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,16(%esp) + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%ecx + xorl %edi,%eax + addl 12(%esp),%edx + vpshufd $250,%xmm2,%xmm7 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpsrld $11,%xmm6,%xmm6 + addl 80(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpxor %xmm5,%xmm4,%xmm4 + addl %edx,%ebx + addl 28(%esp),%edx + addl %ecx,%ebx + vpslld $11,%xmm5,%xmm5 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl (%esp),%esi + vpxor %xmm6,%xmm4,%xmm4 + xorl %ecx,%edx + movl 4(%esp),%edi + xorl %edi,%esi + vpsrld $10,%xmm7,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,28(%esp) + vpxor %xmm5,%xmm4,%xmm4 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %ebx,%ecx + addl %edi,%edx + movl 16(%esp),%edi + vpaddd %xmm4,%xmm3,%xmm3 + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,12(%esp) + vpxor %xmm5,%xmm6,%xmm6 + xorl %ebx,%ecx + xorl %edi,%ebx + addl 8(%esp),%edx + vpsrlq $19,%xmm7,%xmm7 + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + vpxor %xmm7,%xmm6,%xmm6 + addl 84(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + vpshufd $132,%xmm6,%xmm7 + addl %edx,%eax + addl 24(%esp),%edx + addl %ecx,%eax + vpsrldq $8,%xmm7,%xmm7 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 28(%esp),%esi + vpaddd %xmm7,%xmm3,%xmm3 + xorl %ecx,%edx + movl (%esp),%edi + xorl %edi,%esi + vpshufd $80,%xmm3,%xmm7 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,24(%esp) + vpsrld $10,%xmm7,%xmm6 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %eax,%ecx + addl %edi,%edx + movl 12(%esp),%edi + vpxor %xmm5,%xmm6,%xmm6 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,8(%esp) + vpsrlq $19,%xmm7,%xmm7 + xorl %eax,%ecx + xorl %edi,%eax + addl 4(%esp),%edx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpshufd $232,%xmm6,%xmm7 + addl 88(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpslldq $8,%xmm7,%xmm7 + addl %edx,%ebx + addl 20(%esp),%edx + addl %ecx,%ebx + vpaddd %xmm7,%xmm3,%xmm3 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 24(%esp),%esi + vpaddd 48(%ebp),%xmm3,%xmm6 + xorl %ecx,%edx + movl 28(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,20(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 8(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,4(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl (%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 92(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 16(%esp),%edx + addl %ecx,%eax + vmovdqa %xmm6,80(%esp) + cmpl $66051,64(%ebp) + jne .L013avx_00_47 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 20(%esp),%esi + xorl %ecx,%edx + movl 24(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,16(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 4(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 28(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 32(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 12(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 16(%esp),%esi + xorl %ecx,%edx + movl 20(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,12(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl (%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,28(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 24(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 36(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 8(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 12(%esp),%esi + xorl %ecx,%edx + movl 16(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,8(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 28(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,24(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 20(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 40(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 4(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 8(%esp),%esi + xorl %ecx,%edx + movl 12(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,4(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 24(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,20(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 16(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 44(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl (%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 4(%esp),%esi + xorl %ecx,%edx + movl 8(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 20(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,16(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 12(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 48(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 28(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl (%esp),%esi + xorl %ecx,%edx + movl 4(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,28(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 16(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,12(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 8(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 52(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 24(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 28(%esp),%esi + xorl %ecx,%edx + movl (%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,24(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 12(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,8(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 4(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 56(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 20(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 24(%esp),%esi + xorl %ecx,%edx + movl 28(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,20(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 8(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,4(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl (%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 60(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 16(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 20(%esp),%esi + xorl %ecx,%edx + movl 24(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,16(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 4(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 28(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 64(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 12(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 16(%esp),%esi + xorl %ecx,%edx + movl 20(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,12(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl (%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,28(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 24(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 68(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 8(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 12(%esp),%esi + xorl %ecx,%edx + movl 16(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,8(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 28(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,24(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 20(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 72(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 4(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 8(%esp),%esi + xorl %ecx,%edx + movl 12(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,4(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 24(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,20(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 16(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 76(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl (%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 4(%esp),%esi + xorl %ecx,%edx + movl 8(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 20(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,16(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 12(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 80(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 28(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl (%esp),%esi + xorl %ecx,%edx + movl 4(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,28(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 16(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,12(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 8(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 84(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 24(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 28(%esp),%esi + xorl %ecx,%edx + movl (%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,24(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 12(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,8(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 4(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 88(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 20(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 24(%esp),%esi + xorl %ecx,%edx + movl 28(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,20(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 8(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,4(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl (%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 92(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 16(%esp),%edx + addl %ecx,%eax + movl 96(%esp),%esi + xorl %edi,%ebx + movl 12(%esp),%ecx + addl (%esi),%eax + addl 4(%esi),%ebx + addl 8(%esi),%edi + addl 12(%esi),%ecx + movl %eax,(%esi) + movl %ebx,4(%esi) + movl %edi,8(%esi) + movl %ecx,12(%esi) + movl %ebx,4(%esp) + xorl %edi,%ebx + movl %edi,8(%esp) + movl %ecx,12(%esp) + movl 20(%esp),%edi + movl 24(%esp),%ecx + addl 16(%esi),%edx + addl 20(%esi),%edi + addl 24(%esi),%ecx + movl %edx,16(%esi) + movl %edi,20(%esi) + movl %edi,20(%esp) + movl 28(%esp),%edi + movl %ecx,24(%esi) + addl 28(%esi),%edi + movl %ecx,24(%esp) + movl %edi,28(%esi) + movl %edi,28(%esp) + movl 100(%esp),%edi + vmovdqa 64(%ebp),%xmm7 + subl $192,%ebp + cmpl 104(%esp),%edi + jb .L012grand_avx + movl 108(%esp),%esp + vzeroall + popl %edi + popl %esi + popl %ebx + popl %ebp + ret .size sha256_block_data_order,.-.L_sha256_block_data_order_begin #endif
diff --git a/third_party/boringssl/linux-x86_64/crypto/sha/sha1-x86_64.S b/third_party/boringssl/linux-x86_64/crypto/sha/sha1-x86_64.S index 7668c2b..d830b53 100644 --- a/third_party/boringssl/linux-x86_64/crypto/sha/sha1-x86_64.S +++ b/third_party/boringssl/linux-x86_64/crypto/sha/sha1-x86_64.S
@@ -13,6 +13,11 @@ movl OPENSSL_ia32cap_P+8(%rip),%r10d testl $512,%r8d jz .Lialu + andl $268435456,%r8d + andl $1073741824,%r9d + orl %r9d,%r8d + cmpl $1342177280,%r8d + je _avx_shortcut jmp _ssse3_shortcut .align 16 @@ -2408,6 +2413,1122 @@ .Lepilogue_ssse3: .byte 0xf3,0xc3 .size sha1_block_data_order_ssse3,.-sha1_block_data_order_ssse3 +.type sha1_block_data_order_avx,@function +.align 16 +sha1_block_data_order_avx: +_avx_shortcut: + movq %rsp,%rax + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + leaq -64(%rsp),%rsp + vzeroupper + movq %rax,%r14 + andq $-64,%rsp + movq %rdi,%r8 + movq %rsi,%r9 + movq %rdx,%r10 + + shlq $6,%r10 + addq %r9,%r10 + leaq K_XX_XX+64(%rip),%r11 + + movl 0(%r8),%eax + movl 4(%r8),%ebx + movl 8(%r8),%ecx + movl 12(%r8),%edx + movl %ebx,%esi + movl 16(%r8),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + vmovdqa 64(%r11),%xmm6 + vmovdqa -64(%r11),%xmm11 + vmovdqu 0(%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r9 + vpshufb %xmm6,%xmm1,%xmm1 + vpshufb %xmm6,%xmm2,%xmm2 + vpshufb %xmm6,%xmm3,%xmm3 + vpaddd %xmm11,%xmm0,%xmm4 + vpaddd %xmm11,%xmm1,%xmm5 + vpaddd %xmm11,%xmm2,%xmm6 + vmovdqa %xmm4,0(%rsp) + vmovdqa %xmm5,16(%rsp) + vmovdqa %xmm6,32(%rsp) + jmp .Loop_avx +.align 16 +.Loop_avx: + shrdl $2,%ebx,%ebx + xorl %edx,%esi + vpalignr $8,%xmm0,%xmm1,%xmm4 + movl %eax,%edi + addl 0(%rsp),%ebp + vpaddd %xmm3,%xmm11,%xmm9 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrldq $4,%xmm3,%xmm8 + addl %esi,%ebp + andl %ebx,%edi + vpxor %xmm0,%xmm4,%xmm4 + xorl %ecx,%ebx + addl %eax,%ebp + vpxor %xmm2,%xmm8,%xmm8 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + vpxor %xmm8,%xmm4,%xmm4 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vmovdqa %xmm9,48(%rsp) + addl %edi,%edx + andl %eax,%esi + vpsrld $31,%xmm4,%xmm8 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpslldq $12,%xmm4,%xmm10 + vpaddd %xmm4,%xmm4,%xmm4 + movl %edx,%edi + addl 8(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm4,%xmm4 + addl %esi,%ecx + andl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm4,%xmm4 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + vpxor %xmm10,%xmm4,%xmm4 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %edi,%ebx + andl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpalignr $8,%xmm1,%xmm2,%xmm5 + movl %ebx,%edi + addl 16(%rsp),%eax + vpaddd %xmm4,%xmm11,%xmm9 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrldq $4,%xmm4,%xmm8 + addl %esi,%eax + andl %ecx,%edi + vpxor %xmm1,%xmm5,%xmm5 + xorl %edx,%ecx + addl %ebx,%eax + vpxor %xmm3,%xmm8,%xmm8 + shrdl $7,%ebx,%ebx + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + vpxor %xmm8,%xmm5,%xmm5 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vmovdqa %xmm9,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + vpsrld $31,%xmm5,%xmm8 + xorl %ecx,%ebx + addl %eax,%ebp + shrdl $7,%eax,%eax + xorl %ecx,%esi + vpslldq $12,%xmm5,%xmm10 + vpaddd %xmm5,%xmm5,%xmm5 + movl %ebp,%edi + addl 24(%rsp),%edx + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm5,%xmm5 + addl %esi,%edx + andl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm5,%xmm5 + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + vpxor %xmm10,%xmm5,%xmm5 + xorl %eax,%ebp + shldl $5,%edx,%edx + vmovdqa -32(%r11),%xmm11 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + vpalignr $8,%xmm2,%xmm3,%xmm6 + movl %ecx,%edi + addl 32(%rsp),%ebx + vpaddd %xmm5,%xmm11,%xmm9 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vpsrldq $4,%xmm5,%xmm8 + addl %esi,%ebx + andl %edx,%edi + vpxor %xmm2,%xmm6,%xmm6 + xorl %ebp,%edx + addl %ecx,%ebx + vpxor %xmm4,%xmm8,%xmm8 + shrdl $7,%ecx,%ecx + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + vpxor %xmm8,%xmm6,%xmm6 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vmovdqa %xmm9,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + vpsrld $31,%xmm6,%xmm8 + xorl %edx,%ecx + addl %ebx,%eax + shrdl $7,%ebx,%ebx + xorl %edx,%esi + vpslldq $12,%xmm6,%xmm10 + vpaddd %xmm6,%xmm6,%xmm6 + movl %eax,%edi + addl 40(%rsp),%ebp + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm6,%xmm6 + addl %esi,%ebp + andl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm6,%xmm6 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + vpxor %xmm10,%xmm6,%xmm6 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + addl %edi,%edx + andl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpalignr $8,%xmm3,%xmm4,%xmm7 + movl %edx,%edi + addl 48(%rsp),%ecx + vpaddd %xmm6,%xmm11,%xmm9 + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrldq $4,%xmm6,%xmm8 + addl %esi,%ecx + andl %ebp,%edi + vpxor %xmm3,%xmm7,%xmm7 + xorl %eax,%ebp + addl %edx,%ecx + vpxor %xmm5,%xmm8,%xmm8 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + vpxor %xmm8,%xmm7,%xmm7 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vmovdqa %xmm9,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + vpsrld $31,%xmm7,%xmm8 + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpslldq $12,%xmm7,%xmm10 + vpaddd %xmm7,%xmm7,%xmm7 + movl %ebx,%edi + addl 56(%rsp),%eax + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm7,%xmm7 + addl %esi,%eax + andl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm7,%xmm7 + shrdl $7,%ebx,%ebx + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + vpxor %xmm10,%xmm7,%xmm7 + xorl %ecx,%ebx + shldl $5,%eax,%eax + addl %edi,%ebp + andl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + vpxor %xmm1,%xmm0,%xmm0 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpaddd %xmm7,%xmm11,%xmm9 + addl %esi,%edx + andl %eax,%edi + vpxor %xmm8,%xmm0,%xmm0 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + movl %edx,%esi + addl 4(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpslld $2,%xmm0,%xmm0 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + vpor %xmm8,%xmm0,%xmm0 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm2,%xmm1,%xmm1 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm0,%xmm11,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm1,%xmm1 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm1,%xmm1 + addl 24(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm1,%xmm1 + addl 28(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + vpxor %xmm3,%xmm2,%xmm2 + addl %esi,%eax + xorl %edx,%edi + vpaddd %xmm1,%xmm11,%xmm9 + vmovdqa 0(%r11),%xmm11 + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpxor %xmm8,%xmm2,%xmm2 + addl 36(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpslld $2,%xmm2,%xmm2 + addl 40(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpor %xmm8,%xmm2,%xmm2 + addl 44(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebx + xorl %ebp,%edi + vpaddd %xmm2,%xmm11,%xmm9 + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpalignr $8,%xmm2,%xmm3,%xmm8 + vpxor %xmm0,%xmm4,%xmm4 + addl 0(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + vpxor %xmm5,%xmm4,%xmm4 + addl %esi,%ecx + xorl %eax,%edi + vpaddd %xmm3,%xmm11,%xmm9 + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpxor %xmm8,%xmm4,%xmm4 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + vpsrld $30,%xmm4,%xmm8 + vmovdqa %xmm9,48(%rsp) + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpslld $2,%xmm4,%xmm4 + addl 8(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpor %xmm8,%xmm4,%xmm4 + addl 12(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm3,%xmm4,%xmm8 + vpxor %xmm1,%xmm5,%xmm5 + addl 16(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpxor %xmm6,%xmm5,%xmm5 + addl %esi,%edx + xorl %ebx,%edi + vpaddd %xmm4,%xmm11,%xmm9 + shrdl $7,%eax,%eax + addl %ebp,%edx + vpxor %xmm8,%xmm5,%xmm5 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + vpsrld $30,%xmm5,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpslld $2,%xmm5,%xmm5 + addl 24(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpor %xmm8,%xmm5,%xmm5 + addl 28(%rsp),%eax + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm4,%xmm5,%xmm8 + vpxor %xmm2,%xmm6,%xmm6 + addl 32(%rsp),%ebp + andl %ecx,%esi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vpxor %xmm7,%xmm6,%xmm6 + movl %eax,%edi + xorl %ecx,%esi + vpaddd %xmm5,%xmm11,%xmm9 + shldl $5,%eax,%eax + addl %esi,%ebp + vpxor %xmm8,%xmm6,%xmm6 + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 36(%rsp),%edx + vpsrld $30,%xmm6,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + vpslld $2,%xmm6,%xmm6 + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + addl 40(%rsp),%ecx + andl %eax,%esi + vpor %xmm8,%xmm6,%xmm6 + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%edi + xorl %eax,%esi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%esi + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + vpalignr $8,%xmm5,%xmm6,%xmm8 + vpxor %xmm3,%xmm7,%xmm7 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + vpxor %xmm0,%xmm7,%xmm7 + movl %ebx,%edi + xorl %edx,%esi + vpaddd %xmm6,%xmm11,%xmm9 + vmovdqa 32(%r11),%xmm11 + shldl $5,%ebx,%ebx + addl %esi,%eax + vpxor %xmm8,%xmm7,%xmm7 + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 52(%rsp),%ebp + vpsrld $30,%xmm7,%xmm8 + vmovdqa %xmm9,32(%rsp) + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + vpslld $2,%xmm7,%xmm7 + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + addl 56(%rsp),%edx + andl %ebx,%esi + vpor %xmm8,%xmm7,%xmm7 + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%edi + xorl %ebx,%esi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vpxor %xmm1,%xmm0,%xmm0 + movl %ecx,%edi + xorl %ebp,%esi + vpaddd %xmm7,%xmm11,%xmm9 + shldl $5,%ecx,%ecx + addl %esi,%ebx + vpxor %xmm8,%xmm0,%xmm0 + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 4(%rsp),%eax + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + vpslld $2,%xmm0,%xmm0 + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + addl 8(%rsp),%ebp + andl %ecx,%esi + vpor %xmm8,%xmm0,%xmm0 + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%edi + xorl %ecx,%esi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + vpxor %xmm2,%xmm1,%xmm1 + movl %edx,%edi + xorl %eax,%esi + vpaddd %xmm0,%xmm11,%xmm9 + shldl $5,%edx,%edx + addl %esi,%ecx + vpxor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 20(%rsp),%ebx + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%esi + vpslld $2,%xmm1,%xmm1 + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + addl 24(%rsp),%eax + andl %edx,%esi + vpor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%edi + xorl %edx,%esi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vpxor %xmm3,%xmm2,%xmm2 + movl %ebp,%edi + xorl %ebx,%esi + vpaddd %xmm1,%xmm11,%xmm9 + shldl $5,%ebp,%ebp + addl %esi,%edx + vpxor %xmm8,%xmm2,%xmm2 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 36(%rsp),%ecx + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + vpslld $2,%xmm2,%xmm2 + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + addl 40(%rsp),%ebx + andl %ebp,%esi + vpor %xmm8,%xmm2,%xmm2 + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%edi + xorl %ebp,%esi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm2,%xmm11,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + vpaddd %xmm3,%xmm11,%xmm9 + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + vmovdqa %xmm9,48(%rsp) + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + cmpq %r10,%r9 + je .Ldone_avx + vmovdqa 64(%r11),%xmm6 + vmovdqa -64(%r11),%xmm11 + vmovdqu 0(%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r9 + addl 16(%rsp),%ebx + xorl %ebp,%esi + vpshufb %xmm6,%xmm1,%xmm1 + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpaddd %xmm11,%xmm0,%xmm4 + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vmovdqa %xmm4,0(%rsp) + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + vpshufb %xmm6,%xmm2,%xmm2 + movl %edx,%edi + shldl $5,%edx,%edx + vpaddd %xmm11,%xmm1,%xmm5 + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vmovdqa %xmm5,16(%rsp) + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + vpshufb %xmm6,%xmm3,%xmm3 + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpaddd %xmm11,%xmm2,%xmm6 + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vmovdqa %xmm6,32(%rsp) + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + addl 12(%r8),%edx + movl %eax,0(%r8) + addl 16(%r8),%ebp + movl %esi,4(%r8) + movl %esi,%ebx + movl %ecx,8(%r8) + movl %ecx,%edi + movl %edx,12(%r8) + xorl %edx,%edi + movl %ebp,16(%r8) + andl %edi,%esi + jmp .Loop_avx + +.align 16 +.Ldone_avx: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vzeroupper + + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + movl %eax,0(%r8) + addl 12(%r8),%edx + movl %esi,4(%r8) + addl 16(%r8),%ebp + movl %ecx,8(%r8) + movl %edx,12(%r8) + movl %ebp,16(%r8) + leaq (%r14),%rsi + movq -40(%rsi),%r14 + movq -32(%rsi),%r13 + movq -24(%rsi),%r12 + movq -16(%rsi),%rbp + movq -8(%rsi),%rbx + leaq (%rsi),%rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.size sha1_block_data_order_avx,.-sha1_block_data_order_avx .align 64 K_XX_XX: .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
diff --git a/third_party/boringssl/linux-x86_64/crypto/sha/sha256-x86_64.S b/third_party/boringssl/linux-x86_64/crypto/sha/sha256-x86_64.S index f526de5..445b497e 100644 --- a/third_party/boringssl/linux-x86_64/crypto/sha/sha256-x86_64.S +++ b/third_party/boringssl/linux-x86_64/crypto/sha/sha256-x86_64.S
@@ -12,6 +12,11 @@ movl 0(%r11),%r9d movl 4(%r11),%r10d movl 8(%r11),%r11d + andl $1073741824,%r9d + andl $268435968,%r10d + orl %r9d,%r10d + cmpl $1342177792,%r10d + je .Lavx_shortcut testl $512,%r10d jnz .Lssse3_shortcut pushq %rbx @@ -2841,4 +2846,1061 @@ .Lepilogue_ssse3: .byte 0xf3,0xc3 .size sha256_block_data_order_ssse3,.-sha256_block_data_order_ssse3 +.type sha256_block_data_order_avx,@function +.align 64 +sha256_block_data_order_avx: +.Lavx_shortcut: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + movq %rsp,%r11 + shlq $4,%rdx + subq $96,%rsp + leaq (%rsi,%rdx,4),%rdx + andq $-64,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %r11,64+24(%rsp) +.Lprologue_avx: + + vzeroupper + movl 0(%rdi),%eax + movl 4(%rdi),%ebx + movl 8(%rdi),%ecx + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + vmovdqa K256+512+32(%rip),%xmm8 + vmovdqa K256+512+64(%rip),%xmm9 + jmp .Lloop_avx +.align 16 +.Lloop_avx: + vmovdqa K256+512(%rip),%xmm7 + vmovdqu 0(%rsi),%xmm0 + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm7,%xmm0,%xmm0 + leaq K256(%rip),%rbp + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd 0(%rbp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 32(%rbp),%xmm1,%xmm5 + vpaddd 64(%rbp),%xmm2,%xmm6 + vpaddd 96(%rbp),%xmm3,%xmm7 + vmovdqa %xmm4,0(%rsp) + movl %eax,%r14d + vmovdqa %xmm5,16(%rsp) + movl %ebx,%edi + vmovdqa %xmm6,32(%rsp) + xorl %ecx,%edi + vmovdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp .Lavx_00_47 + +.align 16 +.Lavx_00_47: + subq $-128,%rbp + vpalignr $4,%xmm0,%xmm1,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm2,%xmm3,%xmm7 + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm0,%xmm0 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + vpshufd $250,%xmm3,%xmm7 + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm0,%xmm0 + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpaddd %xmm6,%xmm0,%xmm0 + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + vpshufd $80,%xmm0,%xmm7 + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + vpaddd %xmm6,%xmm0,%xmm0 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpaddd 0(%rbp),%xmm0,%xmm6 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,0(%rsp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm3,%xmm0,%xmm7 + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm1,%xmm1 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + vpshufd $250,%xmm0,%xmm7 + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm1,%xmm1 + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpaddd %xmm6,%xmm1,%xmm1 + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + vpshufd $80,%xmm1,%xmm7 + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + vpxor %xmm7,%xmm6,%xmm6 + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + vpaddd %xmm6,%xmm1,%xmm1 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpaddd 32(%rbp),%xmm1,%xmm6 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,16(%rsp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm0,%xmm1,%xmm7 + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm2,%xmm2 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + vpshufd $250,%xmm1,%xmm7 + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm2,%xmm2 + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpaddd %xmm6,%xmm2,%xmm2 + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + vpshufd $80,%xmm2,%xmm7 + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + vpaddd %xmm6,%xmm2,%xmm2 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpaddd 64(%rbp),%xmm2,%xmm6 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,32(%rsp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm1,%xmm2,%xmm7 + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm3,%xmm3 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + vpshufd $250,%xmm2,%xmm7 + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm3,%xmm3 + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpaddd %xmm6,%xmm3,%xmm3 + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + vpshufd $80,%xmm3,%xmm7 + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + vpxor %xmm7,%xmm6,%xmm6 + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + vpaddd %xmm6,%xmm3,%xmm3 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpaddd 96(%rbp),%xmm3,%xmm6 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,48(%rsp) + cmpb $0,131(%rbp) + jne .Lavx_00_47 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%rdi + movl %r14d,%eax + + addl 0(%rdi),%eax + leaq 64(%rsi),%rsi + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + jb .Lloop_avx + + movq 64+24(%rsp),%rsi + vzeroupper + movq (%rsi),%r15 + movq 8(%rsi),%r14 + movq 16(%rsi),%r13 + movq 24(%rsi),%r12 + movq 32(%rsi),%rbp + movq 40(%rsi),%rbx + leaq 48(%rsi),%rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.size sha256_block_data_order_avx,.-sha256_block_data_order_avx #endif
diff --git a/third_party/boringssl/linux-x86_64/crypto/sha/sha512-x86_64.S b/third_party/boringssl/linux-x86_64/crypto/sha/sha512-x86_64.S index ca3a3a16..d65743fd 100644 --- a/third_party/boringssl/linux-x86_64/crypto/sha/sha512-x86_64.S +++ b/third_party/boringssl/linux-x86_64/crypto/sha/sha512-x86_64.S
@@ -8,6 +8,17 @@ .type sha512_block_data_order,@function .align 16 sha512_block_data_order: + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl 0(%r11),%r9d + movl 4(%r11),%r10d + movl 8(%r11),%r11d + testl $2048,%r10d + jnz .Lxop_shortcut + andl $1073741824,%r9d + andl $268435968,%r10d + orl %r9d,%r10d + cmpl $1342177792,%r10d + je .Lavx_shortcut pushq %rbx pushq %rbp pushq %r12 @@ -1784,4 +1795,2234 @@ .quad 0x0001020304050607,0x08090a0b0c0d0e0f .quad 0x0001020304050607,0x08090a0b0c0d0e0f .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.type sha512_block_data_order_xop,@function +.align 64 +sha512_block_data_order_xop: +.Lxop_shortcut: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + movq %rsp,%r11 + shlq $4,%rdx + subq $160,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %r11,128+24(%rsp) +.Lprologue_xop: + + vzeroupper + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp .Lloop_xop +.align 16 +.Lloop_xop: + vmovdqa K512+1280(%rip),%xmm11 + vmovdqu 0(%rsi),%xmm0 + leaq K512+128(%rip),%rbp + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vpshufb %xmm11,%xmm0,%xmm0 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm11,%xmm1,%xmm1 + vmovdqu 64(%rsi),%xmm4 + vpshufb %xmm11,%xmm2,%xmm2 + vmovdqu 80(%rsi),%xmm5 + vpshufb %xmm11,%xmm3,%xmm3 + vmovdqu 96(%rsi),%xmm6 + vpshufb %xmm11,%xmm4,%xmm4 + vmovdqu 112(%rsi),%xmm7 + vpshufb %xmm11,%xmm5,%xmm5 + vpaddq -128(%rbp),%xmm0,%xmm8 + vpshufb %xmm11,%xmm6,%xmm6 + vpaddq -96(%rbp),%xmm1,%xmm9 + vpshufb %xmm11,%xmm7,%xmm7 + vpaddq -64(%rbp),%xmm2,%xmm10 + vpaddq -32(%rbp),%xmm3,%xmm11 + vmovdqa %xmm8,0(%rsp) + vpaddq 0(%rbp),%xmm4,%xmm8 + vmovdqa %xmm9,16(%rsp) + vpaddq 32(%rbp),%xmm5,%xmm9 + vmovdqa %xmm10,32(%rsp) + vpaddq 64(%rbp),%xmm6,%xmm10 + vmovdqa %xmm11,48(%rsp) + vpaddq 96(%rbp),%xmm7,%xmm11 + vmovdqa %xmm8,64(%rsp) + movq %rax,%r14 + vmovdqa %xmm9,80(%rsp) + movq %rbx,%rdi + vmovdqa %xmm10,96(%rsp) + xorq %rcx,%rdi + vmovdqa %xmm11,112(%rsp) + movq %r8,%r13 + jmp .Lxop_00_47 + +.align 16 +.Lxop_00_47: + addq $256,%rbp + vpalignr $8,%xmm0,%xmm1,%xmm8 + rorq $23,%r13 + movq %r14,%rax + vpalignr $8,%xmm4,%xmm5,%xmm11 + movq %r9,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r8,%r13 + xorq %r10,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rax,%r14 + vpaddq %xmm11,%xmm0,%xmm0 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 +.byte 143,72,120,195,209,7 + xorq %r10,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,223,3 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm7,%xmm10 + addq %r11,%rdx + addq %rdi,%r11 + vpaddq %xmm8,%xmm0,%xmm0 + movq %rdx,%r13 + addq %r11,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r11 + vpxor %xmm10,%xmm11,%xmm11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + vpaddq %xmm11,%xmm0,%xmm0 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + vpaddq -128(%rbp),%xmm0,%xmm10 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,0(%rsp) + vpalignr $8,%xmm1,%xmm2,%xmm8 + rorq $23,%r13 + movq %r14,%r10 + vpalignr $8,%xmm5,%xmm6,%xmm11 + movq %rdx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rcx,%r13 + xorq %r8,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r10,%r14 + vpaddq %xmm11,%xmm1,%xmm1 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 +.byte 143,72,120,195,209,7 + xorq %r8,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,216,3 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm0,%xmm10 + addq %r9,%rbx + addq %rdi,%r9 + vpaddq %xmm8,%xmm1,%xmm1 + movq %rbx,%r13 + addq %r9,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r9 + vpxor %xmm10,%xmm11,%xmm11 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + vpaddq %xmm11,%xmm1,%xmm1 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + vpaddq -96(%rbp),%xmm1,%xmm10 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,16(%rsp) + vpalignr $8,%xmm2,%xmm3,%xmm8 + rorq $23,%r13 + movq %r14,%r8 + vpalignr $8,%xmm6,%xmm7,%xmm11 + movq %rbx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rax,%r13 + xorq %rcx,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r8,%r14 + vpaddq %xmm11,%xmm2,%xmm2 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 +.byte 143,72,120,195,209,7 + xorq %rcx,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,217,3 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm1,%xmm10 + addq %rdx,%r11 + addq %rdi,%rdx + vpaddq %xmm8,%xmm2,%xmm2 + movq %r11,%r13 + addq %rdx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rdx + vpxor %xmm10,%xmm11,%xmm11 + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + vpaddq %xmm11,%xmm2,%xmm2 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + vpaddq -64(%rbp),%xmm2,%xmm10 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,32(%rsp) + vpalignr $8,%xmm3,%xmm4,%xmm8 + rorq $23,%r13 + movq %r14,%rcx + vpalignr $8,%xmm7,%xmm0,%xmm11 + movq %r11,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r10,%r13 + xorq %rax,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rcx,%r14 + vpaddq %xmm11,%xmm3,%xmm3 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 +.byte 143,72,120,195,209,7 + xorq %rax,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,218,3 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm2,%xmm10 + addq %rbx,%r9 + addq %rdi,%rbx + vpaddq %xmm8,%xmm3,%xmm3 + movq %r9,%r13 + addq %rbx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rbx + vpxor %xmm10,%xmm11,%xmm11 + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + vpaddq %xmm11,%xmm3,%xmm3 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + vpaddq -32(%rbp),%xmm3,%xmm10 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,48(%rsp) + vpalignr $8,%xmm4,%xmm5,%xmm8 + rorq $23,%r13 + movq %r14,%rax + vpalignr $8,%xmm0,%xmm1,%xmm11 + movq %r9,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r8,%r13 + xorq %r10,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rax,%r14 + vpaddq %xmm11,%xmm4,%xmm4 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 +.byte 143,72,120,195,209,7 + xorq %r10,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,219,3 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm3,%xmm10 + addq %r11,%rdx + addq %rdi,%r11 + vpaddq %xmm8,%xmm4,%xmm4 + movq %rdx,%r13 + addq %r11,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r11 + vpxor %xmm10,%xmm11,%xmm11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + vpaddq %xmm11,%xmm4,%xmm4 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + vpaddq 0(%rbp),%xmm4,%xmm10 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,64(%rsp) + vpalignr $8,%xmm5,%xmm6,%xmm8 + rorq $23,%r13 + movq %r14,%r10 + vpalignr $8,%xmm1,%xmm2,%xmm11 + movq %rdx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rcx,%r13 + xorq %r8,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r10,%r14 + vpaddq %xmm11,%xmm5,%xmm5 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 +.byte 143,72,120,195,209,7 + xorq %r8,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,220,3 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm4,%xmm10 + addq %r9,%rbx + addq %rdi,%r9 + vpaddq %xmm8,%xmm5,%xmm5 + movq %rbx,%r13 + addq %r9,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r9 + vpxor %xmm10,%xmm11,%xmm11 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + vpaddq %xmm11,%xmm5,%xmm5 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + vpaddq 32(%rbp),%xmm5,%xmm10 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,80(%rsp) + vpalignr $8,%xmm6,%xmm7,%xmm8 + rorq $23,%r13 + movq %r14,%r8 + vpalignr $8,%xmm2,%xmm3,%xmm11 + movq %rbx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rax,%r13 + xorq %rcx,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r8,%r14 + vpaddq %xmm11,%xmm6,%xmm6 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 +.byte 143,72,120,195,209,7 + xorq %rcx,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,221,3 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm5,%xmm10 + addq %rdx,%r11 + addq %rdi,%rdx + vpaddq %xmm8,%xmm6,%xmm6 + movq %r11,%r13 + addq %rdx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rdx + vpxor %xmm10,%xmm11,%xmm11 + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + vpaddq %xmm11,%xmm6,%xmm6 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + vpaddq 64(%rbp),%xmm6,%xmm10 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,96(%rsp) + vpalignr $8,%xmm7,%xmm0,%xmm8 + rorq $23,%r13 + movq %r14,%rcx + vpalignr $8,%xmm3,%xmm4,%xmm11 + movq %r11,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r10,%r13 + xorq %rax,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rcx,%r14 + vpaddq %xmm11,%xmm7,%xmm7 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 +.byte 143,72,120,195,209,7 + xorq %rax,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,222,3 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm6,%xmm10 + addq %rbx,%r9 + addq %rdi,%rbx + vpaddq %xmm8,%xmm7,%xmm7 + movq %r9,%r13 + addq %rbx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rbx + vpxor %xmm10,%xmm11,%xmm11 + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + vpaddq %xmm11,%xmm7,%xmm7 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + vpaddq 96(%rbp),%xmm7,%xmm10 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,112(%rsp) + cmpb $0,135(%rbp) + jne .Lxop_00_47 + rorq $23,%r13 + movq %r14,%rax + movq %r9,%r12 + rorq $5,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + rorq $4,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + rorq $6,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + rorq $28,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + rorq $23,%r13 + movq %r14,%r11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + rorq $23,%r13 + movq %r14,%r10 + movq %rdx,%r12 + rorq $5,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + rorq $4,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + rorq $6,%r14 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + rorq $28,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + rorq $23,%r13 + movq %r14,%r9 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + rorq $23,%r13 + movq %r14,%r8 + movq %rbx,%r12 + rorq $5,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + rorq $4,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + rorq $6,%r14 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + rorq $28,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + rorq $23,%r13 + movq %r14,%rdx + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + rorq $23,%r13 + movq %r14,%rcx + movq %r11,%r12 + rorq $5,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + rorq $4,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + rorq $6,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + rorq $28,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + rorq $23,%r13 + movq %r14,%rbx + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + rorq $23,%r13 + movq %r14,%rax + movq %r9,%r12 + rorq $5,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + rorq $4,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + rorq $6,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + rorq $28,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + rorq $23,%r13 + movq %r14,%r11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + rorq $23,%r13 + movq %r14,%r10 + movq %rdx,%r12 + rorq $5,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + rorq $4,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + rorq $6,%r14 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + rorq $28,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + rorq $23,%r13 + movq %r14,%r9 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + rorq $23,%r13 + movq %r14,%r8 + movq %rbx,%r12 + rorq $5,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + rorq $4,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + rorq $6,%r14 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + rorq $28,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + rorq $23,%r13 + movq %r14,%rdx + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + rorq $23,%r13 + movq %r14,%rcx + movq %r11,%r12 + rorq $5,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + rorq $4,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + rorq $6,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + rorq $28,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + rorq $23,%r13 + movq %r14,%rbx + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + movq 128+0(%rsp),%rdi + movq %r14,%rax + + addq 0(%rdi),%rax + leaq 128(%rsi),%rsi + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb .Lloop_xop + + movq 128+24(%rsp),%rsi + vzeroupper + movq (%rsi),%r15 + movq 8(%rsi),%r14 + movq 16(%rsi),%r13 + movq 24(%rsi),%r12 + movq 32(%rsi),%rbp + movq 40(%rsi),%rbx + leaq 48(%rsi),%rsp +.Lepilogue_xop: + .byte 0xf3,0xc3 +.size sha512_block_data_order_xop,.-sha512_block_data_order_xop +.type sha512_block_data_order_avx,@function +.align 64 +sha512_block_data_order_avx: +.Lavx_shortcut: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + movq %rsp,%r11 + shlq $4,%rdx + subq $160,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %r11,128+24(%rsp) +.Lprologue_avx: + + vzeroupper + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp .Lloop_avx +.align 16 +.Lloop_avx: + vmovdqa K512+1280(%rip),%xmm11 + vmovdqu 0(%rsi),%xmm0 + leaq K512+128(%rip),%rbp + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vpshufb %xmm11,%xmm0,%xmm0 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm11,%xmm1,%xmm1 + vmovdqu 64(%rsi),%xmm4 + vpshufb %xmm11,%xmm2,%xmm2 + vmovdqu 80(%rsi),%xmm5 + vpshufb %xmm11,%xmm3,%xmm3 + vmovdqu 96(%rsi),%xmm6 + vpshufb %xmm11,%xmm4,%xmm4 + vmovdqu 112(%rsi),%xmm7 + vpshufb %xmm11,%xmm5,%xmm5 + vpaddq -128(%rbp),%xmm0,%xmm8 + vpshufb %xmm11,%xmm6,%xmm6 + vpaddq -96(%rbp),%xmm1,%xmm9 + vpshufb %xmm11,%xmm7,%xmm7 + vpaddq -64(%rbp),%xmm2,%xmm10 + vpaddq -32(%rbp),%xmm3,%xmm11 + vmovdqa %xmm8,0(%rsp) + vpaddq 0(%rbp),%xmm4,%xmm8 + vmovdqa %xmm9,16(%rsp) + vpaddq 32(%rbp),%xmm5,%xmm9 + vmovdqa %xmm10,32(%rsp) + vpaddq 64(%rbp),%xmm6,%xmm10 + vmovdqa %xmm11,48(%rsp) + vpaddq 96(%rbp),%xmm7,%xmm11 + vmovdqa %xmm8,64(%rsp) + movq %rax,%r14 + vmovdqa %xmm9,80(%rsp) + movq %rbx,%rdi + vmovdqa %xmm10,96(%rsp) + xorq %rcx,%rdi + vmovdqa %xmm11,112(%rsp) + movq %r8,%r13 + jmp .Lavx_00_47 + +.align 16 +.Lavx_00_47: + addq $256,%rbp + vpalignr $8,%xmm0,%xmm1,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rax + vpalignr $8,%xmm4,%xmm5,%xmm11 + movq %r9,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r8,%r13 + xorq %r10,%r12 + vpaddq %xmm11,%xmm0,%xmm0 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r8,%r12 + xorq %r8,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 0(%rsp),%r11 + movq %rax,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rbx,%r15 + addq %r12,%r11 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm7,%xmm11 + addq %r11,%rdx + addq %rdi,%r11 + vpxor %xmm9,%xmm8,%xmm8 + movq %rdx,%r13 + addq %r11,%r14 + vpsllq $3,%xmm7,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r11 + vpaddq %xmm8,%xmm0,%xmm0 + movq %r8,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm7,%xmm9 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rdx,%r12 + xorq %rdx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 8(%rsp),%r10 + movq %r11,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r9,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rax,%rdi + addq %r12,%r10 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm0,%xmm0 + xorq %r11,%r14 + addq %r13,%r10 + vpaddq -128(%rbp),%xmm0,%xmm10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,0(%rsp) + vpalignr $8,%xmm1,%xmm2,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r10 + vpalignr $8,%xmm5,%xmm6,%xmm11 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rcx,%r13 + xorq %r8,%r12 + vpaddq %xmm11,%xmm1,%xmm1 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rcx,%r12 + xorq %rcx,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 16(%rsp),%r9 + movq %r10,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r11,%r15 + addq %r12,%r9 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm0,%xmm11 + addq %r9,%rbx + addq %rdi,%r9 + vpxor %xmm9,%xmm8,%xmm8 + movq %rbx,%r13 + addq %r9,%r14 + vpsllq $3,%xmm0,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r9 + vpaddq %xmm8,%xmm1,%xmm1 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm0,%xmm9 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rbx,%r12 + xorq %rbx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 24(%rsp),%r8 + movq %r9,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r10,%rdi + addq %r12,%r8 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm1,%xmm1 + xorq %r9,%r14 + addq %r13,%r8 + vpaddq -96(%rbp),%xmm1,%xmm10 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,16(%rsp) + vpalignr $8,%xmm2,%xmm3,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r8 + vpalignr $8,%xmm6,%xmm7,%xmm11 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rax,%r13 + xorq %rcx,%r12 + vpaddq %xmm11,%xmm2,%xmm2 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rax,%r12 + xorq %rax,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 32(%rsp),%rdx + movq %r8,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r9,%r15 + addq %r12,%rdx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm1,%xmm11 + addq %rdx,%r11 + addq %rdi,%rdx + vpxor %xmm9,%xmm8,%xmm8 + movq %r11,%r13 + addq %rdx,%r14 + vpsllq $3,%xmm1,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rdx + vpaddq %xmm8,%xmm2,%xmm2 + movq %rax,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm1,%xmm9 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r11,%r12 + xorq %r11,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 40(%rsp),%rcx + movq %rdx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r8,%rdi + addq %r12,%rcx + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm2,%xmm2 + xorq %rdx,%r14 + addq %r13,%rcx + vpaddq -64(%rbp),%xmm2,%xmm10 + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,32(%rsp) + vpalignr $8,%xmm3,%xmm4,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rcx + vpalignr $8,%xmm7,%xmm0,%xmm11 + movq %r11,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r10,%r13 + xorq %rax,%r12 + vpaddq %xmm11,%xmm3,%xmm3 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r10,%r12 + xorq %r10,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 48(%rsp),%rbx + movq %rcx,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rdx,%r15 + addq %r12,%rbx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm2,%xmm11 + addq %rbx,%r9 + addq %rdi,%rbx + vpxor %xmm9,%xmm8,%xmm8 + movq %r9,%r13 + addq %rbx,%r14 + vpsllq $3,%xmm2,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rbx + vpaddq %xmm8,%xmm3,%xmm3 + movq %r10,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm2,%xmm9 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r9,%r12 + xorq %r9,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 56(%rsp),%rax + movq %rbx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r11,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rcx,%rdi + addq %r12,%rax + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm3,%xmm3 + xorq %rbx,%r14 + addq %r13,%rax + vpaddq -32(%rbp),%xmm3,%xmm10 + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,48(%rsp) + vpalignr $8,%xmm4,%xmm5,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rax + vpalignr $8,%xmm0,%xmm1,%xmm11 + movq %r9,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r8,%r13 + xorq %r10,%r12 + vpaddq %xmm11,%xmm4,%xmm4 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r8,%r12 + xorq %r8,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 64(%rsp),%r11 + movq %rax,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rbx,%r15 + addq %r12,%r11 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm3,%xmm11 + addq %r11,%rdx + addq %rdi,%r11 + vpxor %xmm9,%xmm8,%xmm8 + movq %rdx,%r13 + addq %r11,%r14 + vpsllq $3,%xmm3,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r11 + vpaddq %xmm8,%xmm4,%xmm4 + movq %r8,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm3,%xmm9 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rdx,%r12 + xorq %rdx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 72(%rsp),%r10 + movq %r11,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r9,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rax,%rdi + addq %r12,%r10 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm4,%xmm4 + xorq %r11,%r14 + addq %r13,%r10 + vpaddq 0(%rbp),%xmm4,%xmm10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,64(%rsp) + vpalignr $8,%xmm5,%xmm6,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r10 + vpalignr $8,%xmm1,%xmm2,%xmm11 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rcx,%r13 + xorq %r8,%r12 + vpaddq %xmm11,%xmm5,%xmm5 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rcx,%r12 + xorq %rcx,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 80(%rsp),%r9 + movq %r10,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r11,%r15 + addq %r12,%r9 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm4,%xmm11 + addq %r9,%rbx + addq %rdi,%r9 + vpxor %xmm9,%xmm8,%xmm8 + movq %rbx,%r13 + addq %r9,%r14 + vpsllq $3,%xmm4,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r9 + vpaddq %xmm8,%xmm5,%xmm5 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm4,%xmm9 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rbx,%r12 + xorq %rbx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 88(%rsp),%r8 + movq %r9,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r10,%rdi + addq %r12,%r8 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm5,%xmm5 + xorq %r9,%r14 + addq %r13,%r8 + vpaddq 32(%rbp),%xmm5,%xmm10 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,80(%rsp) + vpalignr $8,%xmm6,%xmm7,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r8 + vpalignr $8,%xmm2,%xmm3,%xmm11 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rax,%r13 + xorq %rcx,%r12 + vpaddq %xmm11,%xmm6,%xmm6 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rax,%r12 + xorq %rax,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 96(%rsp),%rdx + movq %r8,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r9,%r15 + addq %r12,%rdx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm5,%xmm11 + addq %rdx,%r11 + addq %rdi,%rdx + vpxor %xmm9,%xmm8,%xmm8 + movq %r11,%r13 + addq %rdx,%r14 + vpsllq $3,%xmm5,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rdx + vpaddq %xmm8,%xmm6,%xmm6 + movq %rax,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm5,%xmm9 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r11,%r12 + xorq %r11,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 104(%rsp),%rcx + movq %rdx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r8,%rdi + addq %r12,%rcx + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm6,%xmm6 + xorq %rdx,%r14 + addq %r13,%rcx + vpaddq 64(%rbp),%xmm6,%xmm10 + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,96(%rsp) + vpalignr $8,%xmm7,%xmm0,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rcx + vpalignr $8,%xmm3,%xmm4,%xmm11 + movq %r11,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r10,%r13 + xorq %rax,%r12 + vpaddq %xmm11,%xmm7,%xmm7 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r10,%r12 + xorq %r10,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 112(%rsp),%rbx + movq %rcx,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rdx,%r15 + addq %r12,%rbx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm6,%xmm11 + addq %rbx,%r9 + addq %rdi,%rbx + vpxor %xmm9,%xmm8,%xmm8 + movq %r9,%r13 + addq %rbx,%r14 + vpsllq $3,%xmm6,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rbx + vpaddq %xmm8,%xmm7,%xmm7 + movq %r10,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm6,%xmm9 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r9,%r12 + xorq %r9,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 120(%rsp),%rax + movq %rbx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r11,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rcx,%rdi + addq %r12,%rax + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm7,%xmm7 + xorq %rbx,%r14 + addq %r13,%rax + vpaddq 96(%rbp),%xmm7,%xmm10 + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,112(%rsp) + cmpb $0,135(%rbp) + jne .Lavx_00_47 + shrdq $23,%r13,%r13 + movq %r14,%rax + movq %r9,%r12 + shrdq $5,%r14,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r11 + movq %r8,%r12 + shrdq $5,%r14,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + shrdq $6,%r14,%r14 + xorq %rax,%rdi + addq %r12,%r10 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r10 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + xorq %r11,%r15 + addq %r12,%r9 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r9 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + xorq %r10,%rdi + addq %r12,%r8 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r8 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + xorq %r9,%r15 + addq %r12,%rdx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + shrdq $28,%r14,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rdx + movq %rax,%r12 + shrdq $5,%r14,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + xorq %r8,%rdi + addq %r12,%rcx + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rcx + movq %r11,%r12 + shrdq $5,%r14,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rbx + movq %r10,%r12 + shrdq $5,%r14,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + shrdq $6,%r14,%r14 + xorq %rcx,%rdi + addq %r12,%rax + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rax + movq %r9,%r12 + shrdq $5,%r14,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r11 + movq %r8,%r12 + shrdq $5,%r14,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + shrdq $6,%r14,%r14 + xorq %rax,%rdi + addq %r12,%r10 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r10 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + xorq %r11,%r15 + addq %r12,%r9 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r9 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + xorq %r10,%rdi + addq %r12,%r8 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r8 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + xorq %r9,%r15 + addq %r12,%rdx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + shrdq $28,%r14,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rdx + movq %rax,%r12 + shrdq $5,%r14,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + xorq %r8,%rdi + addq %r12,%rcx + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rcx + movq %r11,%r12 + shrdq $5,%r14,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rbx + movq %r10,%r12 + shrdq $5,%r14,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + shrdq $6,%r14,%r14 + xorq %rcx,%rdi + addq %r12,%rax + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + movq 128+0(%rsp),%rdi + movq %r14,%rax + + addq 0(%rdi),%rax + leaq 128(%rsi),%rsi + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb .Lloop_avx + + movq 128+24(%rsp),%rsi + vzeroupper + movq (%rsi),%r15 + movq 8(%rsi),%r14 + movq 16(%rsi),%r13 + movq 24(%rsi),%r12 + movq 32(%rsi),%rbp + movq 40(%rsi),%rbx + leaq 48(%rsi),%rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.size sha512_block_data_order_avx,.-sha512_block_data_order_avx #endif
diff --git a/third_party/boringssl/mac-x86/crypto/sha/sha1-586.S b/third_party/boringssl/mac-x86/crypto/sha/sha1-586.S index f880e7e..72a7205d 100644 --- a/third_party/boringssl/mac-x86/crypto/sha/sha1-586.S +++ b/third_party/boringssl/mac-x86/crypto/sha/sha1-586.S
@@ -22,6 +22,11 @@ movl 8(%esi),%ecx testl $16777216,%eax jz L001x86 + andl $268435456,%edx + andl $1073741824,%eax + orl %edx,%eax + cmpl $1342177280,%eax + je Lavx_shortcut jmp Lssse3_shortcut .align 4,0x90 L001x86: @@ -2607,6 +2612,1175 @@ popl %ebx popl %ebp ret +.private_extern __sha1_block_data_order_avx +.align 4 +__sha1_block_data_order_avx: + pushl %ebp + pushl %ebx + pushl %esi + pushl %edi + call L006pic_point +L006pic_point: + popl %ebp + leal LK_XX_XX-L006pic_point(%ebp),%ebp +Lavx_shortcut: + vzeroall + vmovdqa (%ebp),%xmm7 + vmovdqa 16(%ebp),%xmm0 + vmovdqa 32(%ebp),%xmm1 + vmovdqa 48(%ebp),%xmm2 + vmovdqa 64(%ebp),%xmm6 + movl 20(%esp),%edi + movl 24(%esp),%ebp + movl 28(%esp),%edx + movl %esp,%esi + subl $208,%esp + andl $-64,%esp + vmovdqa %xmm0,112(%esp) + vmovdqa %xmm1,128(%esp) + vmovdqa %xmm2,144(%esp) + shll $6,%edx + vmovdqa %xmm7,160(%esp) + addl %ebp,%edx + vmovdqa %xmm6,176(%esp) + addl $64,%ebp + movl %edi,192(%esp) + movl %ebp,196(%esp) + movl %edx,200(%esp) + movl %esi,204(%esp) + movl (%edi),%eax + movl 4(%edi),%ebx + movl 8(%edi),%ecx + movl 12(%edi),%edx + movl 16(%edi),%edi + movl %ebx,%esi + vmovdqu -64(%ebp),%xmm0 + vmovdqu -48(%ebp),%xmm1 + vmovdqu -32(%ebp),%xmm2 + vmovdqu -16(%ebp),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + vpshufb %xmm6,%xmm1,%xmm1 + vpshufb %xmm6,%xmm2,%xmm2 + vmovdqa %xmm7,96(%esp) + vpshufb %xmm6,%xmm3,%xmm3 + vpaddd %xmm7,%xmm0,%xmm4 + vpaddd %xmm7,%xmm1,%xmm5 + vpaddd %xmm7,%xmm2,%xmm6 + vmovdqa %xmm4,(%esp) + movl %ecx,%ebp + vmovdqa %xmm5,16(%esp) + xorl %edx,%ebp + vmovdqa %xmm6,32(%esp) + andl %ebp,%esi + jmp L007loop +.align 4,0x90 +L007loop: + shrdl $2,%ebx,%ebx + xorl %edx,%esi + vpalignr $8,%xmm0,%xmm1,%xmm4 + movl %eax,%ebp + addl (%esp),%edi + vpaddd %xmm3,%xmm7,%xmm7 + vmovdqa %xmm0,64(%esp) + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrldq $4,%xmm3,%xmm6 + addl %esi,%edi + andl %ebx,%ebp + vpxor %xmm0,%xmm4,%xmm4 + xorl %ecx,%ebx + addl %eax,%edi + vpxor %xmm2,%xmm6,%xmm6 + shrdl $7,%eax,%eax + xorl %ecx,%ebp + vmovdqa %xmm7,48(%esp) + movl %edi,%esi + addl 4(%esp),%edx + vpxor %xmm6,%xmm4,%xmm4 + xorl %ebx,%eax + shldl $5,%edi,%edi + addl %ebp,%edx + andl %eax,%esi + vpsrld $31,%xmm4,%xmm6 + xorl %ebx,%eax + addl %edi,%edx + shrdl $7,%edi,%edi + xorl %ebx,%esi + vpslldq $12,%xmm4,%xmm0 + vpaddd %xmm4,%xmm4,%xmm4 + movl %edx,%ebp + addl 8(%esp),%ecx + xorl %eax,%edi + shldl $5,%edx,%edx + vpsrld $30,%xmm0,%xmm7 + vpor %xmm6,%xmm4,%xmm4 + addl %esi,%ecx + andl %edi,%ebp + xorl %eax,%edi + addl %edx,%ecx + vpslld $2,%xmm0,%xmm0 + shrdl $7,%edx,%edx + xorl %eax,%ebp + vpxor %xmm7,%xmm4,%xmm4 + movl %ecx,%esi + addl 12(%esp),%ebx + xorl %edi,%edx + shldl $5,%ecx,%ecx + vpxor %xmm0,%xmm4,%xmm4 + addl %ebp,%ebx + andl %edx,%esi + vmovdqa 96(%esp),%xmm0 + xorl %edi,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %edi,%esi + vpalignr $8,%xmm1,%xmm2,%xmm5 + movl %ebx,%ebp + addl 16(%esp),%eax + vpaddd %xmm4,%xmm0,%xmm0 + vmovdqa %xmm1,80(%esp) + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrldq $4,%xmm4,%xmm7 + addl %esi,%eax + andl %ecx,%ebp + vpxor %xmm1,%xmm5,%xmm5 + xorl %edx,%ecx + addl %ebx,%eax + vpxor %xmm3,%xmm7,%xmm7 + shrdl $7,%ebx,%ebx + xorl %edx,%ebp + vmovdqa %xmm0,(%esp) + movl %eax,%esi + addl 20(%esp),%edi + vpxor %xmm7,%xmm5,%xmm5 + xorl %ecx,%ebx + shldl $5,%eax,%eax + addl %ebp,%edi + andl %ebx,%esi + vpsrld $31,%xmm5,%xmm7 + xorl %ecx,%ebx + addl %eax,%edi + shrdl $7,%eax,%eax + xorl %ecx,%esi + vpslldq $12,%xmm5,%xmm1 + vpaddd %xmm5,%xmm5,%xmm5 + movl %edi,%ebp + addl 24(%esp),%edx + xorl %ebx,%eax + shldl $5,%edi,%edi + vpsrld $30,%xmm1,%xmm0 + vpor %xmm7,%xmm5,%xmm5 + addl %esi,%edx + andl %eax,%ebp + xorl %ebx,%eax + addl %edi,%edx + vpslld $2,%xmm1,%xmm1 + shrdl $7,%edi,%edi + xorl %ebx,%ebp + vpxor %xmm0,%xmm5,%xmm5 + movl %edx,%esi + addl 28(%esp),%ecx + xorl %eax,%edi + shldl $5,%edx,%edx + vpxor %xmm1,%xmm5,%xmm5 + addl %ebp,%ecx + andl %edi,%esi + vmovdqa 112(%esp),%xmm1 + xorl %eax,%edi + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + vpalignr $8,%xmm2,%xmm3,%xmm6 + movl %ecx,%ebp + addl 32(%esp),%ebx + vpaddd %xmm5,%xmm1,%xmm1 + vmovdqa %xmm2,96(%esp) + xorl %edi,%edx + shldl $5,%ecx,%ecx + vpsrldq $4,%xmm5,%xmm0 + addl %esi,%ebx + andl %edx,%ebp + vpxor %xmm2,%xmm6,%xmm6 + xorl %edi,%edx + addl %ecx,%ebx + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%ecx,%ecx + xorl %edi,%ebp + vmovdqa %xmm1,16(%esp) + movl %ebx,%esi + addl 36(%esp),%eax + vpxor %xmm0,%xmm6,%xmm6 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + addl %ebp,%eax + andl %ecx,%esi + vpsrld $31,%xmm6,%xmm0 + xorl %edx,%ecx + addl %ebx,%eax + shrdl $7,%ebx,%ebx + xorl %edx,%esi + vpslldq $12,%xmm6,%xmm2 + vpaddd %xmm6,%xmm6,%xmm6 + movl %eax,%ebp + addl 40(%esp),%edi + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm1 + vpor %xmm0,%xmm6,%xmm6 + addl %esi,%edi + andl %ebx,%ebp + xorl %ecx,%ebx + addl %eax,%edi + vpslld $2,%xmm2,%xmm2 + vmovdqa 64(%esp),%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%ebp + vpxor %xmm1,%xmm6,%xmm6 + movl %edi,%esi + addl 44(%esp),%edx + xorl %ebx,%eax + shldl $5,%edi,%edi + vpxor %xmm2,%xmm6,%xmm6 + addl %ebp,%edx + andl %eax,%esi + vmovdqa 112(%esp),%xmm2 + xorl %ebx,%eax + addl %edi,%edx + shrdl $7,%edi,%edi + xorl %ebx,%esi + vpalignr $8,%xmm3,%xmm4,%xmm7 + movl %edx,%ebp + addl 48(%esp),%ecx + vpaddd %xmm6,%xmm2,%xmm2 + vmovdqa %xmm3,64(%esp) + xorl %eax,%edi + shldl $5,%edx,%edx + vpsrldq $4,%xmm6,%xmm1 + addl %esi,%ecx + andl %edi,%ebp + vpxor %xmm3,%xmm7,%xmm7 + xorl %eax,%edi + addl %edx,%ecx + vpxor %xmm5,%xmm1,%xmm1 + shrdl $7,%edx,%edx + xorl %eax,%ebp + vmovdqa %xmm2,32(%esp) + movl %ecx,%esi + addl 52(%esp),%ebx + vpxor %xmm1,%xmm7,%xmm7 + xorl %edi,%edx + shldl $5,%ecx,%ecx + addl %ebp,%ebx + andl %edx,%esi + vpsrld $31,%xmm7,%xmm1 + xorl %edi,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %edi,%esi + vpslldq $12,%xmm7,%xmm3 + vpaddd %xmm7,%xmm7,%xmm7 + movl %ebx,%ebp + addl 56(%esp),%eax + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm2 + vpor %xmm1,%xmm7,%xmm7 + addl %esi,%eax + andl %ecx,%ebp + xorl %edx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + vmovdqa 80(%esp),%xmm1 + shrdl $7,%ebx,%ebx + xorl %edx,%ebp + vpxor %xmm2,%xmm7,%xmm7 + movl %eax,%esi + addl 60(%esp),%edi + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpxor %xmm3,%xmm7,%xmm7 + addl %ebp,%edi + andl %ebx,%esi + vmovdqa 112(%esp),%xmm3 + xorl %ecx,%ebx + addl %eax,%edi + vpalignr $8,%xmm6,%xmm7,%xmm2 + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%esi + movl %edi,%ebp + addl (%esp),%edx + vpxor %xmm1,%xmm0,%xmm0 + vmovdqa %xmm4,80(%esp) + xorl %ebx,%eax + shldl $5,%edi,%edi + vmovdqa %xmm3,%xmm4 + vpaddd %xmm7,%xmm3,%xmm3 + addl %esi,%edx + andl %eax,%ebp + vpxor %xmm2,%xmm0,%xmm0 + xorl %ebx,%eax + addl %edi,%edx + shrdl $7,%edi,%edi + xorl %ebx,%ebp + vpsrld $30,%xmm0,%xmm2 + vmovdqa %xmm3,48(%esp) + movl %edx,%esi + addl 4(%esp),%ecx + xorl %eax,%edi + shldl $5,%edx,%edx + vpslld $2,%xmm0,%xmm0 + addl %ebp,%ecx + andl %edi,%esi + xorl %eax,%edi + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + movl %ecx,%ebp + addl 8(%esp),%ebx + vpor %xmm2,%xmm0,%xmm0 + xorl %edi,%edx + shldl $5,%ecx,%ecx + vmovdqa 96(%esp),%xmm2 + addl %esi,%ebx + andl %edx,%ebp + xorl %edi,%edx + addl %ecx,%ebx + addl 12(%esp),%eax + xorl %edi,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm7,%xmm0,%xmm3 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + vpxor %xmm2,%xmm1,%xmm1 + vmovdqa %xmm5,96(%esp) + addl %esi,%edi + xorl %ecx,%ebp + vmovdqa %xmm4,%xmm5 + vpaddd %xmm0,%xmm4,%xmm4 + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpxor %xmm3,%xmm1,%xmm1 + addl 20(%esp),%edx + xorl %ebx,%ebp + movl %edi,%esi + shldl $5,%edi,%edi + vpsrld $30,%xmm1,%xmm3 + vmovdqa %xmm4,(%esp) + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + vpslld $2,%xmm1,%xmm1 + addl 24(%esp),%ecx + xorl %eax,%esi + movl %edx,%ebp + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%ebp + shrdl $7,%edi,%edi + addl %edx,%ecx + vpor %xmm3,%xmm1,%xmm1 + addl 28(%esp),%ebx + xorl %edi,%ebp + vmovdqa 64(%esp),%xmm3 + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpalignr $8,%xmm0,%xmm1,%xmm4 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%esp),%eax + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + vpxor %xmm3,%xmm2,%xmm2 + vmovdqa %xmm6,64(%esp) + addl %esi,%eax + xorl %edx,%ebp + vmovdqa 128(%esp),%xmm6 + vpaddd %xmm1,%xmm5,%xmm5 + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpxor %xmm4,%xmm2,%xmm2 + addl 36(%esp),%edi + xorl %ecx,%ebp + movl %eax,%esi + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm4 + vmovdqa %xmm5,16(%esp) + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpslld $2,%xmm2,%xmm2 + addl 40(%esp),%edx + xorl %ebx,%esi + movl %edi,%ebp + shldl $5,%edi,%edi + addl %esi,%edx + xorl %ebx,%ebp + shrdl $7,%eax,%eax + addl %edi,%edx + vpor %xmm4,%xmm2,%xmm2 + addl 44(%esp),%ecx + xorl %eax,%ebp + vmovdqa 80(%esp),%xmm4 + movl %edx,%esi + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + vpalignr $8,%xmm1,%xmm2,%xmm5 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + vpxor %xmm4,%xmm3,%xmm3 + vmovdqa %xmm7,80(%esp) + addl %esi,%ebx + xorl %edi,%ebp + vmovdqa %xmm6,%xmm7 + vpaddd %xmm2,%xmm6,%xmm6 + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpxor %xmm5,%xmm3,%xmm3 + addl 52(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm5 + vmovdqa %xmm6,32(%esp) + addl %ebp,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + addl 56(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + addl %esi,%edi + xorl %ecx,%ebp + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpor %xmm5,%xmm3,%xmm3 + addl 60(%esp),%edx + xorl %ebx,%ebp + vmovdqa 96(%esp),%xmm5 + movl %edi,%esi + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + vpalignr $8,%xmm2,%xmm3,%xmm6 + vpxor %xmm0,%xmm4,%xmm4 + addl (%esp),%ecx + xorl %eax,%esi + movl %edx,%ebp + shldl $5,%edx,%edx + vpxor %xmm5,%xmm4,%xmm4 + vmovdqa %xmm0,96(%esp) + addl %esi,%ecx + xorl %eax,%ebp + vmovdqa %xmm7,%xmm0 + vpaddd %xmm3,%xmm7,%xmm7 + shrdl $7,%edi,%edi + addl %edx,%ecx + vpxor %xmm6,%xmm4,%xmm4 + addl 4(%esp),%ebx + xorl %edi,%ebp + movl %ecx,%esi + shldl $5,%ecx,%ecx + vpsrld $30,%xmm4,%xmm6 + vmovdqa %xmm7,48(%esp) + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpslld $2,%xmm4,%xmm4 + addl 8(%esp),%eax + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%ebp + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpor %xmm6,%xmm4,%xmm4 + addl 12(%esp),%edi + xorl %ecx,%ebp + vmovdqa 64(%esp),%xmm6 + movl %eax,%esi + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpalignr $8,%xmm3,%xmm4,%xmm7 + vpxor %xmm1,%xmm5,%xmm5 + addl 16(%esp),%edx + xorl %ebx,%esi + movl %edi,%ebp + shldl $5,%edi,%edi + vpxor %xmm6,%xmm5,%xmm5 + vmovdqa %xmm1,64(%esp) + addl %esi,%edx + xorl %ebx,%ebp + vmovdqa %xmm0,%xmm1 + vpaddd %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + addl %edi,%edx + vpxor %xmm7,%xmm5,%xmm5 + addl 20(%esp),%ecx + xorl %eax,%ebp + movl %edx,%esi + shldl $5,%edx,%edx + vpsrld $30,%xmm5,%xmm7 + vmovdqa %xmm0,(%esp) + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + vpslld $2,%xmm5,%xmm5 + addl 24(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpor %xmm7,%xmm5,%xmm5 + addl 28(%esp),%eax + vmovdqa 80(%esp),%xmm7 + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%ebp + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm4,%xmm5,%xmm0 + vpxor %xmm2,%xmm6,%xmm6 + addl 32(%esp),%edi + andl %ecx,%esi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vpxor %xmm7,%xmm6,%xmm6 + vmovdqa %xmm2,80(%esp) + movl %eax,%ebp + xorl %ecx,%esi + vmovdqa %xmm1,%xmm2 + vpaddd %xmm5,%xmm1,%xmm1 + shldl $5,%eax,%eax + addl %esi,%edi + vpxor %xmm0,%xmm6,%xmm6 + xorl %ebx,%ebp + xorl %ecx,%ebx + addl %eax,%edi + addl 36(%esp),%edx + vpsrld $30,%xmm6,%xmm0 + vmovdqa %xmm1,16(%esp) + andl %ebx,%ebp + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %edi,%esi + vpslld $2,%xmm6,%xmm6 + xorl %ebx,%ebp + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %edi,%edx + addl 40(%esp),%ecx + andl %eax,%esi + vpor %xmm0,%xmm6,%xmm6 + xorl %ebx,%eax + shrdl $7,%edi,%edi + vmovdqa 96(%esp),%xmm0 + movl %edx,%ebp + xorl %eax,%esi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %edi,%ebp + xorl %eax,%edi + addl %edx,%ecx + addl 44(%esp),%ebx + andl %edi,%ebp + xorl %eax,%edi + shrdl $7,%edx,%edx + movl %ecx,%esi + xorl %edi,%ebp + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edx,%esi + xorl %edi,%edx + addl %ecx,%ebx + vpalignr $8,%xmm5,%xmm6,%xmm1 + vpxor %xmm3,%xmm7,%xmm7 + addl 48(%esp),%eax + andl %edx,%esi + xorl %edi,%edx + shrdl $7,%ecx,%ecx + vpxor %xmm0,%xmm7,%xmm7 + vmovdqa %xmm3,96(%esp) + movl %ebx,%ebp + xorl %edx,%esi + vmovdqa 144(%esp),%xmm3 + vpaddd %xmm6,%xmm2,%xmm2 + shldl $5,%ebx,%ebx + addl %esi,%eax + vpxor %xmm1,%xmm7,%xmm7 + xorl %ecx,%ebp + xorl %edx,%ecx + addl %ebx,%eax + addl 52(%esp),%edi + vpsrld $30,%xmm7,%xmm1 + vmovdqa %xmm2,32(%esp) + andl %ecx,%ebp + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + vpslld $2,%xmm7,%xmm7 + xorl %ecx,%ebp + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%edi + addl 56(%esp),%edx + andl %ebx,%esi + vpor %xmm1,%xmm7,%xmm7 + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vmovdqa 64(%esp),%xmm1 + movl %edi,%ebp + xorl %ebx,%esi + shldl $5,%edi,%edi + addl %esi,%edx + xorl %eax,%ebp + xorl %ebx,%eax + addl %edi,%edx + addl 60(%esp),%ecx + andl %eax,%ebp + xorl %ebx,%eax + shrdl $7,%edi,%edi + movl %edx,%esi + xorl %eax,%ebp + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %edi,%esi + xorl %eax,%edi + addl %edx,%ecx + vpalignr $8,%xmm6,%xmm7,%xmm2 + vpxor %xmm4,%xmm0,%xmm0 + addl (%esp),%ebx + andl %edi,%esi + xorl %eax,%edi + shrdl $7,%edx,%edx + vpxor %xmm1,%xmm0,%xmm0 + vmovdqa %xmm4,64(%esp) + movl %ecx,%ebp + xorl %edi,%esi + vmovdqa %xmm3,%xmm4 + vpaddd %xmm7,%xmm3,%xmm3 + shldl $5,%ecx,%ecx + addl %esi,%ebx + vpxor %xmm2,%xmm0,%xmm0 + xorl %edx,%ebp + xorl %edi,%edx + addl %ecx,%ebx + addl 4(%esp),%eax + vpsrld $30,%xmm0,%xmm2 + vmovdqa %xmm3,48(%esp) + andl %edx,%ebp + xorl %edi,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + vpslld $2,%xmm0,%xmm0 + xorl %edx,%ebp + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + addl 8(%esp),%edi + andl %ecx,%esi + vpor %xmm2,%xmm0,%xmm0 + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vmovdqa 80(%esp),%xmm2 + movl %eax,%ebp + xorl %ecx,%esi + shldl $5,%eax,%eax + addl %esi,%edi + xorl %ebx,%ebp + xorl %ecx,%ebx + addl %eax,%edi + addl 12(%esp),%edx + andl %ebx,%ebp + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %edi,%esi + xorl %ebx,%ebp + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %edi,%edx + vpalignr $8,%xmm7,%xmm0,%xmm3 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%esp),%ecx + andl %eax,%esi + xorl %ebx,%eax + shrdl $7,%edi,%edi + vpxor %xmm2,%xmm1,%xmm1 + vmovdqa %xmm5,80(%esp) + movl %edx,%ebp + xorl %eax,%esi + vmovdqa %xmm4,%xmm5 + vpaddd %xmm0,%xmm4,%xmm4 + shldl $5,%edx,%edx + addl %esi,%ecx + vpxor %xmm3,%xmm1,%xmm1 + xorl %edi,%ebp + xorl %eax,%edi + addl %edx,%ecx + addl 20(%esp),%ebx + vpsrld $30,%xmm1,%xmm3 + vmovdqa %xmm4,(%esp) + andl %edi,%ebp + xorl %eax,%edi + shrdl $7,%edx,%edx + movl %ecx,%esi + vpslld $2,%xmm1,%xmm1 + xorl %edi,%ebp + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edx,%esi + xorl %edi,%edx + addl %ecx,%ebx + addl 24(%esp),%eax + andl %edx,%esi + vpor %xmm3,%xmm1,%xmm1 + xorl %edi,%edx + shrdl $7,%ecx,%ecx + vmovdqa 96(%esp),%xmm3 + movl %ebx,%ebp + xorl %edx,%esi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %ecx,%ebp + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%esp),%edi + andl %ecx,%ebp + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + xorl %ecx,%ebp + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%edi + vpalignr $8,%xmm0,%xmm1,%xmm4 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%esp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vpxor %xmm3,%xmm2,%xmm2 + vmovdqa %xmm6,96(%esp) + movl %edi,%ebp + xorl %ebx,%esi + vmovdqa %xmm5,%xmm6 + vpaddd %xmm1,%xmm5,%xmm5 + shldl $5,%edi,%edi + addl %esi,%edx + vpxor %xmm4,%xmm2,%xmm2 + xorl %eax,%ebp + xorl %ebx,%eax + addl %edi,%edx + addl 36(%esp),%ecx + vpsrld $30,%xmm2,%xmm4 + vmovdqa %xmm5,16(%esp) + andl %eax,%ebp + xorl %ebx,%eax + shrdl $7,%edi,%edi + movl %edx,%esi + vpslld $2,%xmm2,%xmm2 + xorl %eax,%ebp + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %edi,%esi + xorl %eax,%edi + addl %edx,%ecx + addl 40(%esp),%ebx + andl %edi,%esi + vpor %xmm4,%xmm2,%xmm2 + xorl %eax,%edi + shrdl $7,%edx,%edx + vmovdqa 64(%esp),%xmm4 + movl %ecx,%ebp + xorl %edi,%esi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edx,%ebp + xorl %edi,%edx + addl %ecx,%ebx + addl 44(%esp),%eax + andl %edx,%ebp + xorl %edi,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%ebp + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %edx,%esi + addl %ebx,%eax + vpalignr $8,%xmm1,%xmm2,%xmm5 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + vpxor %xmm4,%xmm3,%xmm3 + vmovdqa %xmm7,64(%esp) + addl %esi,%edi + xorl %ecx,%ebp + vmovdqa %xmm6,%xmm7 + vpaddd %xmm2,%xmm6,%xmm6 + shrdl $7,%ebx,%ebx + addl %eax,%edi + vpxor %xmm5,%xmm3,%xmm3 + addl 52(%esp),%edx + xorl %ebx,%ebp + movl %edi,%esi + shldl $5,%edi,%edi + vpsrld $30,%xmm3,%xmm5 + vmovdqa %xmm6,32(%esp) + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + vpslld $2,%xmm3,%xmm3 + addl 56(%esp),%ecx + xorl %eax,%esi + movl %edx,%ebp + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%ebp + shrdl $7,%edi,%edi + addl %edx,%ecx + vpor %xmm5,%xmm3,%xmm3 + addl 60(%esp),%ebx + xorl %edi,%ebp + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl (%esp),%eax + vpaddd %xmm3,%xmm7,%xmm7 + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + addl %esi,%eax + vmovdqa %xmm7,48(%esp) + xorl %edx,%ebp + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 4(%esp),%edi + xorl %ecx,%ebp + movl %eax,%esi + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 8(%esp),%edx + xorl %ebx,%esi + movl %edi,%ebp + shldl $5,%edi,%edi + addl %esi,%edx + xorl %ebx,%ebp + shrdl $7,%eax,%eax + addl %edi,%edx + addl 12(%esp),%ecx + xorl %eax,%ebp + movl %edx,%esi + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + movl 196(%esp),%ebp + cmpl 200(%esp),%ebp + je L008done + vmovdqa 160(%esp),%xmm7 + vmovdqa 176(%esp),%xmm6 + vmovdqu (%ebp),%xmm0 + vmovdqu 16(%ebp),%xmm1 + vmovdqu 32(%ebp),%xmm2 + vmovdqu 48(%ebp),%xmm3 + addl $64,%ebp + vpshufb %xmm6,%xmm0,%xmm0 + movl %ebp,196(%esp) + vmovdqa %xmm7,96(%esp) + addl 16(%esp),%ebx + xorl %edi,%esi + vpshufb %xmm6,%xmm1,%xmm1 + movl %ecx,%ebp + shldl $5,%ecx,%ecx + vpaddd %xmm7,%xmm0,%xmm4 + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + vmovdqa %xmm4,(%esp) + addl 20(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + addl %esi,%edi + xorl %ecx,%ebp + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 28(%esp),%edx + xorl %ebx,%ebp + movl %edi,%esi + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + addl 32(%esp),%ecx + xorl %eax,%esi + vpshufb %xmm6,%xmm2,%xmm2 + movl %edx,%ebp + shldl $5,%edx,%edx + vpaddd %xmm7,%xmm1,%xmm5 + addl %esi,%ecx + xorl %eax,%ebp + shrdl $7,%edi,%edi + addl %edx,%ecx + vmovdqa %xmm5,16(%esp) + addl 36(%esp),%ebx + xorl %edi,%ebp + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%esp),%eax + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%ebp + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%esp),%edi + xorl %ecx,%ebp + movl %eax,%esi + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 48(%esp),%edx + xorl %ebx,%esi + vpshufb %xmm6,%xmm3,%xmm3 + movl %edi,%ebp + shldl $5,%edi,%edi + vpaddd %xmm7,%xmm2,%xmm6 + addl %esi,%edx + xorl %ebx,%ebp + shrdl $7,%eax,%eax + addl %edi,%edx + vmovdqa %xmm6,32(%esp) + addl 52(%esp),%ecx + xorl %eax,%ebp + movl %edx,%esi + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + addl 56(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + movl 192(%esp),%ebp + addl (%ebp),%eax + addl 4(%ebp),%esi + addl 8(%ebp),%ecx + movl %eax,(%ebp) + addl 12(%ebp),%edx + movl %esi,4(%ebp) + addl 16(%ebp),%edi + movl %ecx,%ebx + movl %ecx,8(%ebp) + xorl %edx,%ebx + movl %edx,12(%ebp) + movl %edi,16(%ebp) + movl %esi,%ebp + andl %ebx,%esi + movl %ebp,%ebx + jmp L007loop +.align 4,0x90 +L008done: + addl 16(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 20(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%esp),%edi + xorl %ecx,%esi + movl %eax,%ebp + shldl $5,%eax,%eax + addl %esi,%edi + xorl %ecx,%ebp + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 28(%esp),%edx + xorl %ebx,%ebp + movl %edi,%esi + shldl $5,%edi,%edi + addl %ebp,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %edi,%edx + addl 32(%esp),%ecx + xorl %eax,%esi + movl %edx,%ebp + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%ebp + shrdl $7,%edi,%edi + addl %edx,%ecx + addl 36(%esp),%ebx + xorl %edi,%ebp + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %ebp,%ebx + xorl %edi,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%esp),%eax + xorl %edx,%esi + movl %ebx,%ebp + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%ebp + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%esp),%edi + xorl %ecx,%ebp + movl %eax,%esi + shldl $5,%eax,%eax + addl %ebp,%edi + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%edi + addl 48(%esp),%edx + xorl %ebx,%esi + movl %edi,%ebp + shldl $5,%edi,%edi + addl %esi,%edx + xorl %ebx,%ebp + shrdl $7,%eax,%eax + addl %edi,%edx + addl 52(%esp),%ecx + xorl %eax,%ebp + movl %edx,%esi + shldl $5,%edx,%edx + addl %ebp,%ecx + xorl %eax,%esi + shrdl $7,%edi,%edi + addl %edx,%ecx + addl 56(%esp),%ebx + xorl %edi,%esi + movl %ecx,%ebp + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edi,%ebp + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%esp),%eax + xorl %edx,%ebp + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %ebp,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vzeroall + movl 192(%esp),%ebp + addl (%ebp),%eax + movl 204(%esp),%esp + addl 4(%ebp),%esi + addl 8(%ebp),%ecx + movl %eax,(%ebp) + addl 12(%ebp),%edx + movl %esi,4(%ebp) + addl 16(%ebp),%edi + movl %ecx,8(%ebp) + movl %edx,12(%ebp) + movl %edi,16(%ebp) + popl %edi + popl %esi + popl %ebx + popl %ebp + ret .align 6,0x90 LK_XX_XX: .long 1518500249,1518500249,1518500249,1518500249
diff --git a/third_party/boringssl/mac-x86/crypto/sha/sha256-586.S b/third_party/boringssl/mac-x86/crypto/sha/sha256-586.S index 4615588a6..841854f7 100644 --- a/third_party/boringssl/mac-x86/crypto/sha/sha256-586.S +++ b/third_party/boringssl/mac-x86/crypto/sha/sha256-586.S
@@ -39,12 +39,13 @@ orl %ebx,%ecx andl $1342177280,%ecx cmpl $1342177280,%ecx + je L004AVX testl $512,%ebx - jnz L004SSSE3 + jnz L005SSSE3 L003no_xmm: subl %edi,%eax cmpl $256,%eax - jae L005unrolled + jae L006unrolled jmp L002loop .align 4,0x90 L002loop: @@ -116,7 +117,7 @@ movl %ecx,28(%esp) movl %edi,32(%esp) .align 4,0x90 -L00600_15: +L00700_15: movl %edx,%ecx movl 24(%esp),%esi rorl $14,%ecx @@ -154,11 +155,11 @@ addl $4,%ebp addl %ebx,%eax cmpl $3248222580,%esi - jne L00600_15 + jne L00700_15 movl 156(%esp),%ecx - jmp L00716_63 + jmp L00816_63 .align 4,0x90 -L00716_63: +L00816_63: movl %ecx,%ebx movl 104(%esp),%esi rorl $11,%ecx @@ -213,7 +214,7 @@ addl $4,%ebp addl %ebx,%eax cmpl $3329325298,%esi - jne L00716_63 + jne L00816_63 movl 356(%esp),%esi movl 8(%esp),%ebx movl 16(%esp),%ecx @@ -257,7 +258,7 @@ .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 .byte 62,0 .align 4,0x90 -L005unrolled: +L006unrolled: leal -96(%esp),%esp movl (%esi),%eax movl 4(%esi),%ebp @@ -274,9 +275,9 @@ movl %ebx,20(%esp) movl %ecx,24(%esp) movl %esi,28(%esp) - jmp L008grand_loop + jmp L009grand_loop .align 4,0x90 -L008grand_loop: +L009grand_loop: movl (%edi),%ebx movl 4(%edi),%ecx bswap %ebx @@ -3156,7 +3157,7 @@ movl %ebx,24(%esp) movl %ecx,28(%esp) cmpl 104(%esp),%edi - jb L008grand_loop + jb L009grand_loop movl 108(%esp),%esp popl %edi popl %esi @@ -3164,7 +3165,7 @@ popl %ebp ret .align 5,0x90 -L004SSSE3: +L005SSSE3: leal -96(%esp),%esp movl (%esi),%eax movl 4(%esi),%ebx @@ -3183,9 +3184,9 @@ movl %ecx,24(%esp) movl %esi,28(%esp) movdqa 256(%ebp),%xmm7 - jmp L009grand_ssse3 + jmp L010grand_ssse3 .align 4,0x90 -L009grand_ssse3: +L010grand_ssse3: movdqu (%edi),%xmm0 movdqu 16(%edi),%xmm1 movdqu 32(%edi),%xmm2 @@ -3208,9 +3209,9 @@ paddd %xmm3,%xmm7 movdqa %xmm6,64(%esp) movdqa %xmm7,80(%esp) - jmp L010ssse3_00_47 + jmp L011ssse3_00_47 .align 4,0x90 -L010ssse3_00_47: +L011ssse3_00_47: addl $64,%ebp movl %edx,%ecx movdqa %xmm1,%xmm4 @@ -3853,7 +3854,7 @@ addl %ecx,%eax movdqa %xmm6,80(%esp) cmpl $66051,64(%ebp) - jne L010ssse3_00_47 + jne L011ssse3_00_47 movl %edx,%ecx rorl $14,%edx movl 20(%esp),%esi @@ -4367,13 +4368,1194 @@ movdqa 64(%ebp),%xmm7 subl $192,%ebp cmpl 104(%esp),%edi - jb L009grand_ssse3 + jb L010grand_ssse3 movl 108(%esp),%esp popl %edi popl %esi popl %ebx popl %ebp ret +.align 5,0x90 +L004AVX: + leal -96(%esp),%esp + vzeroall + movl (%esi),%eax + movl 4(%esi),%ebx + movl 8(%esi),%ecx + movl 12(%esi),%edi + movl %ebx,4(%esp) + xorl %ecx,%ebx + movl %ecx,8(%esp) + movl %edi,12(%esp) + movl 16(%esi),%edx + movl 20(%esi),%edi + movl 24(%esi),%ecx + movl 28(%esi),%esi + movl %edi,20(%esp) + movl 100(%esp),%edi + movl %ecx,24(%esp) + movl %esi,28(%esp) + vmovdqa 256(%ebp),%xmm7 + jmp L012grand_avx +.align 5,0x90 +L012grand_avx: + vmovdqu (%edi),%xmm0 + vmovdqu 16(%edi),%xmm1 + vmovdqu 32(%edi),%xmm2 + vmovdqu 48(%edi),%xmm3 + addl $64,%edi + vpshufb %xmm7,%xmm0,%xmm0 + movl %edi,100(%esp) + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd (%ebp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 16(%ebp),%xmm1,%xmm5 + vpaddd 32(%ebp),%xmm2,%xmm6 + vpaddd 48(%ebp),%xmm3,%xmm7 + vmovdqa %xmm4,32(%esp) + vmovdqa %xmm5,48(%esp) + vmovdqa %xmm6,64(%esp) + vmovdqa %xmm7,80(%esp) + jmp L013avx_00_47 +.align 4,0x90 +L013avx_00_47: + addl $64,%ebp + vpalignr $4,%xmm0,%xmm1,%xmm4 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 20(%esp),%esi + vpalignr $4,%xmm2,%xmm3,%xmm7 + xorl %ecx,%edx + movl 24(%esp),%edi + xorl %edi,%esi + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,16(%esp) + vpaddd %xmm7,%xmm0,%xmm0 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrld $3,%xmm4,%xmm7 + movl %eax,%ecx + addl %edi,%edx + movl 4(%esp),%edi + vpslld $14,%xmm4,%xmm5 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,(%esp) + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%ecx + xorl %edi,%eax + addl 28(%esp),%edx + vpshufd $250,%xmm3,%xmm7 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpsrld $11,%xmm6,%xmm6 + addl 32(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpxor %xmm5,%xmm4,%xmm4 + addl %edx,%ebx + addl 12(%esp),%edx + addl %ecx,%ebx + vpslld $11,%xmm5,%xmm5 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 16(%esp),%esi + vpxor %xmm6,%xmm4,%xmm4 + xorl %ecx,%edx + movl 20(%esp),%edi + xorl %edi,%esi + vpsrld $10,%xmm7,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,12(%esp) + vpxor %xmm5,%xmm4,%xmm4 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %ebx,%ecx + addl %edi,%edx + movl (%esp),%edi + vpaddd %xmm4,%xmm0,%xmm0 + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,28(%esp) + vpxor %xmm5,%xmm6,%xmm6 + xorl %ebx,%ecx + xorl %edi,%ebx + addl 24(%esp),%edx + vpsrlq $19,%xmm7,%xmm7 + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + vpxor %xmm7,%xmm6,%xmm6 + addl 36(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + vpshufd $132,%xmm6,%xmm7 + addl %edx,%eax + addl 8(%esp),%edx + addl %ecx,%eax + vpsrldq $8,%xmm7,%xmm7 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 12(%esp),%esi + vpaddd %xmm7,%xmm0,%xmm0 + xorl %ecx,%edx + movl 16(%esp),%edi + xorl %edi,%esi + vpshufd $80,%xmm0,%xmm7 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,8(%esp) + vpsrld $10,%xmm7,%xmm6 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %eax,%ecx + addl %edi,%edx + movl 28(%esp),%edi + vpxor %xmm5,%xmm6,%xmm6 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,24(%esp) + vpsrlq $19,%xmm7,%xmm7 + xorl %eax,%ecx + xorl %edi,%eax + addl 20(%esp),%edx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpshufd $232,%xmm6,%xmm7 + addl 40(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpslldq $8,%xmm7,%xmm7 + addl %edx,%ebx + addl 4(%esp),%edx + addl %ecx,%ebx + vpaddd %xmm7,%xmm0,%xmm0 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 8(%esp),%esi + vpaddd (%ebp),%xmm0,%xmm6 + xorl %ecx,%edx + movl 12(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,4(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 24(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,20(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 16(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 44(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl (%esp),%edx + addl %ecx,%eax + vmovdqa %xmm6,32(%esp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 4(%esp),%esi + vpalignr $4,%xmm3,%xmm0,%xmm7 + xorl %ecx,%edx + movl 8(%esp),%edi + xorl %edi,%esi + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,(%esp) + vpaddd %xmm7,%xmm1,%xmm1 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrld $3,%xmm4,%xmm7 + movl %eax,%ecx + addl %edi,%edx + movl 20(%esp),%edi + vpslld $14,%xmm4,%xmm5 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,16(%esp) + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%ecx + xorl %edi,%eax + addl 12(%esp),%edx + vpshufd $250,%xmm0,%xmm7 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpsrld $11,%xmm6,%xmm6 + addl 48(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpxor %xmm5,%xmm4,%xmm4 + addl %edx,%ebx + addl 28(%esp),%edx + addl %ecx,%ebx + vpslld $11,%xmm5,%xmm5 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl (%esp),%esi + vpxor %xmm6,%xmm4,%xmm4 + xorl %ecx,%edx + movl 4(%esp),%edi + xorl %edi,%esi + vpsrld $10,%xmm7,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,28(%esp) + vpxor %xmm5,%xmm4,%xmm4 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %ebx,%ecx + addl %edi,%edx + movl 16(%esp),%edi + vpaddd %xmm4,%xmm1,%xmm1 + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,12(%esp) + vpxor %xmm5,%xmm6,%xmm6 + xorl %ebx,%ecx + xorl %edi,%ebx + addl 8(%esp),%edx + vpsrlq $19,%xmm7,%xmm7 + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + vpxor %xmm7,%xmm6,%xmm6 + addl 52(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + vpshufd $132,%xmm6,%xmm7 + addl %edx,%eax + addl 24(%esp),%edx + addl %ecx,%eax + vpsrldq $8,%xmm7,%xmm7 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 28(%esp),%esi + vpaddd %xmm7,%xmm1,%xmm1 + xorl %ecx,%edx + movl (%esp),%edi + xorl %edi,%esi + vpshufd $80,%xmm1,%xmm7 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,24(%esp) + vpsrld $10,%xmm7,%xmm6 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %eax,%ecx + addl %edi,%edx + movl 12(%esp),%edi + vpxor %xmm5,%xmm6,%xmm6 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,8(%esp) + vpsrlq $19,%xmm7,%xmm7 + xorl %eax,%ecx + xorl %edi,%eax + addl 4(%esp),%edx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpshufd $232,%xmm6,%xmm7 + addl 56(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpslldq $8,%xmm7,%xmm7 + addl %edx,%ebx + addl 20(%esp),%edx + addl %ecx,%ebx + vpaddd %xmm7,%xmm1,%xmm1 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 24(%esp),%esi + vpaddd 16(%ebp),%xmm1,%xmm6 + xorl %ecx,%edx + movl 28(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,20(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 8(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,4(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl (%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 60(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 16(%esp),%edx + addl %ecx,%eax + vmovdqa %xmm6,48(%esp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 20(%esp),%esi + vpalignr $4,%xmm0,%xmm1,%xmm7 + xorl %ecx,%edx + movl 24(%esp),%edi + xorl %edi,%esi + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,16(%esp) + vpaddd %xmm7,%xmm2,%xmm2 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrld $3,%xmm4,%xmm7 + movl %eax,%ecx + addl %edi,%edx + movl 4(%esp),%edi + vpslld $14,%xmm4,%xmm5 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,(%esp) + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%ecx + xorl %edi,%eax + addl 28(%esp),%edx + vpshufd $250,%xmm1,%xmm7 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpsrld $11,%xmm6,%xmm6 + addl 64(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpxor %xmm5,%xmm4,%xmm4 + addl %edx,%ebx + addl 12(%esp),%edx + addl %ecx,%ebx + vpslld $11,%xmm5,%xmm5 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 16(%esp),%esi + vpxor %xmm6,%xmm4,%xmm4 + xorl %ecx,%edx + movl 20(%esp),%edi + xorl %edi,%esi + vpsrld $10,%xmm7,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,12(%esp) + vpxor %xmm5,%xmm4,%xmm4 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %ebx,%ecx + addl %edi,%edx + movl (%esp),%edi + vpaddd %xmm4,%xmm2,%xmm2 + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,28(%esp) + vpxor %xmm5,%xmm6,%xmm6 + xorl %ebx,%ecx + xorl %edi,%ebx + addl 24(%esp),%edx + vpsrlq $19,%xmm7,%xmm7 + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + vpxor %xmm7,%xmm6,%xmm6 + addl 68(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + vpshufd $132,%xmm6,%xmm7 + addl %edx,%eax + addl 8(%esp),%edx + addl %ecx,%eax + vpsrldq $8,%xmm7,%xmm7 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 12(%esp),%esi + vpaddd %xmm7,%xmm2,%xmm2 + xorl %ecx,%edx + movl 16(%esp),%edi + xorl %edi,%esi + vpshufd $80,%xmm2,%xmm7 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,8(%esp) + vpsrld $10,%xmm7,%xmm6 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %eax,%ecx + addl %edi,%edx + movl 28(%esp),%edi + vpxor %xmm5,%xmm6,%xmm6 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,24(%esp) + vpsrlq $19,%xmm7,%xmm7 + xorl %eax,%ecx + xorl %edi,%eax + addl 20(%esp),%edx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpshufd $232,%xmm6,%xmm7 + addl 72(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpslldq $8,%xmm7,%xmm7 + addl %edx,%ebx + addl 4(%esp),%edx + addl %ecx,%ebx + vpaddd %xmm7,%xmm2,%xmm2 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 8(%esp),%esi + vpaddd 32(%ebp),%xmm2,%xmm6 + xorl %ecx,%edx + movl 12(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,4(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 24(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,20(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 16(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 76(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl (%esp),%edx + addl %ecx,%eax + vmovdqa %xmm6,64(%esp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 4(%esp),%esi + vpalignr $4,%xmm1,%xmm2,%xmm7 + xorl %ecx,%edx + movl 8(%esp),%edi + xorl %edi,%esi + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,(%esp) + vpaddd %xmm7,%xmm3,%xmm3 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrld $3,%xmm4,%xmm7 + movl %eax,%ecx + addl %edi,%edx + movl 20(%esp),%edi + vpslld $14,%xmm4,%xmm5 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,16(%esp) + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%ecx + xorl %edi,%eax + addl 12(%esp),%edx + vpshufd $250,%xmm2,%xmm7 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpsrld $11,%xmm6,%xmm6 + addl 80(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpxor %xmm5,%xmm4,%xmm4 + addl %edx,%ebx + addl 28(%esp),%edx + addl %ecx,%ebx + vpslld $11,%xmm5,%xmm5 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl (%esp),%esi + vpxor %xmm6,%xmm4,%xmm4 + xorl %ecx,%edx + movl 4(%esp),%edi + xorl %edi,%esi + vpsrld $10,%xmm7,%xmm6 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,28(%esp) + vpxor %xmm5,%xmm4,%xmm4 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %ebx,%ecx + addl %edi,%edx + movl 16(%esp),%edi + vpaddd %xmm4,%xmm3,%xmm3 + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,12(%esp) + vpxor %xmm5,%xmm6,%xmm6 + xorl %ebx,%ecx + xorl %edi,%ebx + addl 8(%esp),%edx + vpsrlq $19,%xmm7,%xmm7 + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + vpxor %xmm7,%xmm6,%xmm6 + addl 84(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + vpshufd $132,%xmm6,%xmm7 + addl %edx,%eax + addl 24(%esp),%edx + addl %ecx,%eax + vpsrldq $8,%xmm7,%xmm7 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 28(%esp),%esi + vpaddd %xmm7,%xmm3,%xmm3 + xorl %ecx,%edx + movl (%esp),%edi + xorl %edi,%esi + vpshufd $80,%xmm3,%xmm7 + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,24(%esp) + vpsrld $10,%xmm7,%xmm6 + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + vpsrlq $17,%xmm7,%xmm5 + movl %eax,%ecx + addl %edi,%edx + movl 12(%esp),%edi + vpxor %xmm5,%xmm6,%xmm6 + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,8(%esp) + vpsrlq $19,%xmm7,%xmm7 + xorl %eax,%ecx + xorl %edi,%eax + addl 4(%esp),%edx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + vpshufd $232,%xmm6,%xmm7 + addl 88(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + vpslldq $8,%xmm7,%xmm7 + addl %edx,%ebx + addl 20(%esp),%edx + addl %ecx,%ebx + vpaddd %xmm7,%xmm3,%xmm3 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 24(%esp),%esi + vpaddd 48(%ebp),%xmm3,%xmm6 + xorl %ecx,%edx + movl 28(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,20(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 8(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,4(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl (%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 92(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 16(%esp),%edx + addl %ecx,%eax + vmovdqa %xmm6,80(%esp) + cmpl $66051,64(%ebp) + jne L013avx_00_47 + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 20(%esp),%esi + xorl %ecx,%edx + movl 24(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,16(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 4(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 28(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 32(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 12(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 16(%esp),%esi + xorl %ecx,%edx + movl 20(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,12(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl (%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,28(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 24(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 36(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 8(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 12(%esp),%esi + xorl %ecx,%edx + movl 16(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,8(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 28(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,24(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 20(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 40(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 4(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 8(%esp),%esi + xorl %ecx,%edx + movl 12(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,4(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 24(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,20(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 16(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 44(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl (%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 4(%esp),%esi + xorl %ecx,%edx + movl 8(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 20(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,16(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 12(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 48(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 28(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl (%esp),%esi + xorl %ecx,%edx + movl 4(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,28(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 16(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,12(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 8(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 52(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 24(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 28(%esp),%esi + xorl %ecx,%edx + movl (%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,24(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 12(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,8(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 4(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 56(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 20(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 24(%esp),%esi + xorl %ecx,%edx + movl 28(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,20(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 8(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,4(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl (%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 60(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 16(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 20(%esp),%esi + xorl %ecx,%edx + movl 24(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,16(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 4(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 28(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 64(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 12(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 16(%esp),%esi + xorl %ecx,%edx + movl 20(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,12(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl (%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,28(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 24(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 68(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 8(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 12(%esp),%esi + xorl %ecx,%edx + movl 16(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,8(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 28(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,24(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 20(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 72(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 4(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 8(%esp),%esi + xorl %ecx,%edx + movl 12(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,4(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 24(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,20(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 16(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 76(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl (%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 4(%esp),%esi + xorl %ecx,%edx + movl 8(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 20(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,16(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 12(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 80(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 28(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl (%esp),%esi + xorl %ecx,%edx + movl 4(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,28(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 16(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,12(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl 8(%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 84(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 24(%esp),%edx + addl %ecx,%eax + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 28(%esp),%esi + xorl %ecx,%edx + movl (%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,24(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %eax,%ecx + addl %edi,%edx + movl 12(%esp),%edi + movl %eax,%esi + shrdl $9,%ecx,%ecx + movl %eax,8(%esp) + xorl %eax,%ecx + xorl %edi,%eax + addl 4(%esp),%edx + shrdl $11,%ecx,%ecx + andl %eax,%ebx + xorl %esi,%ecx + addl 88(%esp),%edx + xorl %edi,%ebx + shrdl $2,%ecx,%ecx + addl %edx,%ebx + addl 20(%esp),%edx + addl %ecx,%ebx + movl %edx,%ecx + shrdl $14,%edx,%edx + movl 24(%esp),%esi + xorl %ecx,%edx + movl 28(%esp),%edi + xorl %edi,%esi + shrdl $5,%edx,%edx + andl %ecx,%esi + movl %ecx,20(%esp) + xorl %ecx,%edx + xorl %esi,%edi + shrdl $6,%edx,%edx + movl %ebx,%ecx + addl %edi,%edx + movl 8(%esp),%edi + movl %ebx,%esi + shrdl $9,%ecx,%ecx + movl %ebx,4(%esp) + xorl %ebx,%ecx + xorl %edi,%ebx + addl (%esp),%edx + shrdl $11,%ecx,%ecx + andl %ebx,%eax + xorl %esi,%ecx + addl 92(%esp),%edx + xorl %edi,%eax + shrdl $2,%ecx,%ecx + addl %edx,%eax + addl 16(%esp),%edx + addl %ecx,%eax + movl 96(%esp),%esi + xorl %edi,%ebx + movl 12(%esp),%ecx + addl (%esi),%eax + addl 4(%esi),%ebx + addl 8(%esi),%edi + addl 12(%esi),%ecx + movl %eax,(%esi) + movl %ebx,4(%esi) + movl %edi,8(%esi) + movl %ecx,12(%esi) + movl %ebx,4(%esp) + xorl %edi,%ebx + movl %edi,8(%esp) + movl %ecx,12(%esp) + movl 20(%esp),%edi + movl 24(%esp),%ecx + addl 16(%esi),%edx + addl 20(%esi),%edi + addl 24(%esi),%ecx + movl %edx,16(%esi) + movl %edi,20(%esi) + movl %edi,20(%esp) + movl 28(%esp),%edi + movl %ecx,24(%esi) + addl 28(%esi),%edi + movl %ecx,24(%esp) + movl %edi,28(%esi) + movl %edi,28(%esp) + movl 100(%esp),%edi + vmovdqa 64(%ebp),%xmm7 + subl $192,%ebp + cmpl 104(%esp),%edi + jb L012grand_avx + movl 108(%esp),%esp + vzeroall + popl %edi + popl %esi + popl %ebx + popl %ebp + ret .section __IMPORT,__pointers,non_lazy_symbol_pointers L_OPENSSL_ia32cap_P$non_lazy_ptr: .indirect_symbol _OPENSSL_ia32cap_P
diff --git a/third_party/boringssl/mac-x86_64/crypto/sha/sha1-x86_64.S b/third_party/boringssl/mac-x86_64/crypto/sha/sha1-x86_64.S index 044dc5b7..0509d45 100644 --- a/third_party/boringssl/mac-x86_64/crypto/sha/sha1-x86_64.S +++ b/third_party/boringssl/mac-x86_64/crypto/sha/sha1-x86_64.S
@@ -12,6 +12,11 @@ movl _OPENSSL_ia32cap_P+8(%rip),%r10d testl $512,%r8d jz L$ialu + andl $268435456,%r8d + andl $1073741824,%r9d + orl %r9d,%r8d + cmpl $1342177280,%r8d + je _avx_shortcut jmp _ssse3_shortcut .p2align 4 @@ -2407,6 +2412,1122 @@ L$epilogue_ssse3: .byte 0xf3,0xc3 + +.p2align 4 +sha1_block_data_order_avx: +_avx_shortcut: + movq %rsp,%rax + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + leaq -64(%rsp),%rsp + vzeroupper + movq %rax,%r14 + andq $-64,%rsp + movq %rdi,%r8 + movq %rsi,%r9 + movq %rdx,%r10 + + shlq $6,%r10 + addq %r9,%r10 + leaq K_XX_XX+64(%rip),%r11 + + movl 0(%r8),%eax + movl 4(%r8),%ebx + movl 8(%r8),%ecx + movl 12(%r8),%edx + movl %ebx,%esi + movl 16(%r8),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + vmovdqa 64(%r11),%xmm6 + vmovdqa -64(%r11),%xmm11 + vmovdqu 0(%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r9 + vpshufb %xmm6,%xmm1,%xmm1 + vpshufb %xmm6,%xmm2,%xmm2 + vpshufb %xmm6,%xmm3,%xmm3 + vpaddd %xmm11,%xmm0,%xmm4 + vpaddd %xmm11,%xmm1,%xmm5 + vpaddd %xmm11,%xmm2,%xmm6 + vmovdqa %xmm4,0(%rsp) + vmovdqa %xmm5,16(%rsp) + vmovdqa %xmm6,32(%rsp) + jmp L$oop_avx +.p2align 4 +L$oop_avx: + shrdl $2,%ebx,%ebx + xorl %edx,%esi + vpalignr $8,%xmm0,%xmm1,%xmm4 + movl %eax,%edi + addl 0(%rsp),%ebp + vpaddd %xmm3,%xmm11,%xmm9 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrldq $4,%xmm3,%xmm8 + addl %esi,%ebp + andl %ebx,%edi + vpxor %xmm0,%xmm4,%xmm4 + xorl %ecx,%ebx + addl %eax,%ebp + vpxor %xmm2,%xmm8,%xmm8 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + vpxor %xmm8,%xmm4,%xmm4 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vmovdqa %xmm9,48(%rsp) + addl %edi,%edx + andl %eax,%esi + vpsrld $31,%xmm4,%xmm8 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpslldq $12,%xmm4,%xmm10 + vpaddd %xmm4,%xmm4,%xmm4 + movl %edx,%edi + addl 8(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm4,%xmm4 + addl %esi,%ecx + andl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm4,%xmm4 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + vpxor %xmm10,%xmm4,%xmm4 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %edi,%ebx + andl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpalignr $8,%xmm1,%xmm2,%xmm5 + movl %ebx,%edi + addl 16(%rsp),%eax + vpaddd %xmm4,%xmm11,%xmm9 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrldq $4,%xmm4,%xmm8 + addl %esi,%eax + andl %ecx,%edi + vpxor %xmm1,%xmm5,%xmm5 + xorl %edx,%ecx + addl %ebx,%eax + vpxor %xmm3,%xmm8,%xmm8 + shrdl $7,%ebx,%ebx + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + vpxor %xmm8,%xmm5,%xmm5 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vmovdqa %xmm9,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + vpsrld $31,%xmm5,%xmm8 + xorl %ecx,%ebx + addl %eax,%ebp + shrdl $7,%eax,%eax + xorl %ecx,%esi + vpslldq $12,%xmm5,%xmm10 + vpaddd %xmm5,%xmm5,%xmm5 + movl %ebp,%edi + addl 24(%rsp),%edx + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm5,%xmm5 + addl %esi,%edx + andl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm5,%xmm5 + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + vpxor %xmm10,%xmm5,%xmm5 + xorl %eax,%ebp + shldl $5,%edx,%edx + vmovdqa -32(%r11),%xmm11 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + vpalignr $8,%xmm2,%xmm3,%xmm6 + movl %ecx,%edi + addl 32(%rsp),%ebx + vpaddd %xmm5,%xmm11,%xmm9 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vpsrldq $4,%xmm5,%xmm8 + addl %esi,%ebx + andl %edx,%edi + vpxor %xmm2,%xmm6,%xmm6 + xorl %ebp,%edx + addl %ecx,%ebx + vpxor %xmm4,%xmm8,%xmm8 + shrdl $7,%ecx,%ecx + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + vpxor %xmm8,%xmm6,%xmm6 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vmovdqa %xmm9,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + vpsrld $31,%xmm6,%xmm8 + xorl %edx,%ecx + addl %ebx,%eax + shrdl $7,%ebx,%ebx + xorl %edx,%esi + vpslldq $12,%xmm6,%xmm10 + vpaddd %xmm6,%xmm6,%xmm6 + movl %eax,%edi + addl 40(%rsp),%ebp + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm6,%xmm6 + addl %esi,%ebp + andl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm6,%xmm6 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + vpxor %xmm10,%xmm6,%xmm6 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + addl %edi,%edx + andl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpalignr $8,%xmm3,%xmm4,%xmm7 + movl %edx,%edi + addl 48(%rsp),%ecx + vpaddd %xmm6,%xmm11,%xmm9 + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrldq $4,%xmm6,%xmm8 + addl %esi,%ecx + andl %ebp,%edi + vpxor %xmm3,%xmm7,%xmm7 + xorl %eax,%ebp + addl %edx,%ecx + vpxor %xmm5,%xmm8,%xmm8 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + vpxor %xmm8,%xmm7,%xmm7 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vmovdqa %xmm9,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + vpsrld $31,%xmm7,%xmm8 + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpslldq $12,%xmm7,%xmm10 + vpaddd %xmm7,%xmm7,%xmm7 + movl %ebx,%edi + addl 56(%rsp),%eax + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm7,%xmm7 + addl %esi,%eax + andl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm7,%xmm7 + shrdl $7,%ebx,%ebx + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + vpxor %xmm10,%xmm7,%xmm7 + xorl %ecx,%ebx + shldl $5,%eax,%eax + addl %edi,%ebp + andl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + vpxor %xmm1,%xmm0,%xmm0 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpaddd %xmm7,%xmm11,%xmm9 + addl %esi,%edx + andl %eax,%edi + vpxor %xmm8,%xmm0,%xmm0 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + movl %edx,%esi + addl 4(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpslld $2,%xmm0,%xmm0 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + vpor %xmm8,%xmm0,%xmm0 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm2,%xmm1,%xmm1 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm0,%xmm11,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm1,%xmm1 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm1,%xmm1 + addl 24(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm1,%xmm1 + addl 28(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + vpxor %xmm3,%xmm2,%xmm2 + addl %esi,%eax + xorl %edx,%edi + vpaddd %xmm1,%xmm11,%xmm9 + vmovdqa 0(%r11),%xmm11 + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpxor %xmm8,%xmm2,%xmm2 + addl 36(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpslld $2,%xmm2,%xmm2 + addl 40(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpor %xmm8,%xmm2,%xmm2 + addl 44(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebx + xorl %ebp,%edi + vpaddd %xmm2,%xmm11,%xmm9 + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpalignr $8,%xmm2,%xmm3,%xmm8 + vpxor %xmm0,%xmm4,%xmm4 + addl 0(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + vpxor %xmm5,%xmm4,%xmm4 + addl %esi,%ecx + xorl %eax,%edi + vpaddd %xmm3,%xmm11,%xmm9 + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpxor %xmm8,%xmm4,%xmm4 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + vpsrld $30,%xmm4,%xmm8 + vmovdqa %xmm9,48(%rsp) + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpslld $2,%xmm4,%xmm4 + addl 8(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpor %xmm8,%xmm4,%xmm4 + addl 12(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm3,%xmm4,%xmm8 + vpxor %xmm1,%xmm5,%xmm5 + addl 16(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpxor %xmm6,%xmm5,%xmm5 + addl %esi,%edx + xorl %ebx,%edi + vpaddd %xmm4,%xmm11,%xmm9 + shrdl $7,%eax,%eax + addl %ebp,%edx + vpxor %xmm8,%xmm5,%xmm5 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + vpsrld $30,%xmm5,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpslld $2,%xmm5,%xmm5 + addl 24(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpor %xmm8,%xmm5,%xmm5 + addl 28(%rsp),%eax + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm4,%xmm5,%xmm8 + vpxor %xmm2,%xmm6,%xmm6 + addl 32(%rsp),%ebp + andl %ecx,%esi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vpxor %xmm7,%xmm6,%xmm6 + movl %eax,%edi + xorl %ecx,%esi + vpaddd %xmm5,%xmm11,%xmm9 + shldl $5,%eax,%eax + addl %esi,%ebp + vpxor %xmm8,%xmm6,%xmm6 + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 36(%rsp),%edx + vpsrld $30,%xmm6,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + vpslld $2,%xmm6,%xmm6 + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + addl 40(%rsp),%ecx + andl %eax,%esi + vpor %xmm8,%xmm6,%xmm6 + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%edi + xorl %eax,%esi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%esi + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + vpalignr $8,%xmm5,%xmm6,%xmm8 + vpxor %xmm3,%xmm7,%xmm7 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + vpxor %xmm0,%xmm7,%xmm7 + movl %ebx,%edi + xorl %edx,%esi + vpaddd %xmm6,%xmm11,%xmm9 + vmovdqa 32(%r11),%xmm11 + shldl $5,%ebx,%ebx + addl %esi,%eax + vpxor %xmm8,%xmm7,%xmm7 + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 52(%rsp),%ebp + vpsrld $30,%xmm7,%xmm8 + vmovdqa %xmm9,32(%rsp) + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + vpslld $2,%xmm7,%xmm7 + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + addl 56(%rsp),%edx + andl %ebx,%esi + vpor %xmm8,%xmm7,%xmm7 + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%edi + xorl %ebx,%esi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vpxor %xmm1,%xmm0,%xmm0 + movl %ecx,%edi + xorl %ebp,%esi + vpaddd %xmm7,%xmm11,%xmm9 + shldl $5,%ecx,%ecx + addl %esi,%ebx + vpxor %xmm8,%xmm0,%xmm0 + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 4(%rsp),%eax + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + vpslld $2,%xmm0,%xmm0 + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + addl 8(%rsp),%ebp + andl %ecx,%esi + vpor %xmm8,%xmm0,%xmm0 + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%edi + xorl %ecx,%esi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + vpxor %xmm2,%xmm1,%xmm1 + movl %edx,%edi + xorl %eax,%esi + vpaddd %xmm0,%xmm11,%xmm9 + shldl $5,%edx,%edx + addl %esi,%ecx + vpxor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 20(%rsp),%ebx + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%esi + vpslld $2,%xmm1,%xmm1 + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + addl 24(%rsp),%eax + andl %edx,%esi + vpor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%edi + xorl %edx,%esi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vpxor %xmm3,%xmm2,%xmm2 + movl %ebp,%edi + xorl %ebx,%esi + vpaddd %xmm1,%xmm11,%xmm9 + shldl $5,%ebp,%ebp + addl %esi,%edx + vpxor %xmm8,%xmm2,%xmm2 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 36(%rsp),%ecx + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + vpslld $2,%xmm2,%xmm2 + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + addl 40(%rsp),%ebx + andl %ebp,%esi + vpor %xmm8,%xmm2,%xmm2 + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%edi + xorl %ebp,%esi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm2,%xmm11,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + vpaddd %xmm3,%xmm11,%xmm9 + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + vmovdqa %xmm9,48(%rsp) + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + cmpq %r10,%r9 + je L$done_avx + vmovdqa 64(%r11),%xmm6 + vmovdqa -64(%r11),%xmm11 + vmovdqu 0(%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r9 + addl 16(%rsp),%ebx + xorl %ebp,%esi + vpshufb %xmm6,%xmm1,%xmm1 + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpaddd %xmm11,%xmm0,%xmm4 + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vmovdqa %xmm4,0(%rsp) + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + vpshufb %xmm6,%xmm2,%xmm2 + movl %edx,%edi + shldl $5,%edx,%edx + vpaddd %xmm11,%xmm1,%xmm5 + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vmovdqa %xmm5,16(%rsp) + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + vpshufb %xmm6,%xmm3,%xmm3 + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpaddd %xmm11,%xmm2,%xmm6 + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vmovdqa %xmm6,32(%rsp) + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + addl 12(%r8),%edx + movl %eax,0(%r8) + addl 16(%r8),%ebp + movl %esi,4(%r8) + movl %esi,%ebx + movl %ecx,8(%r8) + movl %ecx,%edi + movl %edx,12(%r8) + xorl %edx,%edi + movl %ebp,16(%r8) + andl %edi,%esi + jmp L$oop_avx + +.p2align 4 +L$done_avx: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vzeroupper + + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + movl %eax,0(%r8) + addl 12(%r8),%edx + movl %esi,4(%r8) + addl 16(%r8),%ebp + movl %ecx,8(%r8) + movl %edx,12(%r8) + movl %ebp,16(%r8) + leaq (%r14),%rsi + movq -40(%rsi),%r14 + movq -32(%rsi),%r13 + movq -24(%rsi),%r12 + movq -16(%rsi),%rbp + movq -8(%rsi),%rbx + leaq (%rsi),%rsp +L$epilogue_avx: + .byte 0xf3,0xc3 + .p2align 6 K_XX_XX: .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
diff --git a/third_party/boringssl/mac-x86_64/crypto/sha/sha256-x86_64.S b/third_party/boringssl/mac-x86_64/crypto/sha/sha256-x86_64.S index da02d4c..0146ff5c 100644 --- a/third_party/boringssl/mac-x86_64/crypto/sha/sha256-x86_64.S +++ b/third_party/boringssl/mac-x86_64/crypto/sha/sha256-x86_64.S
@@ -11,6 +11,11 @@ movl 0(%r11),%r9d movl 4(%r11),%r10d movl 8(%r11),%r11d + andl $1073741824,%r9d + andl $268435968,%r10d + orl %r9d,%r10d + cmpl $1342177792,%r10d + je L$avx_shortcut testl $512,%r10d jnz L$ssse3_shortcut pushq %rbx @@ -2840,4 +2845,1061 @@ L$epilogue_ssse3: .byte 0xf3,0xc3 + +.p2align 6 +sha256_block_data_order_avx: +L$avx_shortcut: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + movq %rsp,%r11 + shlq $4,%rdx + subq $96,%rsp + leaq (%rsi,%rdx,4),%rdx + andq $-64,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %r11,64+24(%rsp) +L$prologue_avx: + + vzeroupper + movl 0(%rdi),%eax + movl 4(%rdi),%ebx + movl 8(%rdi),%ecx + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + vmovdqa K256+512+32(%rip),%xmm8 + vmovdqa K256+512+64(%rip),%xmm9 + jmp L$loop_avx +.p2align 4 +L$loop_avx: + vmovdqa K256+512(%rip),%xmm7 + vmovdqu 0(%rsi),%xmm0 + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm7,%xmm0,%xmm0 + leaq K256(%rip),%rbp + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd 0(%rbp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 32(%rbp),%xmm1,%xmm5 + vpaddd 64(%rbp),%xmm2,%xmm6 + vpaddd 96(%rbp),%xmm3,%xmm7 + vmovdqa %xmm4,0(%rsp) + movl %eax,%r14d + vmovdqa %xmm5,16(%rsp) + movl %ebx,%edi + vmovdqa %xmm6,32(%rsp) + xorl %ecx,%edi + vmovdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp L$avx_00_47 + +.p2align 4 +L$avx_00_47: + subq $-128,%rbp + vpalignr $4,%xmm0,%xmm1,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm2,%xmm3,%xmm7 + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm0,%xmm0 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + vpshufd $250,%xmm3,%xmm7 + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm0,%xmm0 + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpaddd %xmm6,%xmm0,%xmm0 + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + vpshufd $80,%xmm0,%xmm7 + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + vpaddd %xmm6,%xmm0,%xmm0 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpaddd 0(%rbp),%xmm0,%xmm6 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,0(%rsp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm3,%xmm0,%xmm7 + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm1,%xmm1 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + vpshufd $250,%xmm0,%xmm7 + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm1,%xmm1 + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpaddd %xmm6,%xmm1,%xmm1 + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + vpshufd $80,%xmm1,%xmm7 + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + vpxor %xmm7,%xmm6,%xmm6 + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + vpaddd %xmm6,%xmm1,%xmm1 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpaddd 32(%rbp),%xmm1,%xmm6 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,16(%rsp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm0,%xmm1,%xmm7 + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm2,%xmm2 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + vpshufd $250,%xmm1,%xmm7 + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm2,%xmm2 + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpaddd %xmm6,%xmm2,%xmm2 + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + vpshufd $80,%xmm2,%xmm7 + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + vpaddd %xmm6,%xmm2,%xmm2 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpaddd 64(%rbp),%xmm2,%xmm6 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,32(%rsp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm1,%xmm2,%xmm7 + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm3,%xmm3 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + vpshufd $250,%xmm2,%xmm7 + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm3,%xmm3 + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpaddd %xmm6,%xmm3,%xmm3 + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + vpshufd $80,%xmm3,%xmm7 + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + vpxor %xmm7,%xmm6,%xmm6 + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + vpaddd %xmm6,%xmm3,%xmm3 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpaddd 96(%rbp),%xmm3,%xmm6 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,48(%rsp) + cmpb $0,131(%rbp) + jne L$avx_00_47 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%rdi + movl %r14d,%eax + + addl 0(%rdi),%eax + leaq 64(%rsi),%rsi + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + jb L$loop_avx + + movq 64+24(%rsp),%rsi + vzeroupper + movq (%rsi),%r15 + movq 8(%rsi),%r14 + movq 16(%rsi),%r13 + movq 24(%rsi),%r12 + movq 32(%rsi),%rbp + movq 40(%rsi),%rbx + leaq 48(%rsi),%rsp +L$epilogue_avx: + .byte 0xf3,0xc3 + #endif
diff --git a/third_party/boringssl/mac-x86_64/crypto/sha/sha512-x86_64.S b/third_party/boringssl/mac-x86_64/crypto/sha/sha512-x86_64.S index 2f5d912..aeabd3f 100644 --- a/third_party/boringssl/mac-x86_64/crypto/sha/sha512-x86_64.S +++ b/third_party/boringssl/mac-x86_64/crypto/sha/sha512-x86_64.S
@@ -7,6 +7,17 @@ .p2align 4 _sha512_block_data_order: + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl 0(%r11),%r9d + movl 4(%r11),%r10d + movl 8(%r11),%r11d + testl $2048,%r10d + jnz L$xop_shortcut + andl $1073741824,%r9d + andl $268435968,%r10d + orl %r9d,%r10d + cmpl $1342177792,%r10d + je L$avx_shortcut pushq %rbx pushq %rbp pushq %r12 @@ -1783,4 +1794,2234 @@ .quad 0x0001020304050607,0x08090a0b0c0d0e0f .quad 0x0001020304050607,0x08090a0b0c0d0e0f .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 + +.p2align 6 +sha512_block_data_order_xop: +L$xop_shortcut: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + movq %rsp,%r11 + shlq $4,%rdx + subq $160,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %r11,128+24(%rsp) +L$prologue_xop: + + vzeroupper + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp L$loop_xop +.p2align 4 +L$loop_xop: + vmovdqa K512+1280(%rip),%xmm11 + vmovdqu 0(%rsi),%xmm0 + leaq K512+128(%rip),%rbp + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vpshufb %xmm11,%xmm0,%xmm0 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm11,%xmm1,%xmm1 + vmovdqu 64(%rsi),%xmm4 + vpshufb %xmm11,%xmm2,%xmm2 + vmovdqu 80(%rsi),%xmm5 + vpshufb %xmm11,%xmm3,%xmm3 + vmovdqu 96(%rsi),%xmm6 + vpshufb %xmm11,%xmm4,%xmm4 + vmovdqu 112(%rsi),%xmm7 + vpshufb %xmm11,%xmm5,%xmm5 + vpaddq -128(%rbp),%xmm0,%xmm8 + vpshufb %xmm11,%xmm6,%xmm6 + vpaddq -96(%rbp),%xmm1,%xmm9 + vpshufb %xmm11,%xmm7,%xmm7 + vpaddq -64(%rbp),%xmm2,%xmm10 + vpaddq -32(%rbp),%xmm3,%xmm11 + vmovdqa %xmm8,0(%rsp) + vpaddq 0(%rbp),%xmm4,%xmm8 + vmovdqa %xmm9,16(%rsp) + vpaddq 32(%rbp),%xmm5,%xmm9 + vmovdqa %xmm10,32(%rsp) + vpaddq 64(%rbp),%xmm6,%xmm10 + vmovdqa %xmm11,48(%rsp) + vpaddq 96(%rbp),%xmm7,%xmm11 + vmovdqa %xmm8,64(%rsp) + movq %rax,%r14 + vmovdqa %xmm9,80(%rsp) + movq %rbx,%rdi + vmovdqa %xmm10,96(%rsp) + xorq %rcx,%rdi + vmovdqa %xmm11,112(%rsp) + movq %r8,%r13 + jmp L$xop_00_47 + +.p2align 4 +L$xop_00_47: + addq $256,%rbp + vpalignr $8,%xmm0,%xmm1,%xmm8 + rorq $23,%r13 + movq %r14,%rax + vpalignr $8,%xmm4,%xmm5,%xmm11 + movq %r9,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r8,%r13 + xorq %r10,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rax,%r14 + vpaddq %xmm11,%xmm0,%xmm0 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 +.byte 143,72,120,195,209,7 + xorq %r10,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,223,3 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm7,%xmm10 + addq %r11,%rdx + addq %rdi,%r11 + vpaddq %xmm8,%xmm0,%xmm0 + movq %rdx,%r13 + addq %r11,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r11 + vpxor %xmm10,%xmm11,%xmm11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + vpaddq %xmm11,%xmm0,%xmm0 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + vpaddq -128(%rbp),%xmm0,%xmm10 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,0(%rsp) + vpalignr $8,%xmm1,%xmm2,%xmm8 + rorq $23,%r13 + movq %r14,%r10 + vpalignr $8,%xmm5,%xmm6,%xmm11 + movq %rdx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rcx,%r13 + xorq %r8,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r10,%r14 + vpaddq %xmm11,%xmm1,%xmm1 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 +.byte 143,72,120,195,209,7 + xorq %r8,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,216,3 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm0,%xmm10 + addq %r9,%rbx + addq %rdi,%r9 + vpaddq %xmm8,%xmm1,%xmm1 + movq %rbx,%r13 + addq %r9,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r9 + vpxor %xmm10,%xmm11,%xmm11 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + vpaddq %xmm11,%xmm1,%xmm1 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + vpaddq -96(%rbp),%xmm1,%xmm10 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,16(%rsp) + vpalignr $8,%xmm2,%xmm3,%xmm8 + rorq $23,%r13 + movq %r14,%r8 + vpalignr $8,%xmm6,%xmm7,%xmm11 + movq %rbx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rax,%r13 + xorq %rcx,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r8,%r14 + vpaddq %xmm11,%xmm2,%xmm2 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 +.byte 143,72,120,195,209,7 + xorq %rcx,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,217,3 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm1,%xmm10 + addq %rdx,%r11 + addq %rdi,%rdx + vpaddq %xmm8,%xmm2,%xmm2 + movq %r11,%r13 + addq %rdx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rdx + vpxor %xmm10,%xmm11,%xmm11 + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + vpaddq %xmm11,%xmm2,%xmm2 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + vpaddq -64(%rbp),%xmm2,%xmm10 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,32(%rsp) + vpalignr $8,%xmm3,%xmm4,%xmm8 + rorq $23,%r13 + movq %r14,%rcx + vpalignr $8,%xmm7,%xmm0,%xmm11 + movq %r11,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r10,%r13 + xorq %rax,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rcx,%r14 + vpaddq %xmm11,%xmm3,%xmm3 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 +.byte 143,72,120,195,209,7 + xorq %rax,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,218,3 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm2,%xmm10 + addq %rbx,%r9 + addq %rdi,%rbx + vpaddq %xmm8,%xmm3,%xmm3 + movq %r9,%r13 + addq %rbx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rbx + vpxor %xmm10,%xmm11,%xmm11 + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + vpaddq %xmm11,%xmm3,%xmm3 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + vpaddq -32(%rbp),%xmm3,%xmm10 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,48(%rsp) + vpalignr $8,%xmm4,%xmm5,%xmm8 + rorq $23,%r13 + movq %r14,%rax + vpalignr $8,%xmm0,%xmm1,%xmm11 + movq %r9,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r8,%r13 + xorq %r10,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rax,%r14 + vpaddq %xmm11,%xmm4,%xmm4 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 +.byte 143,72,120,195,209,7 + xorq %r10,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,219,3 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm3,%xmm10 + addq %r11,%rdx + addq %rdi,%r11 + vpaddq %xmm8,%xmm4,%xmm4 + movq %rdx,%r13 + addq %r11,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r11 + vpxor %xmm10,%xmm11,%xmm11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + vpaddq %xmm11,%xmm4,%xmm4 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + vpaddq 0(%rbp),%xmm4,%xmm10 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,64(%rsp) + vpalignr $8,%xmm5,%xmm6,%xmm8 + rorq $23,%r13 + movq %r14,%r10 + vpalignr $8,%xmm1,%xmm2,%xmm11 + movq %rdx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rcx,%r13 + xorq %r8,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r10,%r14 + vpaddq %xmm11,%xmm5,%xmm5 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 +.byte 143,72,120,195,209,7 + xorq %r8,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,220,3 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm4,%xmm10 + addq %r9,%rbx + addq %rdi,%r9 + vpaddq %xmm8,%xmm5,%xmm5 + movq %rbx,%r13 + addq %r9,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r9 + vpxor %xmm10,%xmm11,%xmm11 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + vpaddq %xmm11,%xmm5,%xmm5 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + vpaddq 32(%rbp),%xmm5,%xmm10 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,80(%rsp) + vpalignr $8,%xmm6,%xmm7,%xmm8 + rorq $23,%r13 + movq %r14,%r8 + vpalignr $8,%xmm2,%xmm3,%xmm11 + movq %rbx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rax,%r13 + xorq %rcx,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r8,%r14 + vpaddq %xmm11,%xmm6,%xmm6 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 +.byte 143,72,120,195,209,7 + xorq %rcx,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,221,3 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm5,%xmm10 + addq %rdx,%r11 + addq %rdi,%rdx + vpaddq %xmm8,%xmm6,%xmm6 + movq %r11,%r13 + addq %rdx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rdx + vpxor %xmm10,%xmm11,%xmm11 + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + vpaddq %xmm11,%xmm6,%xmm6 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + vpaddq 64(%rbp),%xmm6,%xmm10 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,96(%rsp) + vpalignr $8,%xmm7,%xmm0,%xmm8 + rorq $23,%r13 + movq %r14,%rcx + vpalignr $8,%xmm3,%xmm4,%xmm11 + movq %r11,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r10,%r13 + xorq %rax,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rcx,%r14 + vpaddq %xmm11,%xmm7,%xmm7 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 +.byte 143,72,120,195,209,7 + xorq %rax,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,222,3 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm6,%xmm10 + addq %rbx,%r9 + addq %rdi,%rbx + vpaddq %xmm8,%xmm7,%xmm7 + movq %r9,%r13 + addq %rbx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rbx + vpxor %xmm10,%xmm11,%xmm11 + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + vpaddq %xmm11,%xmm7,%xmm7 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + vpaddq 96(%rbp),%xmm7,%xmm10 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,112(%rsp) + cmpb $0,135(%rbp) + jne L$xop_00_47 + rorq $23,%r13 + movq %r14,%rax + movq %r9,%r12 + rorq $5,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + rorq $4,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + rorq $6,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + rorq $28,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + rorq $23,%r13 + movq %r14,%r11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + rorq $23,%r13 + movq %r14,%r10 + movq %rdx,%r12 + rorq $5,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + rorq $4,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + rorq $6,%r14 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + rorq $28,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + rorq $23,%r13 + movq %r14,%r9 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + rorq $23,%r13 + movq %r14,%r8 + movq %rbx,%r12 + rorq $5,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + rorq $4,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + rorq $6,%r14 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + rorq $28,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + rorq $23,%r13 + movq %r14,%rdx + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + rorq $23,%r13 + movq %r14,%rcx + movq %r11,%r12 + rorq $5,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + rorq $4,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + rorq $6,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + rorq $28,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + rorq $23,%r13 + movq %r14,%rbx + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + rorq $23,%r13 + movq %r14,%rax + movq %r9,%r12 + rorq $5,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + rorq $4,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + rorq $6,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + rorq $28,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + rorq $23,%r13 + movq %r14,%r11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + rorq $23,%r13 + movq %r14,%r10 + movq %rdx,%r12 + rorq $5,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + rorq $4,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + rorq $6,%r14 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + rorq $28,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + rorq $23,%r13 + movq %r14,%r9 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + rorq $23,%r13 + movq %r14,%r8 + movq %rbx,%r12 + rorq $5,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + rorq $4,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + rorq $6,%r14 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + rorq $28,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + rorq $23,%r13 + movq %r14,%rdx + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + rorq $23,%r13 + movq %r14,%rcx + movq %r11,%r12 + rorq $5,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + rorq $4,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + rorq $6,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + rorq $28,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + rorq $23,%r13 + movq %r14,%rbx + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + movq 128+0(%rsp),%rdi + movq %r14,%rax + + addq 0(%rdi),%rax + leaq 128(%rsi),%rsi + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb L$loop_xop + + movq 128+24(%rsp),%rsi + vzeroupper + movq (%rsi),%r15 + movq 8(%rsi),%r14 + movq 16(%rsi),%r13 + movq 24(%rsi),%r12 + movq 32(%rsi),%rbp + movq 40(%rsi),%rbx + leaq 48(%rsi),%rsp +L$epilogue_xop: + .byte 0xf3,0xc3 + + +.p2align 6 +sha512_block_data_order_avx: +L$avx_shortcut: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + movq %rsp,%r11 + shlq $4,%rdx + subq $160,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %r11,128+24(%rsp) +L$prologue_avx: + + vzeroupper + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp L$loop_avx +.p2align 4 +L$loop_avx: + vmovdqa K512+1280(%rip),%xmm11 + vmovdqu 0(%rsi),%xmm0 + leaq K512+128(%rip),%rbp + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vpshufb %xmm11,%xmm0,%xmm0 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm11,%xmm1,%xmm1 + vmovdqu 64(%rsi),%xmm4 + vpshufb %xmm11,%xmm2,%xmm2 + vmovdqu 80(%rsi),%xmm5 + vpshufb %xmm11,%xmm3,%xmm3 + vmovdqu 96(%rsi),%xmm6 + vpshufb %xmm11,%xmm4,%xmm4 + vmovdqu 112(%rsi),%xmm7 + vpshufb %xmm11,%xmm5,%xmm5 + vpaddq -128(%rbp),%xmm0,%xmm8 + vpshufb %xmm11,%xmm6,%xmm6 + vpaddq -96(%rbp),%xmm1,%xmm9 + vpshufb %xmm11,%xmm7,%xmm7 + vpaddq -64(%rbp),%xmm2,%xmm10 + vpaddq -32(%rbp),%xmm3,%xmm11 + vmovdqa %xmm8,0(%rsp) + vpaddq 0(%rbp),%xmm4,%xmm8 + vmovdqa %xmm9,16(%rsp) + vpaddq 32(%rbp),%xmm5,%xmm9 + vmovdqa %xmm10,32(%rsp) + vpaddq 64(%rbp),%xmm6,%xmm10 + vmovdqa %xmm11,48(%rsp) + vpaddq 96(%rbp),%xmm7,%xmm11 + vmovdqa %xmm8,64(%rsp) + movq %rax,%r14 + vmovdqa %xmm9,80(%rsp) + movq %rbx,%rdi + vmovdqa %xmm10,96(%rsp) + xorq %rcx,%rdi + vmovdqa %xmm11,112(%rsp) + movq %r8,%r13 + jmp L$avx_00_47 + +.p2align 4 +L$avx_00_47: + addq $256,%rbp + vpalignr $8,%xmm0,%xmm1,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rax + vpalignr $8,%xmm4,%xmm5,%xmm11 + movq %r9,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r8,%r13 + xorq %r10,%r12 + vpaddq %xmm11,%xmm0,%xmm0 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r8,%r12 + xorq %r8,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 0(%rsp),%r11 + movq %rax,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rbx,%r15 + addq %r12,%r11 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm7,%xmm11 + addq %r11,%rdx + addq %rdi,%r11 + vpxor %xmm9,%xmm8,%xmm8 + movq %rdx,%r13 + addq %r11,%r14 + vpsllq $3,%xmm7,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r11 + vpaddq %xmm8,%xmm0,%xmm0 + movq %r8,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm7,%xmm9 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rdx,%r12 + xorq %rdx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 8(%rsp),%r10 + movq %r11,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r9,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rax,%rdi + addq %r12,%r10 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm0,%xmm0 + xorq %r11,%r14 + addq %r13,%r10 + vpaddq -128(%rbp),%xmm0,%xmm10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,0(%rsp) + vpalignr $8,%xmm1,%xmm2,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r10 + vpalignr $8,%xmm5,%xmm6,%xmm11 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rcx,%r13 + xorq %r8,%r12 + vpaddq %xmm11,%xmm1,%xmm1 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rcx,%r12 + xorq %rcx,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 16(%rsp),%r9 + movq %r10,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r11,%r15 + addq %r12,%r9 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm0,%xmm11 + addq %r9,%rbx + addq %rdi,%r9 + vpxor %xmm9,%xmm8,%xmm8 + movq %rbx,%r13 + addq %r9,%r14 + vpsllq $3,%xmm0,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r9 + vpaddq %xmm8,%xmm1,%xmm1 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm0,%xmm9 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rbx,%r12 + xorq %rbx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 24(%rsp),%r8 + movq %r9,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r10,%rdi + addq %r12,%r8 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm1,%xmm1 + xorq %r9,%r14 + addq %r13,%r8 + vpaddq -96(%rbp),%xmm1,%xmm10 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,16(%rsp) + vpalignr $8,%xmm2,%xmm3,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r8 + vpalignr $8,%xmm6,%xmm7,%xmm11 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rax,%r13 + xorq %rcx,%r12 + vpaddq %xmm11,%xmm2,%xmm2 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rax,%r12 + xorq %rax,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 32(%rsp),%rdx + movq %r8,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r9,%r15 + addq %r12,%rdx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm1,%xmm11 + addq %rdx,%r11 + addq %rdi,%rdx + vpxor %xmm9,%xmm8,%xmm8 + movq %r11,%r13 + addq %rdx,%r14 + vpsllq $3,%xmm1,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rdx + vpaddq %xmm8,%xmm2,%xmm2 + movq %rax,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm1,%xmm9 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r11,%r12 + xorq %r11,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 40(%rsp),%rcx + movq %rdx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r8,%rdi + addq %r12,%rcx + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm2,%xmm2 + xorq %rdx,%r14 + addq %r13,%rcx + vpaddq -64(%rbp),%xmm2,%xmm10 + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,32(%rsp) + vpalignr $8,%xmm3,%xmm4,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rcx + vpalignr $8,%xmm7,%xmm0,%xmm11 + movq %r11,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r10,%r13 + xorq %rax,%r12 + vpaddq %xmm11,%xmm3,%xmm3 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r10,%r12 + xorq %r10,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 48(%rsp),%rbx + movq %rcx,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rdx,%r15 + addq %r12,%rbx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm2,%xmm11 + addq %rbx,%r9 + addq %rdi,%rbx + vpxor %xmm9,%xmm8,%xmm8 + movq %r9,%r13 + addq %rbx,%r14 + vpsllq $3,%xmm2,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rbx + vpaddq %xmm8,%xmm3,%xmm3 + movq %r10,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm2,%xmm9 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r9,%r12 + xorq %r9,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 56(%rsp),%rax + movq %rbx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r11,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rcx,%rdi + addq %r12,%rax + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm3,%xmm3 + xorq %rbx,%r14 + addq %r13,%rax + vpaddq -32(%rbp),%xmm3,%xmm10 + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,48(%rsp) + vpalignr $8,%xmm4,%xmm5,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rax + vpalignr $8,%xmm0,%xmm1,%xmm11 + movq %r9,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r8,%r13 + xorq %r10,%r12 + vpaddq %xmm11,%xmm4,%xmm4 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r8,%r12 + xorq %r8,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 64(%rsp),%r11 + movq %rax,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rbx,%r15 + addq %r12,%r11 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm3,%xmm11 + addq %r11,%rdx + addq %rdi,%r11 + vpxor %xmm9,%xmm8,%xmm8 + movq %rdx,%r13 + addq %r11,%r14 + vpsllq $3,%xmm3,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r11 + vpaddq %xmm8,%xmm4,%xmm4 + movq %r8,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm3,%xmm9 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rdx,%r12 + xorq %rdx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 72(%rsp),%r10 + movq %r11,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r9,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rax,%rdi + addq %r12,%r10 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm4,%xmm4 + xorq %r11,%r14 + addq %r13,%r10 + vpaddq 0(%rbp),%xmm4,%xmm10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,64(%rsp) + vpalignr $8,%xmm5,%xmm6,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r10 + vpalignr $8,%xmm1,%xmm2,%xmm11 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rcx,%r13 + xorq %r8,%r12 + vpaddq %xmm11,%xmm5,%xmm5 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rcx,%r12 + xorq %rcx,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 80(%rsp),%r9 + movq %r10,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r11,%r15 + addq %r12,%r9 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm4,%xmm11 + addq %r9,%rbx + addq %rdi,%r9 + vpxor %xmm9,%xmm8,%xmm8 + movq %rbx,%r13 + addq %r9,%r14 + vpsllq $3,%xmm4,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r9 + vpaddq %xmm8,%xmm5,%xmm5 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm4,%xmm9 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rbx,%r12 + xorq %rbx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 88(%rsp),%r8 + movq %r9,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r10,%rdi + addq %r12,%r8 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm5,%xmm5 + xorq %r9,%r14 + addq %r13,%r8 + vpaddq 32(%rbp),%xmm5,%xmm10 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,80(%rsp) + vpalignr $8,%xmm6,%xmm7,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r8 + vpalignr $8,%xmm2,%xmm3,%xmm11 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rax,%r13 + xorq %rcx,%r12 + vpaddq %xmm11,%xmm6,%xmm6 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rax,%r12 + xorq %rax,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 96(%rsp),%rdx + movq %r8,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r9,%r15 + addq %r12,%rdx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm5,%xmm11 + addq %rdx,%r11 + addq %rdi,%rdx + vpxor %xmm9,%xmm8,%xmm8 + movq %r11,%r13 + addq %rdx,%r14 + vpsllq $3,%xmm5,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rdx + vpaddq %xmm8,%xmm6,%xmm6 + movq %rax,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm5,%xmm9 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r11,%r12 + xorq %r11,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 104(%rsp),%rcx + movq %rdx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r8,%rdi + addq %r12,%rcx + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm6,%xmm6 + xorq %rdx,%r14 + addq %r13,%rcx + vpaddq 64(%rbp),%xmm6,%xmm10 + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,96(%rsp) + vpalignr $8,%xmm7,%xmm0,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rcx + vpalignr $8,%xmm3,%xmm4,%xmm11 + movq %r11,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r10,%r13 + xorq %rax,%r12 + vpaddq %xmm11,%xmm7,%xmm7 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r10,%r12 + xorq %r10,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 112(%rsp),%rbx + movq %rcx,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rdx,%r15 + addq %r12,%rbx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm6,%xmm11 + addq %rbx,%r9 + addq %rdi,%rbx + vpxor %xmm9,%xmm8,%xmm8 + movq %r9,%r13 + addq %rbx,%r14 + vpsllq $3,%xmm6,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rbx + vpaddq %xmm8,%xmm7,%xmm7 + movq %r10,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm6,%xmm9 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r9,%r12 + xorq %r9,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 120(%rsp),%rax + movq %rbx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r11,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rcx,%rdi + addq %r12,%rax + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm7,%xmm7 + xorq %rbx,%r14 + addq %r13,%rax + vpaddq 96(%rbp),%xmm7,%xmm10 + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,112(%rsp) + cmpb $0,135(%rbp) + jne L$avx_00_47 + shrdq $23,%r13,%r13 + movq %r14,%rax + movq %r9,%r12 + shrdq $5,%r14,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r11 + movq %r8,%r12 + shrdq $5,%r14,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + shrdq $6,%r14,%r14 + xorq %rax,%rdi + addq %r12,%r10 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r10 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + xorq %r11,%r15 + addq %r12,%r9 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r9 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + xorq %r10,%rdi + addq %r12,%r8 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r8 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + xorq %r9,%r15 + addq %r12,%rdx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + shrdq $28,%r14,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rdx + movq %rax,%r12 + shrdq $5,%r14,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + xorq %r8,%rdi + addq %r12,%rcx + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rcx + movq %r11,%r12 + shrdq $5,%r14,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rbx + movq %r10,%r12 + shrdq $5,%r14,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + shrdq $6,%r14,%r14 + xorq %rcx,%rdi + addq %r12,%rax + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rax + movq %r9,%r12 + shrdq $5,%r14,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r11 + movq %r8,%r12 + shrdq $5,%r14,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + shrdq $6,%r14,%r14 + xorq %rax,%rdi + addq %r12,%r10 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r10 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + xorq %r11,%r15 + addq %r12,%r9 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r9 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + xorq %r10,%rdi + addq %r12,%r8 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r8 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + xorq %r9,%r15 + addq %r12,%rdx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + shrdq $28,%r14,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rdx + movq %rax,%r12 + shrdq $5,%r14,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + xorq %r8,%rdi + addq %r12,%rcx + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rcx + movq %r11,%r12 + shrdq $5,%r14,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rbx + movq %r10,%r12 + shrdq $5,%r14,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + shrdq $6,%r14,%r14 + xorq %rcx,%rdi + addq %r12,%rax + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + movq 128+0(%rsp),%rdi + movq %r14,%rax + + addq 0(%rdi),%rax + leaq 128(%rsi),%rsi + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb L$loop_avx + + movq 128+24(%rsp),%rsi + vzeroupper + movq (%rsi),%r15 + movq 8(%rsi),%r14 + movq 16(%rsi),%r13 + movq 24(%rsi),%r12 + movq 32(%rsi),%rbp + movq 40(%rsi),%rbx + leaq 48(%rsi),%rsp +L$epilogue_avx: + .byte 0xf3,0xc3 + #endif
diff --git a/third_party/boringssl/win-x86/crypto/sha/sha1-586.asm b/third_party/boringssl/win-x86/crypto/sha/sha1-586.asm index 43bf9642..cee8c62 100644 --- a/third_party/boringssl/win-x86/crypto/sha/sha1-586.asm +++ b/third_party/boringssl/win-x86/crypto/sha/sha1-586.asm
@@ -35,6 +35,11 @@ mov ecx,DWORD [8+esi] test eax,16777216 jz NEAR L$001x86 + and edx,268435456 + and eax,1073741824 + or eax,edx + cmp eax,1342177280 + je NEAR L$avx_shortcut jmp NEAR L$ssse3_shortcut align 16 L$001x86: @@ -2619,6 +2624,1174 @@ pop ebx pop ebp ret +align 16 +__sha1_block_data_order_avx: + push ebp + push ebx + push esi + push edi + call L$006pic_point +L$006pic_point: + pop ebp + lea ebp,[(L$K_XX_XX-L$006pic_point)+ebp] +L$avx_shortcut: + vzeroall + vmovdqa xmm7,[ebp] + vmovdqa xmm0,[16+ebp] + vmovdqa xmm1,[32+ebp] + vmovdqa xmm2,[48+ebp] + vmovdqa xmm6,[64+ebp] + mov edi,DWORD [20+esp] + mov ebp,DWORD [24+esp] + mov edx,DWORD [28+esp] + mov esi,esp + sub esp,208 + and esp,-64 + vmovdqa [112+esp],xmm0 + vmovdqa [128+esp],xmm1 + vmovdqa [144+esp],xmm2 + shl edx,6 + vmovdqa [160+esp],xmm7 + add edx,ebp + vmovdqa [176+esp],xmm6 + add ebp,64 + mov DWORD [192+esp],edi + mov DWORD [196+esp],ebp + mov DWORD [200+esp],edx + mov DWORD [204+esp],esi + mov eax,DWORD [edi] + mov ebx,DWORD [4+edi] + mov ecx,DWORD [8+edi] + mov edx,DWORD [12+edi] + mov edi,DWORD [16+edi] + mov esi,ebx + vmovdqu xmm0,[ebp-64] + vmovdqu xmm1,[ebp-48] + vmovdqu xmm2,[ebp-32] + vmovdqu xmm3,[ebp-16] + vpshufb xmm0,xmm0,xmm6 + vpshufb xmm1,xmm1,xmm6 + vpshufb xmm2,xmm2,xmm6 + vmovdqa [96+esp],xmm7 + vpshufb xmm3,xmm3,xmm6 + vpaddd xmm4,xmm0,xmm7 + vpaddd xmm5,xmm1,xmm7 + vpaddd xmm6,xmm2,xmm7 + vmovdqa [esp],xmm4 + mov ebp,ecx + vmovdqa [16+esp],xmm5 + xor ebp,edx + vmovdqa [32+esp],xmm6 + and esi,ebp + jmp NEAR L$007loop +align 16 +L$007loop: + shrd ebx,ebx,2 + xor esi,edx + vpalignr xmm4,xmm1,xmm0,8 + mov ebp,eax + add edi,DWORD [esp] + vpaddd xmm7,xmm7,xmm3 + vmovdqa [64+esp],xmm0 + xor ebx,ecx + shld eax,eax,5 + vpsrldq xmm6,xmm3,4 + add edi,esi + and ebp,ebx + vpxor xmm4,xmm4,xmm0 + xor ebx,ecx + add edi,eax + vpxor xmm6,xmm6,xmm2 + shrd eax,eax,7 + xor ebp,ecx + vmovdqa [48+esp],xmm7 + mov esi,edi + add edx,DWORD [4+esp] + vpxor xmm4,xmm4,xmm6 + xor eax,ebx + shld edi,edi,5 + add edx,ebp + and esi,eax + vpsrld xmm6,xmm4,31 + xor eax,ebx + add edx,edi + shrd edi,edi,7 + xor esi,ebx + vpslldq xmm0,xmm4,12 + vpaddd xmm4,xmm4,xmm4 + mov ebp,edx + add ecx,DWORD [8+esp] + xor edi,eax + shld edx,edx,5 + vpsrld xmm7,xmm0,30 + vpor xmm4,xmm4,xmm6 + add ecx,esi + and ebp,edi + xor edi,eax + add ecx,edx + vpslld xmm0,xmm0,2 + shrd edx,edx,7 + xor ebp,eax + vpxor xmm4,xmm4,xmm7 + mov esi,ecx + add ebx,DWORD [12+esp] + xor edx,edi + shld ecx,ecx,5 + vpxor xmm4,xmm4,xmm0 + add ebx,ebp + and esi,edx + vmovdqa xmm0,[96+esp] + xor edx,edi + add ebx,ecx + shrd ecx,ecx,7 + xor esi,edi + vpalignr xmm5,xmm2,xmm1,8 + mov ebp,ebx + add eax,DWORD [16+esp] + vpaddd xmm0,xmm0,xmm4 + vmovdqa [80+esp],xmm1 + xor ecx,edx + shld ebx,ebx,5 + vpsrldq xmm7,xmm4,4 + add eax,esi + and ebp,ecx + vpxor xmm5,xmm5,xmm1 + xor ecx,edx + add eax,ebx + vpxor xmm7,xmm7,xmm3 + shrd ebx,ebx,7 + xor ebp,edx + vmovdqa [esp],xmm0 + mov esi,eax + add edi,DWORD [20+esp] + vpxor xmm5,xmm5,xmm7 + xor ebx,ecx + shld eax,eax,5 + add edi,ebp + and esi,ebx + vpsrld xmm7,xmm5,31 + xor ebx,ecx + add edi,eax + shrd eax,eax,7 + xor esi,ecx + vpslldq xmm1,xmm5,12 + vpaddd xmm5,xmm5,xmm5 + mov ebp,edi + add edx,DWORD [24+esp] + xor eax,ebx + shld edi,edi,5 + vpsrld xmm0,xmm1,30 + vpor xmm5,xmm5,xmm7 + add edx,esi + and ebp,eax + xor eax,ebx + add edx,edi + vpslld xmm1,xmm1,2 + shrd edi,edi,7 + xor ebp,ebx + vpxor xmm5,xmm5,xmm0 + mov esi,edx + add ecx,DWORD [28+esp] + xor edi,eax + shld edx,edx,5 + vpxor xmm5,xmm5,xmm1 + add ecx,ebp + and esi,edi + vmovdqa xmm1,[112+esp] + xor edi,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + vpalignr xmm6,xmm3,xmm2,8 + mov ebp,ecx + add ebx,DWORD [32+esp] + vpaddd xmm1,xmm1,xmm5 + vmovdqa [96+esp],xmm2 + xor edx,edi + shld ecx,ecx,5 + vpsrldq xmm0,xmm5,4 + add ebx,esi + and ebp,edx + vpxor xmm6,xmm6,xmm2 + xor edx,edi + add ebx,ecx + vpxor xmm0,xmm0,xmm4 + shrd ecx,ecx,7 + xor ebp,edi + vmovdqa [16+esp],xmm1 + mov esi,ebx + add eax,DWORD [36+esp] + vpxor xmm6,xmm6,xmm0 + xor ecx,edx + shld ebx,ebx,5 + add eax,ebp + and esi,ecx + vpsrld xmm0,xmm6,31 + xor ecx,edx + add eax,ebx + shrd ebx,ebx,7 + xor esi,edx + vpslldq xmm2,xmm6,12 + vpaddd xmm6,xmm6,xmm6 + mov ebp,eax + add edi,DWORD [40+esp] + xor ebx,ecx + shld eax,eax,5 + vpsrld xmm1,xmm2,30 + vpor xmm6,xmm6,xmm0 + add edi,esi + and ebp,ebx + xor ebx,ecx + add edi,eax + vpslld xmm2,xmm2,2 + vmovdqa xmm0,[64+esp] + shrd eax,eax,7 + xor ebp,ecx + vpxor xmm6,xmm6,xmm1 + mov esi,edi + add edx,DWORD [44+esp] + xor eax,ebx + shld edi,edi,5 + vpxor xmm6,xmm6,xmm2 + add edx,ebp + and esi,eax + vmovdqa xmm2,[112+esp] + xor eax,ebx + add edx,edi + shrd edi,edi,7 + xor esi,ebx + vpalignr xmm7,xmm4,xmm3,8 + mov ebp,edx + add ecx,DWORD [48+esp] + vpaddd xmm2,xmm2,xmm6 + vmovdqa [64+esp],xmm3 + xor edi,eax + shld edx,edx,5 + vpsrldq xmm1,xmm6,4 + add ecx,esi + and ebp,edi + vpxor xmm7,xmm7,xmm3 + xor edi,eax + add ecx,edx + vpxor xmm1,xmm1,xmm5 + shrd edx,edx,7 + xor ebp,eax + vmovdqa [32+esp],xmm2 + mov esi,ecx + add ebx,DWORD [52+esp] + vpxor xmm7,xmm7,xmm1 + xor edx,edi + shld ecx,ecx,5 + add ebx,ebp + and esi,edx + vpsrld xmm1,xmm7,31 + xor edx,edi + add ebx,ecx + shrd ecx,ecx,7 + xor esi,edi + vpslldq xmm3,xmm7,12 + vpaddd xmm7,xmm7,xmm7 + mov ebp,ebx + add eax,DWORD [56+esp] + xor ecx,edx + shld ebx,ebx,5 + vpsrld xmm2,xmm3,30 + vpor xmm7,xmm7,xmm1 + add eax,esi + and ebp,ecx + xor ecx,edx + add eax,ebx + vpslld xmm3,xmm3,2 + vmovdqa xmm1,[80+esp] + shrd ebx,ebx,7 + xor ebp,edx + vpxor xmm7,xmm7,xmm2 + mov esi,eax + add edi,DWORD [60+esp] + xor ebx,ecx + shld eax,eax,5 + vpxor xmm7,xmm7,xmm3 + add edi,ebp + and esi,ebx + vmovdqa xmm3,[112+esp] + xor ebx,ecx + add edi,eax + vpalignr xmm2,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + shrd eax,eax,7 + xor esi,ecx + mov ebp,edi + add edx,DWORD [esp] + vpxor xmm0,xmm0,xmm1 + vmovdqa [80+esp],xmm4 + xor eax,ebx + shld edi,edi,5 + vmovdqa xmm4,xmm3 + vpaddd xmm3,xmm3,xmm7 + add edx,esi + and ebp,eax + vpxor xmm0,xmm0,xmm2 + xor eax,ebx + add edx,edi + shrd edi,edi,7 + xor ebp,ebx + vpsrld xmm2,xmm0,30 + vmovdqa [48+esp],xmm3 + mov esi,edx + add ecx,DWORD [4+esp] + xor edi,eax + shld edx,edx,5 + vpslld xmm0,xmm0,2 + add ecx,ebp + and esi,edi + xor edi,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + mov ebp,ecx + add ebx,DWORD [8+esp] + vpor xmm0,xmm0,xmm2 + xor edx,edi + shld ecx,ecx,5 + vmovdqa xmm2,[96+esp] + add ebx,esi + and ebp,edx + xor edx,edi + add ebx,ecx + add eax,DWORD [12+esp] + xor ebp,edi + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpalignr xmm3,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add edi,DWORD [16+esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + vpxor xmm1,xmm1,xmm2 + vmovdqa [96+esp],xmm5 + add edi,esi + xor ebp,ecx + vmovdqa xmm5,xmm4 + vpaddd xmm4,xmm4,xmm0 + shrd ebx,ebx,7 + add edi,eax + vpxor xmm1,xmm1,xmm3 + add edx,DWORD [20+esp] + xor ebp,ebx + mov esi,edi + shld edi,edi,5 + vpsrld xmm3,xmm1,30 + vmovdqa [esp],xmm4 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + vpslld xmm1,xmm1,2 + add ecx,DWORD [24+esp] + xor esi,eax + mov ebp,edx + shld edx,edx,5 + add ecx,esi + xor ebp,eax + shrd edi,edi,7 + add ecx,edx + vpor xmm1,xmm1,xmm3 + add ebx,DWORD [28+esp] + xor ebp,edi + vmovdqa xmm3,[64+esp] + mov esi,ecx + shld ecx,ecx,5 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + vpalignr xmm4,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add eax,DWORD [32+esp] + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + vpxor xmm2,xmm2,xmm3 + vmovdqa [64+esp],xmm6 + add eax,esi + xor ebp,edx + vmovdqa xmm6,[128+esp] + vpaddd xmm5,xmm5,xmm1 + shrd ecx,ecx,7 + add eax,ebx + vpxor xmm2,xmm2,xmm4 + add edi,DWORD [36+esp] + xor ebp,ecx + mov esi,eax + shld eax,eax,5 + vpsrld xmm4,xmm2,30 + vmovdqa [16+esp],xmm5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + vpslld xmm2,xmm2,2 + add edx,DWORD [40+esp] + xor esi,ebx + mov ebp,edi + shld edi,edi,5 + add edx,esi + xor ebp,ebx + shrd eax,eax,7 + add edx,edi + vpor xmm2,xmm2,xmm4 + add ecx,DWORD [44+esp] + xor ebp,eax + vmovdqa xmm4,[80+esp] + mov esi,edx + shld edx,edx,5 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + vpalignr xmm5,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add ebx,DWORD [48+esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + vpxor xmm3,xmm3,xmm4 + vmovdqa [80+esp],xmm7 + add ebx,esi + xor ebp,edi + vmovdqa xmm7,xmm6 + vpaddd xmm6,xmm6,xmm2 + shrd edx,edx,7 + add ebx,ecx + vpxor xmm3,xmm3,xmm5 + add eax,DWORD [52+esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + vpsrld xmm5,xmm3,30 + vmovdqa [32+esp],xmm6 + add eax,ebp + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpslld xmm3,xmm3,2 + add edi,DWORD [56+esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + add edi,esi + xor ebp,ecx + shrd ebx,ebx,7 + add edi,eax + vpor xmm3,xmm3,xmm5 + add edx,DWORD [60+esp] + xor ebp,ebx + vmovdqa xmm5,[96+esp] + mov esi,edi + shld edi,edi,5 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + vpalignr xmm6,xmm3,xmm2,8 + vpxor xmm4,xmm4,xmm0 + add ecx,DWORD [esp] + xor esi,eax + mov ebp,edx + shld edx,edx,5 + vpxor xmm4,xmm4,xmm5 + vmovdqa [96+esp],xmm0 + add ecx,esi + xor ebp,eax + vmovdqa xmm0,xmm7 + vpaddd xmm7,xmm7,xmm3 + shrd edi,edi,7 + add ecx,edx + vpxor xmm4,xmm4,xmm6 + add ebx,DWORD [4+esp] + xor ebp,edi + mov esi,ecx + shld ecx,ecx,5 + vpsrld xmm6,xmm4,30 + vmovdqa [48+esp],xmm7 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + vpslld xmm4,xmm4,2 + add eax,DWORD [8+esp] + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + add eax,esi + xor ebp,edx + shrd ecx,ecx,7 + add eax,ebx + vpor xmm4,xmm4,xmm6 + add edi,DWORD [12+esp] + xor ebp,ecx + vmovdqa xmm6,[64+esp] + mov esi,eax + shld eax,eax,5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + vpalignr xmm7,xmm4,xmm3,8 + vpxor xmm5,xmm5,xmm1 + add edx,DWORD [16+esp] + xor esi,ebx + mov ebp,edi + shld edi,edi,5 + vpxor xmm5,xmm5,xmm6 + vmovdqa [64+esp],xmm1 + add edx,esi + xor ebp,ebx + vmovdqa xmm1,xmm0 + vpaddd xmm0,xmm0,xmm4 + shrd eax,eax,7 + add edx,edi + vpxor xmm5,xmm5,xmm7 + add ecx,DWORD [20+esp] + xor ebp,eax + mov esi,edx + shld edx,edx,5 + vpsrld xmm7,xmm5,30 + vmovdqa [esp],xmm0 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + vpslld xmm5,xmm5,2 + add ebx,DWORD [24+esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + vpor xmm5,xmm5,xmm7 + add eax,DWORD [28+esp] + vmovdqa xmm7,[80+esp] + shrd ecx,ecx,7 + mov esi,ebx + xor ebp,edx + shld ebx,ebx,5 + add eax,ebp + xor esi,ecx + xor ecx,edx + add eax,ebx + vpalignr xmm0,xmm5,xmm4,8 + vpxor xmm6,xmm6,xmm2 + add edi,DWORD [32+esp] + and esi,ecx + xor ecx,edx + shrd ebx,ebx,7 + vpxor xmm6,xmm6,xmm7 + vmovdqa [80+esp],xmm2 + mov ebp,eax + xor esi,ecx + vmovdqa xmm2,xmm1 + vpaddd xmm1,xmm1,xmm5 + shld eax,eax,5 + add edi,esi + vpxor xmm6,xmm6,xmm0 + xor ebp,ebx + xor ebx,ecx + add edi,eax + add edx,DWORD [36+esp] + vpsrld xmm0,xmm6,30 + vmovdqa [16+esp],xmm1 + and ebp,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,edi + vpslld xmm6,xmm6,2 + xor ebp,ebx + shld edi,edi,5 + add edx,ebp + xor esi,eax + xor eax,ebx + add edx,edi + add ecx,DWORD [40+esp] + and esi,eax + vpor xmm6,xmm6,xmm0 + xor eax,ebx + shrd edi,edi,7 + vmovdqa xmm0,[96+esp] + mov ebp,edx + xor esi,eax + shld edx,edx,5 + add ecx,esi + xor ebp,edi + xor edi,eax + add ecx,edx + add ebx,DWORD [44+esp] + and ebp,edi + xor edi,eax + shrd edx,edx,7 + mov esi,ecx + xor ebp,edi + shld ecx,ecx,5 + add ebx,ebp + xor esi,edx + xor edx,edi + add ebx,ecx + vpalignr xmm1,xmm6,xmm5,8 + vpxor xmm7,xmm7,xmm3 + add eax,DWORD [48+esp] + and esi,edx + xor edx,edi + shrd ecx,ecx,7 + vpxor xmm7,xmm7,xmm0 + vmovdqa [96+esp],xmm3 + mov ebp,ebx + xor esi,edx + vmovdqa xmm3,[144+esp] + vpaddd xmm2,xmm2,xmm6 + shld ebx,ebx,5 + add eax,esi + vpxor xmm7,xmm7,xmm1 + xor ebp,ecx + xor ecx,edx + add eax,ebx + add edi,DWORD [52+esp] + vpsrld xmm1,xmm7,30 + vmovdqa [32+esp],xmm2 + and ebp,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + vpslld xmm7,xmm7,2 + xor ebp,ecx + shld eax,eax,5 + add edi,ebp + xor esi,ebx + xor ebx,ecx + add edi,eax + add edx,DWORD [56+esp] + and esi,ebx + vpor xmm7,xmm7,xmm1 + xor ebx,ecx + shrd eax,eax,7 + vmovdqa xmm1,[64+esp] + mov ebp,edi + xor esi,ebx + shld edi,edi,5 + add edx,esi + xor ebp,eax + xor eax,ebx + add edx,edi + add ecx,DWORD [60+esp] + and ebp,eax + xor eax,ebx + shrd edi,edi,7 + mov esi,edx + xor ebp,eax + shld edx,edx,5 + add ecx,ebp + xor esi,edi + xor edi,eax + add ecx,edx + vpalignr xmm2,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + add ebx,DWORD [esp] + and esi,edi + xor edi,eax + shrd edx,edx,7 + vpxor xmm0,xmm0,xmm1 + vmovdqa [64+esp],xmm4 + mov ebp,ecx + xor esi,edi + vmovdqa xmm4,xmm3 + vpaddd xmm3,xmm3,xmm7 + shld ecx,ecx,5 + add ebx,esi + vpxor xmm0,xmm0,xmm2 + xor ebp,edx + xor edx,edi + add ebx,ecx + add eax,DWORD [4+esp] + vpsrld xmm2,xmm0,30 + vmovdqa [48+esp],xmm3 + and ebp,edx + xor edx,edi + shrd ecx,ecx,7 + mov esi,ebx + vpslld xmm0,xmm0,2 + xor ebp,edx + shld ebx,ebx,5 + add eax,ebp + xor esi,ecx + xor ecx,edx + add eax,ebx + add edi,DWORD [8+esp] + and esi,ecx + vpor xmm0,xmm0,xmm2 + xor ecx,edx + shrd ebx,ebx,7 + vmovdqa xmm2,[80+esp] + mov ebp,eax + xor esi,ecx + shld eax,eax,5 + add edi,esi + xor ebp,ebx + xor ebx,ecx + add edi,eax + add edx,DWORD [12+esp] + and ebp,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,edi + xor ebp,ebx + shld edi,edi,5 + add edx,ebp + xor esi,eax + xor eax,ebx + add edx,edi + vpalignr xmm3,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add ecx,DWORD [16+esp] + and esi,eax + xor eax,ebx + shrd edi,edi,7 + vpxor xmm1,xmm1,xmm2 + vmovdqa [80+esp],xmm5 + mov ebp,edx + xor esi,eax + vmovdqa xmm5,xmm4 + vpaddd xmm4,xmm4,xmm0 + shld edx,edx,5 + add ecx,esi + vpxor xmm1,xmm1,xmm3 + xor ebp,edi + xor edi,eax + add ecx,edx + add ebx,DWORD [20+esp] + vpsrld xmm3,xmm1,30 + vmovdqa [esp],xmm4 + and ebp,edi + xor edi,eax + shrd edx,edx,7 + mov esi,ecx + vpslld xmm1,xmm1,2 + xor ebp,edi + shld ecx,ecx,5 + add ebx,ebp + xor esi,edx + xor edx,edi + add ebx,ecx + add eax,DWORD [24+esp] + and esi,edx + vpor xmm1,xmm1,xmm3 + xor edx,edi + shrd ecx,ecx,7 + vmovdqa xmm3,[96+esp] + mov ebp,ebx + xor esi,edx + shld ebx,ebx,5 + add eax,esi + xor ebp,ecx + xor ecx,edx + add eax,ebx + add edi,DWORD [28+esp] + and ebp,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + xor ebp,ecx + shld eax,eax,5 + add edi,ebp + xor esi,ebx + xor ebx,ecx + add edi,eax + vpalignr xmm4,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add edx,DWORD [32+esp] + and esi,ebx + xor ebx,ecx + shrd eax,eax,7 + vpxor xmm2,xmm2,xmm3 + vmovdqa [96+esp],xmm6 + mov ebp,edi + xor esi,ebx + vmovdqa xmm6,xmm5 + vpaddd xmm5,xmm5,xmm1 + shld edi,edi,5 + add edx,esi + vpxor xmm2,xmm2,xmm4 + xor ebp,eax + xor eax,ebx + add edx,edi + add ecx,DWORD [36+esp] + vpsrld xmm4,xmm2,30 + vmovdqa [16+esp],xmm5 + and ebp,eax + xor eax,ebx + shrd edi,edi,7 + mov esi,edx + vpslld xmm2,xmm2,2 + xor ebp,eax + shld edx,edx,5 + add ecx,ebp + xor esi,edi + xor edi,eax + add ecx,edx + add ebx,DWORD [40+esp] + and esi,edi + vpor xmm2,xmm2,xmm4 + xor edi,eax + shrd edx,edx,7 + vmovdqa xmm4,[64+esp] + mov ebp,ecx + xor esi,edi + shld ecx,ecx,5 + add ebx,esi + xor ebp,edx + xor edx,edi + add ebx,ecx + add eax,DWORD [44+esp] + and ebp,edx + xor edx,edi + shrd ecx,ecx,7 + mov esi,ebx + xor ebp,edx + shld ebx,ebx,5 + add eax,ebp + xor esi,edx + add eax,ebx + vpalignr xmm5,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add edi,DWORD [48+esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + vpxor xmm3,xmm3,xmm4 + vmovdqa [64+esp],xmm7 + add edi,esi + xor ebp,ecx + vmovdqa xmm7,xmm6 + vpaddd xmm6,xmm6,xmm2 + shrd ebx,ebx,7 + add edi,eax + vpxor xmm3,xmm3,xmm5 + add edx,DWORD [52+esp] + xor ebp,ebx + mov esi,edi + shld edi,edi,5 + vpsrld xmm5,xmm3,30 + vmovdqa [32+esp],xmm6 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + vpslld xmm3,xmm3,2 + add ecx,DWORD [56+esp] + xor esi,eax + mov ebp,edx + shld edx,edx,5 + add ecx,esi + xor ebp,eax + shrd edi,edi,7 + add ecx,edx + vpor xmm3,xmm3,xmm5 + add ebx,DWORD [60+esp] + xor ebp,edi + mov esi,ecx + shld ecx,ecx,5 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD [esp] + vpaddd xmm7,xmm7,xmm3 + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + add eax,esi + vmovdqa [48+esp],xmm7 + xor ebp,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD [4+esp] + xor ebp,ecx + mov esi,eax + shld eax,eax,5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD [8+esp] + xor esi,ebx + mov ebp,edi + shld edi,edi,5 + add edx,esi + xor ebp,ebx + shrd eax,eax,7 + add edx,edi + add ecx,DWORD [12+esp] + xor ebp,eax + mov esi,edx + shld edx,edx,5 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + mov ebp,DWORD [196+esp] + cmp ebp,DWORD [200+esp] + je NEAR L$008done + vmovdqa xmm7,[160+esp] + vmovdqa xmm6,[176+esp] + vmovdqu xmm0,[ebp] + vmovdqu xmm1,[16+ebp] + vmovdqu xmm2,[32+ebp] + vmovdqu xmm3,[48+ebp] + add ebp,64 + vpshufb xmm0,xmm0,xmm6 + mov DWORD [196+esp],ebp + vmovdqa [96+esp],xmm7 + add ebx,DWORD [16+esp] + xor esi,edi + vpshufb xmm1,xmm1,xmm6 + mov ebp,ecx + shld ecx,ecx,5 + vpaddd xmm4,xmm0,xmm7 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + vmovdqa [esp],xmm4 + add eax,DWORD [20+esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD [24+esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + add edi,esi + xor ebp,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD [28+esp] + xor ebp,ebx + mov esi,edi + shld edi,edi,5 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + add ecx,DWORD [32+esp] + xor esi,eax + vpshufb xmm2,xmm2,xmm6 + mov ebp,edx + shld edx,edx,5 + vpaddd xmm5,xmm1,xmm7 + add ecx,esi + xor ebp,eax + shrd edi,edi,7 + add ecx,edx + vmovdqa [16+esp],xmm5 + add ebx,DWORD [36+esp] + xor ebp,edi + mov esi,ecx + shld ecx,ecx,5 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD [40+esp] + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + add eax,esi + xor ebp,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD [44+esp] + xor ebp,ecx + mov esi,eax + shld eax,eax,5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD [48+esp] + xor esi,ebx + vpshufb xmm3,xmm3,xmm6 + mov ebp,edi + shld edi,edi,5 + vpaddd xmm6,xmm2,xmm7 + add edx,esi + xor ebp,ebx + shrd eax,eax,7 + add edx,edi + vmovdqa [32+esp],xmm6 + add ecx,DWORD [52+esp] + xor ebp,eax + mov esi,edx + shld edx,edx,5 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + add ebx,DWORD [56+esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD [60+esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + shrd ecx,ecx,7 + add eax,ebx + mov ebp,DWORD [192+esp] + add eax,DWORD [ebp] + add esi,DWORD [4+ebp] + add ecx,DWORD [8+ebp] + mov DWORD [ebp],eax + add edx,DWORD [12+ebp] + mov DWORD [4+ebp],esi + add edi,DWORD [16+ebp] + mov ebx,ecx + mov DWORD [8+ebp],ecx + xor ebx,edx + mov DWORD [12+ebp],edx + mov DWORD [16+ebp],edi + mov ebp,esi + and esi,ebx + mov ebx,ebp + jmp NEAR L$007loop +align 16 +L$008done: + add ebx,DWORD [16+esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD [20+esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD [24+esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + add edi,esi + xor ebp,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD [28+esp] + xor ebp,ebx + mov esi,edi + shld edi,edi,5 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + add ecx,DWORD [32+esp] + xor esi,eax + mov ebp,edx + shld edx,edx,5 + add ecx,esi + xor ebp,eax + shrd edi,edi,7 + add ecx,edx + add ebx,DWORD [36+esp] + xor ebp,edi + mov esi,ecx + shld ecx,ecx,5 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD [40+esp] + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + add eax,esi + xor ebp,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD [44+esp] + xor ebp,ecx + mov esi,eax + shld eax,eax,5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD [48+esp] + xor esi,ebx + mov ebp,edi + shld edi,edi,5 + add edx,esi + xor ebp,ebx + shrd eax,eax,7 + add edx,edi + add ecx,DWORD [52+esp] + xor ebp,eax + mov esi,edx + shld edx,edx,5 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + add ebx,DWORD [56+esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD [60+esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + shrd ecx,ecx,7 + add eax,ebx + vzeroall + mov ebp,DWORD [192+esp] + add eax,DWORD [ebp] + mov esp,DWORD [204+esp] + add esi,DWORD [4+ebp] + add ecx,DWORD [8+ebp] + mov DWORD [ebp],eax + add edx,DWORD [12+ebp] + mov DWORD [4+ebp],esi + add edi,DWORD [16+ebp] + mov DWORD [8+ebp],ecx + mov DWORD [12+ebp],edx + mov DWORD [16+ebp],edi + pop edi + pop esi + pop ebx + pop ebp + ret align 64 L$K_XX_XX: dd 1518500249,1518500249,1518500249,1518500249
diff --git a/third_party/boringssl/win-x86/crypto/sha/sha256-586.asm b/third_party/boringssl/win-x86/crypto/sha/sha256-586.asm index d03558c8..3e7cfcca 100644 --- a/third_party/boringssl/win-x86/crypto/sha/sha256-586.asm +++ b/third_party/boringssl/win-x86/crypto/sha/sha256-586.asm
@@ -52,12 +52,13 @@ or ecx,ebx and ecx,1342177280 cmp ecx,1342177280 + je NEAR L$004AVX test ebx,512 - jnz NEAR L$004SSSE3 + jnz NEAR L$005SSSE3 L$003no_xmm: sub eax,edi cmp eax,256 - jae NEAR L$005unrolled + jae NEAR L$006unrolled jmp NEAR L$002loop align 16 L$002loop: @@ -129,7 +130,7 @@ mov DWORD [28+esp],ecx mov DWORD [32+esp],edi align 16 -L$00600_15: +L$00700_15: mov ecx,edx mov esi,DWORD [24+esp] ror ecx,14 @@ -167,11 +168,11 @@ add ebp,4 add eax,ebx cmp esi,3248222580 - jne NEAR L$00600_15 + jne NEAR L$00700_15 mov ecx,DWORD [156+esp] - jmp NEAR L$00716_63 + jmp NEAR L$00816_63 align 16 -L$00716_63: +L$00816_63: mov ebx,ecx mov esi,DWORD [104+esp] ror ecx,11 @@ -226,7 +227,7 @@ add ebp,4 add eax,ebx cmp esi,3329325298 - jne NEAR L$00716_63 + jne NEAR L$00816_63 mov esi,DWORD [356+esp] mov ebx,DWORD [8+esp] mov ecx,DWORD [16+esp] @@ -270,7 +271,7 @@ db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 db 62,0 align 16 -L$005unrolled: +L$006unrolled: lea esp,[esp-96] mov eax,DWORD [esi] mov ebp,DWORD [4+esi] @@ -287,9 +288,9 @@ mov DWORD [20+esp],ebx mov DWORD [24+esp],ecx mov DWORD [28+esp],esi - jmp NEAR L$008grand_loop + jmp NEAR L$009grand_loop align 16 -L$008grand_loop: +L$009grand_loop: mov ebx,DWORD [edi] mov ecx,DWORD [4+edi] bswap ebx @@ -3169,7 +3170,7 @@ mov DWORD [24+esp],ebx mov DWORD [28+esp],ecx cmp edi,DWORD [104+esp] - jb NEAR L$008grand_loop + jb NEAR L$009grand_loop mov esp,DWORD [108+esp] pop edi pop esi @@ -3177,7 +3178,7 @@ pop ebp ret align 32 -L$004SSSE3: +L$005SSSE3: lea esp,[esp-96] mov eax,DWORD [esi] mov ebx,DWORD [4+esi] @@ -3196,9 +3197,9 @@ mov DWORD [24+esp],ecx mov DWORD [28+esp],esi movdqa xmm7,[256+ebp] - jmp NEAR L$009grand_ssse3 + jmp NEAR L$010grand_ssse3 align 16 -L$009grand_ssse3: +L$010grand_ssse3: movdqu xmm0,[edi] movdqu xmm1,[16+edi] movdqu xmm2,[32+edi] @@ -3221,9 +3222,9 @@ paddd xmm7,xmm3 movdqa [64+esp],xmm6 movdqa [80+esp],xmm7 - jmp NEAR L$010ssse3_00_47 + jmp NEAR L$011ssse3_00_47 align 16 -L$010ssse3_00_47: +L$011ssse3_00_47: add ebp,64 mov ecx,edx movdqa xmm4,xmm1 @@ -3866,7 +3867,7 @@ add eax,ecx movdqa [80+esp],xmm6 cmp DWORD [64+ebp],66051 - jne NEAR L$010ssse3_00_47 + jne NEAR L$011ssse3_00_47 mov ecx,edx ror edx,14 mov esi,DWORD [20+esp] @@ -4380,12 +4381,1193 @@ movdqa xmm7,[64+ebp] sub ebp,192 cmp edi,DWORD [104+esp] - jb NEAR L$009grand_ssse3 + jb NEAR L$010grand_ssse3 mov esp,DWORD [108+esp] pop edi pop esi pop ebx pop ebp ret +align 32 +L$004AVX: + lea esp,[esp-96] + vzeroall + mov eax,DWORD [esi] + mov ebx,DWORD [4+esi] + mov ecx,DWORD [8+esi] + mov edi,DWORD [12+esi] + mov DWORD [4+esp],ebx + xor ebx,ecx + mov DWORD [8+esp],ecx + mov DWORD [12+esp],edi + mov edx,DWORD [16+esi] + mov edi,DWORD [20+esi] + mov ecx,DWORD [24+esi] + mov esi,DWORD [28+esi] + mov DWORD [20+esp],edi + mov edi,DWORD [100+esp] + mov DWORD [24+esp],ecx + mov DWORD [28+esp],esi + vmovdqa xmm7,[256+ebp] + jmp NEAR L$012grand_avx +align 32 +L$012grand_avx: + vmovdqu xmm0,[edi] + vmovdqu xmm1,[16+edi] + vmovdqu xmm2,[32+edi] + vmovdqu xmm3,[48+edi] + add edi,64 + vpshufb xmm0,xmm0,xmm7 + mov DWORD [100+esp],edi + vpshufb xmm1,xmm1,xmm7 + vpshufb xmm2,xmm2,xmm7 + vpaddd xmm4,xmm0,[ebp] + vpshufb xmm3,xmm3,xmm7 + vpaddd xmm5,xmm1,[16+ebp] + vpaddd xmm6,xmm2,[32+ebp] + vpaddd xmm7,xmm3,[48+ebp] + vmovdqa [32+esp],xmm4 + vmovdqa [48+esp],xmm5 + vmovdqa [64+esp],xmm6 + vmovdqa [80+esp],xmm7 + jmp NEAR L$013avx_00_47 +align 16 +L$013avx_00_47: + add ebp,64 + vpalignr xmm4,xmm1,xmm0,4 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [20+esp] + vpalignr xmm7,xmm3,xmm2,4 + xor edx,ecx + mov edi,DWORD [24+esp] + xor esi,edi + vpsrld xmm6,xmm4,7 + shrd edx,edx,5 + and esi,ecx + mov DWORD [16+esp],ecx + vpaddd xmm0,xmm0,xmm7 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrld xmm7,xmm4,3 + mov ecx,eax + add edx,edi + mov edi,DWORD [4+esp] + vpslld xmm5,xmm4,14 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [esp],eax + vpxor xmm4,xmm7,xmm6 + xor ecx,eax + xor eax,edi + add edx,DWORD [28+esp] + vpshufd xmm7,xmm3,250 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpsrld xmm6,xmm6,11 + add edx,DWORD [32+esp] + xor ebx,edi + shrd ecx,ecx,2 + vpxor xmm4,xmm4,xmm5 + add ebx,edx + add edx,DWORD [12+esp] + add ebx,ecx + vpslld xmm5,xmm5,11 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [16+esp] + vpxor xmm4,xmm4,xmm6 + xor edx,ecx + mov edi,DWORD [20+esp] + xor esi,edi + vpsrld xmm6,xmm7,10 + shrd edx,edx,5 + and esi,ecx + mov DWORD [12+esp],ecx + vpxor xmm4,xmm4,xmm5 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,ebx + add edx,edi + mov edi,DWORD [esp] + vpaddd xmm0,xmm0,xmm4 + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [28+esp],ebx + vpxor xmm6,xmm6,xmm5 + xor ecx,ebx + xor ebx,edi + add edx,DWORD [24+esp] + vpsrlq xmm7,xmm7,19 + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + add edx,DWORD [36+esp] + xor eax,edi + shrd ecx,ecx,2 + vpshufd xmm7,xmm6,132 + add eax,edx + add edx,DWORD [8+esp] + add eax,ecx + vpsrldq xmm7,xmm7,8 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [12+esp] + vpaddd xmm0,xmm0,xmm7 + xor edx,ecx + mov edi,DWORD [16+esp] + xor esi,edi + vpshufd xmm7,xmm0,80 + shrd edx,edx,5 + and esi,ecx + mov DWORD [8+esp],ecx + vpsrld xmm6,xmm7,10 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,eax + add edx,edi + mov edi,DWORD [28+esp] + vpxor xmm6,xmm6,xmm5 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [24+esp],eax + vpsrlq xmm7,xmm7,19 + xor ecx,eax + xor eax,edi + add edx,DWORD [20+esp] + vpxor xmm6,xmm6,xmm7 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpshufd xmm7,xmm6,232 + add edx,DWORD [40+esp] + xor ebx,edi + shrd ecx,ecx,2 + vpslldq xmm7,xmm7,8 + add ebx,edx + add edx,DWORD [4+esp] + add ebx,ecx + vpaddd xmm0,xmm0,xmm7 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [8+esp] + vpaddd xmm6,xmm0,[ebp] + xor edx,ecx + mov edi,DWORD [12+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [4+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [24+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [20+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [16+esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [44+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [esp] + add eax,ecx + vmovdqa [32+esp],xmm6 + vpalignr xmm4,xmm2,xmm1,4 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [4+esp] + vpalignr xmm7,xmm0,xmm3,4 + xor edx,ecx + mov edi,DWORD [8+esp] + xor esi,edi + vpsrld xmm6,xmm4,7 + shrd edx,edx,5 + and esi,ecx + mov DWORD [esp],ecx + vpaddd xmm1,xmm1,xmm7 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrld xmm7,xmm4,3 + mov ecx,eax + add edx,edi + mov edi,DWORD [20+esp] + vpslld xmm5,xmm4,14 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [16+esp],eax + vpxor xmm4,xmm7,xmm6 + xor ecx,eax + xor eax,edi + add edx,DWORD [12+esp] + vpshufd xmm7,xmm0,250 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpsrld xmm6,xmm6,11 + add edx,DWORD [48+esp] + xor ebx,edi + shrd ecx,ecx,2 + vpxor xmm4,xmm4,xmm5 + add ebx,edx + add edx,DWORD [28+esp] + add ebx,ecx + vpslld xmm5,xmm5,11 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [esp] + vpxor xmm4,xmm4,xmm6 + xor edx,ecx + mov edi,DWORD [4+esp] + xor esi,edi + vpsrld xmm6,xmm7,10 + shrd edx,edx,5 + and esi,ecx + mov DWORD [28+esp],ecx + vpxor xmm4,xmm4,xmm5 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,ebx + add edx,edi + mov edi,DWORD [16+esp] + vpaddd xmm1,xmm1,xmm4 + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [12+esp],ebx + vpxor xmm6,xmm6,xmm5 + xor ecx,ebx + xor ebx,edi + add edx,DWORD [8+esp] + vpsrlq xmm7,xmm7,19 + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + add edx,DWORD [52+esp] + xor eax,edi + shrd ecx,ecx,2 + vpshufd xmm7,xmm6,132 + add eax,edx + add edx,DWORD [24+esp] + add eax,ecx + vpsrldq xmm7,xmm7,8 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [28+esp] + vpaddd xmm1,xmm1,xmm7 + xor edx,ecx + mov edi,DWORD [esp] + xor esi,edi + vpshufd xmm7,xmm1,80 + shrd edx,edx,5 + and esi,ecx + mov DWORD [24+esp],ecx + vpsrld xmm6,xmm7,10 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,eax + add edx,edi + mov edi,DWORD [12+esp] + vpxor xmm6,xmm6,xmm5 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [8+esp],eax + vpsrlq xmm7,xmm7,19 + xor ecx,eax + xor eax,edi + add edx,DWORD [4+esp] + vpxor xmm6,xmm6,xmm7 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpshufd xmm7,xmm6,232 + add edx,DWORD [56+esp] + xor ebx,edi + shrd ecx,ecx,2 + vpslldq xmm7,xmm7,8 + add ebx,edx + add edx,DWORD [20+esp] + add ebx,ecx + vpaddd xmm1,xmm1,xmm7 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [24+esp] + vpaddd xmm6,xmm1,[16+ebp] + xor edx,ecx + mov edi,DWORD [28+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [20+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [8+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [4+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [60+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [16+esp] + add eax,ecx + vmovdqa [48+esp],xmm6 + vpalignr xmm4,xmm3,xmm2,4 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [20+esp] + vpalignr xmm7,xmm1,xmm0,4 + xor edx,ecx + mov edi,DWORD [24+esp] + xor esi,edi + vpsrld xmm6,xmm4,7 + shrd edx,edx,5 + and esi,ecx + mov DWORD [16+esp],ecx + vpaddd xmm2,xmm2,xmm7 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrld xmm7,xmm4,3 + mov ecx,eax + add edx,edi + mov edi,DWORD [4+esp] + vpslld xmm5,xmm4,14 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [esp],eax + vpxor xmm4,xmm7,xmm6 + xor ecx,eax + xor eax,edi + add edx,DWORD [28+esp] + vpshufd xmm7,xmm1,250 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpsrld xmm6,xmm6,11 + add edx,DWORD [64+esp] + xor ebx,edi + shrd ecx,ecx,2 + vpxor xmm4,xmm4,xmm5 + add ebx,edx + add edx,DWORD [12+esp] + add ebx,ecx + vpslld xmm5,xmm5,11 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [16+esp] + vpxor xmm4,xmm4,xmm6 + xor edx,ecx + mov edi,DWORD [20+esp] + xor esi,edi + vpsrld xmm6,xmm7,10 + shrd edx,edx,5 + and esi,ecx + mov DWORD [12+esp],ecx + vpxor xmm4,xmm4,xmm5 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,ebx + add edx,edi + mov edi,DWORD [esp] + vpaddd xmm2,xmm2,xmm4 + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [28+esp],ebx + vpxor xmm6,xmm6,xmm5 + xor ecx,ebx + xor ebx,edi + add edx,DWORD [24+esp] + vpsrlq xmm7,xmm7,19 + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + add edx,DWORD [68+esp] + xor eax,edi + shrd ecx,ecx,2 + vpshufd xmm7,xmm6,132 + add eax,edx + add edx,DWORD [8+esp] + add eax,ecx + vpsrldq xmm7,xmm7,8 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [12+esp] + vpaddd xmm2,xmm2,xmm7 + xor edx,ecx + mov edi,DWORD [16+esp] + xor esi,edi + vpshufd xmm7,xmm2,80 + shrd edx,edx,5 + and esi,ecx + mov DWORD [8+esp],ecx + vpsrld xmm6,xmm7,10 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,eax + add edx,edi + mov edi,DWORD [28+esp] + vpxor xmm6,xmm6,xmm5 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [24+esp],eax + vpsrlq xmm7,xmm7,19 + xor ecx,eax + xor eax,edi + add edx,DWORD [20+esp] + vpxor xmm6,xmm6,xmm7 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpshufd xmm7,xmm6,232 + add edx,DWORD [72+esp] + xor ebx,edi + shrd ecx,ecx,2 + vpslldq xmm7,xmm7,8 + add ebx,edx + add edx,DWORD [4+esp] + add ebx,ecx + vpaddd xmm2,xmm2,xmm7 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [8+esp] + vpaddd xmm6,xmm2,[32+ebp] + xor edx,ecx + mov edi,DWORD [12+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [4+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [24+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [20+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [16+esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [76+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [esp] + add eax,ecx + vmovdqa [64+esp],xmm6 + vpalignr xmm4,xmm0,xmm3,4 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [4+esp] + vpalignr xmm7,xmm2,xmm1,4 + xor edx,ecx + mov edi,DWORD [8+esp] + xor esi,edi + vpsrld xmm6,xmm4,7 + shrd edx,edx,5 + and esi,ecx + mov DWORD [esp],ecx + vpaddd xmm3,xmm3,xmm7 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrld xmm7,xmm4,3 + mov ecx,eax + add edx,edi + mov edi,DWORD [20+esp] + vpslld xmm5,xmm4,14 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [16+esp],eax + vpxor xmm4,xmm7,xmm6 + xor ecx,eax + xor eax,edi + add edx,DWORD [12+esp] + vpshufd xmm7,xmm2,250 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpsrld xmm6,xmm6,11 + add edx,DWORD [80+esp] + xor ebx,edi + shrd ecx,ecx,2 + vpxor xmm4,xmm4,xmm5 + add ebx,edx + add edx,DWORD [28+esp] + add ebx,ecx + vpslld xmm5,xmm5,11 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [esp] + vpxor xmm4,xmm4,xmm6 + xor edx,ecx + mov edi,DWORD [4+esp] + xor esi,edi + vpsrld xmm6,xmm7,10 + shrd edx,edx,5 + and esi,ecx + mov DWORD [28+esp],ecx + vpxor xmm4,xmm4,xmm5 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,ebx + add edx,edi + mov edi,DWORD [16+esp] + vpaddd xmm3,xmm3,xmm4 + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [12+esp],ebx + vpxor xmm6,xmm6,xmm5 + xor ecx,ebx + xor ebx,edi + add edx,DWORD [8+esp] + vpsrlq xmm7,xmm7,19 + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + add edx,DWORD [84+esp] + xor eax,edi + shrd ecx,ecx,2 + vpshufd xmm7,xmm6,132 + add eax,edx + add edx,DWORD [24+esp] + add eax,ecx + vpsrldq xmm7,xmm7,8 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [28+esp] + vpaddd xmm3,xmm3,xmm7 + xor edx,ecx + mov edi,DWORD [esp] + xor esi,edi + vpshufd xmm7,xmm3,80 + shrd edx,edx,5 + and esi,ecx + mov DWORD [24+esp],ecx + vpsrld xmm6,xmm7,10 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,eax + add edx,edi + mov edi,DWORD [12+esp] + vpxor xmm6,xmm6,xmm5 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [8+esp],eax + vpsrlq xmm7,xmm7,19 + xor ecx,eax + xor eax,edi + add edx,DWORD [4+esp] + vpxor xmm6,xmm6,xmm7 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpshufd xmm7,xmm6,232 + add edx,DWORD [88+esp] + xor ebx,edi + shrd ecx,ecx,2 + vpslldq xmm7,xmm7,8 + add ebx,edx + add edx,DWORD [20+esp] + add ebx,ecx + vpaddd xmm3,xmm3,xmm7 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [24+esp] + vpaddd xmm6,xmm3,[48+ebp] + xor edx,ecx + mov edi,DWORD [28+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [20+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [8+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [4+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [92+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [16+esp] + add eax,ecx + vmovdqa [80+esp],xmm6 + cmp DWORD [64+ebp],66051 + jne NEAR L$013avx_00_47 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [20+esp] + xor edx,ecx + mov edi,DWORD [24+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [16+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD [4+esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD [28+esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD [32+esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD [12+esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [16+esp] + xor edx,ecx + mov edi,DWORD [20+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [12+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [28+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [24+esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [36+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [8+esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [12+esp] + xor edx,ecx + mov edi,DWORD [16+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [8+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD [28+esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [24+esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD [20+esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD [40+esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD [4+esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [8+esp] + xor edx,ecx + mov edi,DWORD [12+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [4+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [24+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [20+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [16+esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [44+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [4+esp] + xor edx,ecx + mov edi,DWORD [8+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD [20+esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [16+esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD [12+esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD [48+esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD [28+esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [esp] + xor edx,ecx + mov edi,DWORD [4+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [28+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [16+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [12+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [8+esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [52+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [24+esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [28+esp] + xor edx,ecx + mov edi,DWORD [esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [24+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD [12+esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [8+esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD [4+esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD [56+esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD [20+esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [24+esp] + xor edx,ecx + mov edi,DWORD [28+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [20+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [8+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [4+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [60+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [16+esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [20+esp] + xor edx,ecx + mov edi,DWORD [24+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [16+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD [4+esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD [28+esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD [64+esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD [12+esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [16+esp] + xor edx,ecx + mov edi,DWORD [20+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [12+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [28+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [24+esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [68+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [8+esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [12+esp] + xor edx,ecx + mov edi,DWORD [16+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [8+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD [28+esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [24+esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD [20+esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD [72+esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD [4+esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [8+esp] + xor edx,ecx + mov edi,DWORD [12+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [4+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [24+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [20+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [16+esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [76+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [4+esp] + xor edx,ecx + mov edi,DWORD [8+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD [20+esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [16+esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD [12+esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD [80+esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD [28+esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [esp] + xor edx,ecx + mov edi,DWORD [4+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [28+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [16+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [12+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [8+esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [84+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [24+esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [28+esp] + xor edx,ecx + mov edi,DWORD [esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [24+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD [12+esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD [8+esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD [4+esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD [88+esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD [20+esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD [24+esp] + xor edx,ecx + mov edi,DWORD [28+esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD [20+esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD [8+esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD [4+esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD [esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD [92+esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD [16+esp] + add eax,ecx + mov esi,DWORD [96+esp] + xor ebx,edi + mov ecx,DWORD [12+esp] + add eax,DWORD [esi] + add ebx,DWORD [4+esi] + add edi,DWORD [8+esi] + add ecx,DWORD [12+esi] + mov DWORD [esi],eax + mov DWORD [4+esi],ebx + mov DWORD [8+esi],edi + mov DWORD [12+esi],ecx + mov DWORD [4+esp],ebx + xor ebx,edi + mov DWORD [8+esp],edi + mov DWORD [12+esp],ecx + mov edi,DWORD [20+esp] + mov ecx,DWORD [24+esp] + add edx,DWORD [16+esi] + add edi,DWORD [20+esi] + add ecx,DWORD [24+esi] + mov DWORD [16+esi],edx + mov DWORD [20+esi],edi + mov DWORD [20+esp],edi + mov edi,DWORD [28+esp] + mov DWORD [24+esi],ecx + add edi,DWORD [28+esi] + mov DWORD [24+esp],ecx + mov DWORD [28+esi],edi + mov DWORD [28+esp],edi + mov edi,DWORD [100+esp] + vmovdqa xmm7,[64+ebp] + sub ebp,192 + cmp edi,DWORD [104+esp] + jb NEAR L$012grand_avx + mov esp,DWORD [108+esp] + vzeroall + pop edi + pop esi + pop ebx + pop ebp + ret segment .bss common _OPENSSL_ia32cap_P 16
diff --git a/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm index 0f5361a..168f78d 100644 --- a/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm +++ b/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm
@@ -24,6 +24,11 @@ mov r10d,DWORD[((OPENSSL_ia32cap_P+8))] test r8d,512 jz NEAR $L$ialu + and r8d,268435456 + and r9d,1073741824 + or r8d,r9d + cmp r8d,1342177280 + je NEAR _avx_shortcut jmp NEAR _ssse3_shortcut ALIGN 16 @@ -2445,6 +2450,1146 @@ mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret $L$SEH_end_sha1_block_data_order_ssse3: + +ALIGN 16 +sha1_block_data_order_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_block_data_order_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +_avx_shortcut: + mov rax,rsp + push rbx + push rbp + push r12 + push r13 + push r14 + lea rsp,[((-160))+rsp] + vzeroupper + vmovaps XMMWORD[(-40-96)+rax],xmm6 + vmovaps XMMWORD[(-40-80)+rax],xmm7 + vmovaps XMMWORD[(-40-64)+rax],xmm8 + vmovaps XMMWORD[(-40-48)+rax],xmm9 + vmovaps XMMWORD[(-40-32)+rax],xmm10 + vmovaps XMMWORD[(-40-16)+rax],xmm11 +$L$prologue_avx: + mov r14,rax + and rsp,-64 + mov r8,rdi + mov r9,rsi + mov r10,rdx + + shl r10,6 + add r10,r9 + lea r11,[((K_XX_XX+64))] + + mov eax,DWORD[r8] + mov ebx,DWORD[4+r8] + mov ecx,DWORD[8+r8] + mov edx,DWORD[12+r8] + mov esi,ebx + mov ebp,DWORD[16+r8] + mov edi,ecx + xor edi,edx + and esi,edi + + vmovdqa xmm6,XMMWORD[64+r11] + vmovdqa xmm11,XMMWORD[((-64))+r11] + vmovdqu xmm0,XMMWORD[r9] + vmovdqu xmm1,XMMWORD[16+r9] + vmovdqu xmm2,XMMWORD[32+r9] + vmovdqu xmm3,XMMWORD[48+r9] + vpshufb xmm0,xmm0,xmm6 + add r9,64 + vpshufb xmm1,xmm1,xmm6 + vpshufb xmm2,xmm2,xmm6 + vpshufb xmm3,xmm3,xmm6 + vpaddd xmm4,xmm0,xmm11 + vpaddd xmm5,xmm1,xmm11 + vpaddd xmm6,xmm2,xmm11 + vmovdqa XMMWORD[rsp],xmm4 + vmovdqa XMMWORD[16+rsp],xmm5 + vmovdqa XMMWORD[32+rsp],xmm6 + jmp NEAR $L$oop_avx +ALIGN 16 +$L$oop_avx: + shrd ebx,ebx,2 + xor esi,edx + vpalignr xmm4,xmm1,xmm0,8 + mov edi,eax + add ebp,DWORD[rsp] + vpaddd xmm9,xmm11,xmm3 + xor ebx,ecx + shld eax,eax,5 + vpsrldq xmm8,xmm3,4 + add ebp,esi + and edi,ebx + vpxor xmm4,xmm4,xmm0 + xor ebx,ecx + add ebp,eax + vpxor xmm8,xmm8,xmm2 + shrd eax,eax,7 + xor edi,ecx + mov esi,ebp + add edx,DWORD[4+rsp] + vpxor xmm4,xmm4,xmm8 + xor eax,ebx + shld ebp,ebp,5 + vmovdqa XMMWORD[48+rsp],xmm9 + add edx,edi + and esi,eax + vpsrld xmm8,xmm4,31 + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor esi,ebx + vpslldq xmm10,xmm4,12 + vpaddd xmm4,xmm4,xmm4 + mov edi,edx + add ecx,DWORD[8+rsp] + xor ebp,eax + shld edx,edx,5 + vpsrld xmm9,xmm10,30 + vpor xmm4,xmm4,xmm8 + add ecx,esi + and edi,ebp + xor ebp,eax + add ecx,edx + vpslld xmm10,xmm10,2 + vpxor xmm4,xmm4,xmm9 + shrd edx,edx,7 + xor edi,eax + mov esi,ecx + add ebx,DWORD[12+rsp] + vpxor xmm4,xmm4,xmm10 + xor edx,ebp + shld ecx,ecx,5 + add ebx,edi + and esi,edx + xor edx,ebp + add ebx,ecx + shrd ecx,ecx,7 + xor esi,ebp + vpalignr xmm5,xmm2,xmm1,8 + mov edi,ebx + add eax,DWORD[16+rsp] + vpaddd xmm9,xmm11,xmm4 + xor ecx,edx + shld ebx,ebx,5 + vpsrldq xmm8,xmm4,4 + add eax,esi + and edi,ecx + vpxor xmm5,xmm5,xmm1 + xor ecx,edx + add eax,ebx + vpxor xmm8,xmm8,xmm3 + shrd ebx,ebx,7 + xor edi,edx + mov esi,eax + add ebp,DWORD[20+rsp] + vpxor xmm5,xmm5,xmm8 + xor ebx,ecx + shld eax,eax,5 + vmovdqa XMMWORD[rsp],xmm9 + add ebp,edi + and esi,ebx + vpsrld xmm8,xmm5,31 + xor ebx,ecx + add ebp,eax + shrd eax,eax,7 + xor esi,ecx + vpslldq xmm10,xmm5,12 + vpaddd xmm5,xmm5,xmm5 + mov edi,ebp + add edx,DWORD[24+rsp] + xor eax,ebx + shld ebp,ebp,5 + vpsrld xmm9,xmm10,30 + vpor xmm5,xmm5,xmm8 + add edx,esi + and edi,eax + xor eax,ebx + add edx,ebp + vpslld xmm10,xmm10,2 + vpxor xmm5,xmm5,xmm9 + shrd ebp,ebp,7 + xor edi,ebx + mov esi,edx + add ecx,DWORD[28+rsp] + vpxor xmm5,xmm5,xmm10 + xor ebp,eax + shld edx,edx,5 + vmovdqa xmm11,XMMWORD[((-32))+r11] + add ecx,edi + and esi,ebp + xor ebp,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + vpalignr xmm6,xmm3,xmm2,8 + mov edi,ecx + add ebx,DWORD[32+rsp] + vpaddd xmm9,xmm11,xmm5 + xor edx,ebp + shld ecx,ecx,5 + vpsrldq xmm8,xmm5,4 + add ebx,esi + and edi,edx + vpxor xmm6,xmm6,xmm2 + xor edx,ebp + add ebx,ecx + vpxor xmm8,xmm8,xmm4 + shrd ecx,ecx,7 + xor edi,ebp + mov esi,ebx + add eax,DWORD[36+rsp] + vpxor xmm6,xmm6,xmm8 + xor ecx,edx + shld ebx,ebx,5 + vmovdqa XMMWORD[16+rsp],xmm9 + add eax,edi + and esi,ecx + vpsrld xmm8,xmm6,31 + xor ecx,edx + add eax,ebx + shrd ebx,ebx,7 + xor esi,edx + vpslldq xmm10,xmm6,12 + vpaddd xmm6,xmm6,xmm6 + mov edi,eax + add ebp,DWORD[40+rsp] + xor ebx,ecx + shld eax,eax,5 + vpsrld xmm9,xmm10,30 + vpor xmm6,xmm6,xmm8 + add ebp,esi + and edi,ebx + xor ebx,ecx + add ebp,eax + vpslld xmm10,xmm10,2 + vpxor xmm6,xmm6,xmm9 + shrd eax,eax,7 + xor edi,ecx + mov esi,ebp + add edx,DWORD[44+rsp] + vpxor xmm6,xmm6,xmm10 + xor eax,ebx + shld ebp,ebp,5 + add edx,edi + and esi,eax + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor esi,ebx + vpalignr xmm7,xmm4,xmm3,8 + mov edi,edx + add ecx,DWORD[48+rsp] + vpaddd xmm9,xmm11,xmm6 + xor ebp,eax + shld edx,edx,5 + vpsrldq xmm8,xmm6,4 + add ecx,esi + and edi,ebp + vpxor xmm7,xmm7,xmm3 + xor ebp,eax + add ecx,edx + vpxor xmm8,xmm8,xmm5 + shrd edx,edx,7 + xor edi,eax + mov esi,ecx + add ebx,DWORD[52+rsp] + vpxor xmm7,xmm7,xmm8 + xor edx,ebp + shld ecx,ecx,5 + vmovdqa XMMWORD[32+rsp],xmm9 + add ebx,edi + and esi,edx + vpsrld xmm8,xmm7,31 + xor edx,ebp + add ebx,ecx + shrd ecx,ecx,7 + xor esi,ebp + vpslldq xmm10,xmm7,12 + vpaddd xmm7,xmm7,xmm7 + mov edi,ebx + add eax,DWORD[56+rsp] + xor ecx,edx + shld ebx,ebx,5 + vpsrld xmm9,xmm10,30 + vpor xmm7,xmm7,xmm8 + add eax,esi + and edi,ecx + xor ecx,edx + add eax,ebx + vpslld xmm10,xmm10,2 + vpxor xmm7,xmm7,xmm9 + shrd ebx,ebx,7 + xor edi,edx + mov esi,eax + add ebp,DWORD[60+rsp] + vpxor xmm7,xmm7,xmm10 + xor ebx,ecx + shld eax,eax,5 + add ebp,edi + and esi,ebx + xor ebx,ecx + add ebp,eax + vpalignr xmm8,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + shrd eax,eax,7 + xor esi,ecx + mov edi,ebp + add edx,DWORD[rsp] + vpxor xmm0,xmm0,xmm1 + xor eax,ebx + shld ebp,ebp,5 + vpaddd xmm9,xmm11,xmm7 + add edx,esi + and edi,eax + vpxor xmm0,xmm0,xmm8 + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor edi,ebx + vpsrld xmm8,xmm0,30 + vmovdqa XMMWORD[48+rsp],xmm9 + mov esi,edx + add ecx,DWORD[4+rsp] + xor ebp,eax + shld edx,edx,5 + vpslld xmm0,xmm0,2 + add ecx,edi + and esi,ebp + xor ebp,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + mov edi,ecx + add ebx,DWORD[8+rsp] + vpor xmm0,xmm0,xmm8 + xor edx,ebp + shld ecx,ecx,5 + add ebx,esi + and edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[12+rsp] + xor edi,ebp + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpalignr xmm8,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add ebp,DWORD[16+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + vpxor xmm1,xmm1,xmm2 + add ebp,esi + xor edi,ecx + vpaddd xmm9,xmm11,xmm0 + shrd ebx,ebx,7 + add ebp,eax + vpxor xmm1,xmm1,xmm8 + add edx,DWORD[20+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + vpsrld xmm8,xmm1,30 + vmovdqa XMMWORD[rsp],xmm9 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpslld xmm1,xmm1,2 + add ecx,DWORD[24+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vpor xmm1,xmm1,xmm8 + add ebx,DWORD[28+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + vpalignr xmm8,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add eax,DWORD[32+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + vpxor xmm2,xmm2,xmm3 + add eax,esi + xor edi,edx + vpaddd xmm9,xmm11,xmm1 + vmovdqa xmm11,XMMWORD[r11] + shrd ecx,ecx,7 + add eax,ebx + vpxor xmm2,xmm2,xmm8 + add ebp,DWORD[36+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + vpsrld xmm8,xmm2,30 + vmovdqa XMMWORD[16+rsp],xmm9 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpslld xmm2,xmm2,2 + add edx,DWORD[40+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + vpor xmm2,xmm2,xmm8 + add ecx,DWORD[44+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + vpalignr xmm8,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add ebx,DWORD[48+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + vpxor xmm3,xmm3,xmm4 + add ebx,esi + xor edi,ebp + vpaddd xmm9,xmm11,xmm2 + shrd edx,edx,7 + add ebx,ecx + vpxor xmm3,xmm3,xmm8 + add eax,DWORD[52+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + vpsrld xmm8,xmm3,30 + vmovdqa XMMWORD[32+rsp],xmm9 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpslld xmm3,xmm3,2 + add ebp,DWORD[56+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpor xmm3,xmm3,xmm8 + add edx,DWORD[60+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpalignr xmm8,xmm3,xmm2,8 + vpxor xmm4,xmm4,xmm0 + add ecx,DWORD[rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + vpxor xmm4,xmm4,xmm5 + add ecx,esi + xor edi,eax + vpaddd xmm9,xmm11,xmm3 + shrd ebp,ebp,7 + add ecx,edx + vpxor xmm4,xmm4,xmm8 + add ebx,DWORD[4+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + vpsrld xmm8,xmm4,30 + vmovdqa XMMWORD[48+rsp],xmm9 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + vpslld xmm4,xmm4,2 + add eax,DWORD[8+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + vpor xmm4,xmm4,xmm8 + add ebp,DWORD[12+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpalignr xmm8,xmm4,xmm3,8 + vpxor xmm5,xmm5,xmm1 + add edx,DWORD[16+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + vpxor xmm5,xmm5,xmm6 + add edx,esi + xor edi,ebx + vpaddd xmm9,xmm11,xmm4 + shrd eax,eax,7 + add edx,ebp + vpxor xmm5,xmm5,xmm8 + add ecx,DWORD[20+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + vpsrld xmm8,xmm5,30 + vmovdqa XMMWORD[rsp],xmm9 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + vpslld xmm5,xmm5,2 + add ebx,DWORD[24+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + vpor xmm5,xmm5,xmm8 + add eax,DWORD[28+rsp] + shrd ecx,ecx,7 + mov esi,ebx + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,ecx + xor ecx,edx + add eax,ebx + vpalignr xmm8,xmm5,xmm4,8 + vpxor xmm6,xmm6,xmm2 + add ebp,DWORD[32+rsp] + and esi,ecx + xor ecx,edx + shrd ebx,ebx,7 + vpxor xmm6,xmm6,xmm7 + mov edi,eax + xor esi,ecx + vpaddd xmm9,xmm11,xmm5 + shld eax,eax,5 + add ebp,esi + vpxor xmm6,xmm6,xmm8 + xor edi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[36+rsp] + vpsrld xmm8,xmm6,30 + vmovdqa XMMWORD[16+rsp],xmm9 + and edi,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,ebp + vpslld xmm6,xmm6,2 + xor edi,ebx + shld ebp,ebp,5 + add edx,edi + xor esi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[40+rsp] + and esi,eax + vpor xmm6,xmm6,xmm8 + xor eax,ebx + shrd ebp,ebp,7 + mov edi,edx + xor esi,eax + shld edx,edx,5 + add ecx,esi + xor edi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[44+rsp] + and edi,ebp + xor ebp,eax + shrd edx,edx,7 + mov esi,ecx + xor edi,ebp + shld ecx,ecx,5 + add ebx,edi + xor esi,edx + xor edx,ebp + add ebx,ecx + vpalignr xmm8,xmm6,xmm5,8 + vpxor xmm7,xmm7,xmm3 + add eax,DWORD[48+rsp] + and esi,edx + xor edx,ebp + shrd ecx,ecx,7 + vpxor xmm7,xmm7,xmm0 + mov edi,ebx + xor esi,edx + vpaddd xmm9,xmm11,xmm6 + vmovdqa xmm11,XMMWORD[32+r11] + shld ebx,ebx,5 + add eax,esi + vpxor xmm7,xmm7,xmm8 + xor edi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[52+rsp] + vpsrld xmm8,xmm7,30 + vmovdqa XMMWORD[32+rsp],xmm9 + and edi,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + vpslld xmm7,xmm7,2 + xor edi,ecx + shld eax,eax,5 + add ebp,edi + xor esi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[56+rsp] + and esi,ebx + vpor xmm7,xmm7,xmm8 + xor ebx,ecx + shrd eax,eax,7 + mov edi,ebp + xor esi,ebx + shld ebp,ebp,5 + add edx,esi + xor edi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[60+rsp] + and edi,eax + xor eax,ebx + shrd ebp,ebp,7 + mov esi,edx + xor edi,eax + shld edx,edx,5 + add ecx,edi + xor esi,ebp + xor ebp,eax + add ecx,edx + vpalignr xmm8,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + add ebx,DWORD[rsp] + and esi,ebp + xor ebp,eax + shrd edx,edx,7 + vpxor xmm0,xmm0,xmm1 + mov edi,ecx + xor esi,ebp + vpaddd xmm9,xmm11,xmm7 + shld ecx,ecx,5 + add ebx,esi + vpxor xmm0,xmm0,xmm8 + xor edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[4+rsp] + vpsrld xmm8,xmm0,30 + vmovdqa XMMWORD[48+rsp],xmm9 + and edi,edx + xor edx,ebp + shrd ecx,ecx,7 + mov esi,ebx + vpslld xmm0,xmm0,2 + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[8+rsp] + and esi,ecx + vpor xmm0,xmm0,xmm8 + xor ecx,edx + shrd ebx,ebx,7 + mov edi,eax + xor esi,ecx + shld eax,eax,5 + add ebp,esi + xor edi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[12+rsp] + and edi,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,ebp + xor edi,ebx + shld ebp,ebp,5 + add edx,edi + xor esi,eax + xor eax,ebx + add edx,ebp + vpalignr xmm8,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add ecx,DWORD[16+rsp] + and esi,eax + xor eax,ebx + shrd ebp,ebp,7 + vpxor xmm1,xmm1,xmm2 + mov edi,edx + xor esi,eax + vpaddd xmm9,xmm11,xmm0 + shld edx,edx,5 + add ecx,esi + vpxor xmm1,xmm1,xmm8 + xor edi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[20+rsp] + vpsrld xmm8,xmm1,30 + vmovdqa XMMWORD[rsp],xmm9 + and edi,ebp + xor ebp,eax + shrd edx,edx,7 + mov esi,ecx + vpslld xmm1,xmm1,2 + xor edi,ebp + shld ecx,ecx,5 + add ebx,edi + xor esi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[24+rsp] + and esi,edx + vpor xmm1,xmm1,xmm8 + xor edx,ebp + shrd ecx,ecx,7 + mov edi,ebx + xor esi,edx + shld ebx,ebx,5 + add eax,esi + xor edi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[28+rsp] + and edi,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + xor edi,ecx + shld eax,eax,5 + add ebp,edi + xor esi,ebx + xor ebx,ecx + add ebp,eax + vpalignr xmm8,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add edx,DWORD[32+rsp] + and esi,ebx + xor ebx,ecx + shrd eax,eax,7 + vpxor xmm2,xmm2,xmm3 + mov edi,ebp + xor esi,ebx + vpaddd xmm9,xmm11,xmm1 + shld ebp,ebp,5 + add edx,esi + vpxor xmm2,xmm2,xmm8 + xor edi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[36+rsp] + vpsrld xmm8,xmm2,30 + vmovdqa XMMWORD[16+rsp],xmm9 + and edi,eax + xor eax,ebx + shrd ebp,ebp,7 + mov esi,edx + vpslld xmm2,xmm2,2 + xor edi,eax + shld edx,edx,5 + add ecx,edi + xor esi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[40+rsp] + and esi,ebp + vpor xmm2,xmm2,xmm8 + xor ebp,eax + shrd edx,edx,7 + mov edi,ecx + xor esi,ebp + shld ecx,ecx,5 + add ebx,esi + xor edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[44+rsp] + and edi,edx + xor edx,ebp + shrd ecx,ecx,7 + mov esi,ebx + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + add eax,ebx + vpalignr xmm8,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add ebp,DWORD[48+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + vpxor xmm3,xmm3,xmm4 + add ebp,esi + xor edi,ecx + vpaddd xmm9,xmm11,xmm2 + shrd ebx,ebx,7 + add ebp,eax + vpxor xmm3,xmm3,xmm8 + add edx,DWORD[52+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + vpsrld xmm8,xmm3,30 + vmovdqa XMMWORD[32+rsp],xmm9 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpslld xmm3,xmm3,2 + add ecx,DWORD[56+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vpor xmm3,xmm3,xmm8 + add ebx,DWORD[60+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[rsp] + vpaddd xmm9,xmm11,xmm3 + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + vmovdqa XMMWORD[48+rsp],xmm9 + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[4+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[8+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[12+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + cmp r9,r10 + je NEAR $L$done_avx + vmovdqa xmm6,XMMWORD[64+r11] + vmovdqa xmm11,XMMWORD[((-64))+r11] + vmovdqu xmm0,XMMWORD[r9] + vmovdqu xmm1,XMMWORD[16+r9] + vmovdqu xmm2,XMMWORD[32+r9] + vmovdqu xmm3,XMMWORD[48+r9] + vpshufb xmm0,xmm0,xmm6 + add r9,64 + add ebx,DWORD[16+rsp] + xor esi,ebp + vpshufb xmm1,xmm1,xmm6 + mov edi,ecx + shld ecx,ecx,5 + vpaddd xmm4,xmm0,xmm11 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + vmovdqa XMMWORD[rsp],xmm4 + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[24+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + vpshufb xmm2,xmm2,xmm6 + mov edi,edx + shld edx,edx,5 + vpaddd xmm5,xmm1,xmm11 + add ecx,esi + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vmovdqa XMMWORD[16+rsp],xmm5 + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + vpshufb xmm3,xmm3,xmm6 + mov edi,ebp + shld ebp,ebp,5 + vpaddd xmm6,xmm2,xmm11 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + vmovdqa XMMWORD[32+rsp],xmm6 + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + shrd ecx,ecx,7 + add eax,ebx + add eax,DWORD[r8] + add esi,DWORD[4+r8] + add ecx,DWORD[8+r8] + add edx,DWORD[12+r8] + mov DWORD[r8],eax + add ebp,DWORD[16+r8] + mov DWORD[4+r8],esi + mov ebx,esi + mov DWORD[8+r8],ecx + mov edi,ecx + mov DWORD[12+r8],edx + xor edi,edx + mov DWORD[16+r8],ebp + and esi,edi + jmp NEAR $L$oop_avx + +ALIGN 16 +$L$done_avx: + add ebx,DWORD[16+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[24+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + shrd ecx,ecx,7 + add eax,ebx + vzeroupper + + add eax,DWORD[r8] + add esi,DWORD[4+r8] + add ecx,DWORD[8+r8] + mov DWORD[r8],eax + add edx,DWORD[12+r8] + mov DWORD[4+r8],esi + add ebp,DWORD[16+r8] + mov DWORD[8+r8],ecx + mov DWORD[12+r8],edx + mov DWORD[16+r8],ebp + movaps xmm6,XMMWORD[((-40-96))+r14] + movaps xmm7,XMMWORD[((-40-80))+r14] + movaps xmm8,XMMWORD[((-40-64))+r14] + movaps xmm9,XMMWORD[((-40-48))+r14] + movaps xmm10,XMMWORD[((-40-32))+r14] + movaps xmm11,XMMWORD[((-40-16))+r14] + lea rsi,[r14] + mov r14,QWORD[((-40))+rsi] + mov r13,QWORD[((-32))+rsi] + mov r12,QWORD[((-24))+rsi] + mov rbp,QWORD[((-16))+rsi] + mov rbx,QWORD[((-8))+rsi] + lea rsp,[rsi] +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_sha1_block_data_order_avx: ALIGN 64 K_XX_XX: DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 @@ -2605,6 +3750,9 @@ DD $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase DD $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase DD $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_begin_sha1_block_data_order_avx wrt ..imagebase + DD $L$SEH_end_sha1_block_data_order_avx wrt ..imagebase + DD $L$SEH_info_sha1_block_data_order_avx wrt ..imagebase section .xdata rdata align=8 ALIGN 8 $L$SEH_info_sha1_block_data_order: @@ -2614,3 +3762,7 @@ DB 9,0,0,0 DD ssse3_handler wrt ..imagebase DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase +$L$SEH_info_sha1_block_data_order_avx: +DB 9,0,0,0 + DD ssse3_handler wrt ..imagebase + DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm index e6193c5b..efaf9b5 100644 --- a/third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm +++ b/third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm
@@ -23,6 +23,11 @@ mov r9d,DWORD[r11] mov r10d,DWORD[4+r11] mov r11d,DWORD[8+r11] + and r9d,1073741824 + and r10d,268435968 + or r10d,r9d + cmp r10d,1342177792 + je NEAR $L$avx_shortcut test r10d,512 jnz NEAR $L$ssse3_shortcut push rbx @@ -2877,6 +2882,1082 @@ mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret $L$SEH_end_sha256_block_data_order_ssse3: + +ALIGN 64 +sha256_block_data_order_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_block_data_order_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +$L$avx_shortcut: + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + mov r11,rsp + shl rdx,4 + sub rsp,160 + lea rdx,[rdx*4+rsi] + and rsp,-64 + mov QWORD[((64+0))+rsp],rdi + mov QWORD[((64+8))+rsp],rsi + mov QWORD[((64+16))+rsp],rdx + mov QWORD[((64+24))+rsp],r11 + movaps XMMWORD[(64+32)+rsp],xmm6 + movaps XMMWORD[(64+48)+rsp],xmm7 + movaps XMMWORD[(64+64)+rsp],xmm8 + movaps XMMWORD[(64+80)+rsp],xmm9 +$L$prologue_avx: + + vzeroupper + mov eax,DWORD[rdi] + mov ebx,DWORD[4+rdi] + mov ecx,DWORD[8+rdi] + mov edx,DWORD[12+rdi] + mov r8d,DWORD[16+rdi] + mov r9d,DWORD[20+rdi] + mov r10d,DWORD[24+rdi] + mov r11d,DWORD[28+rdi] + vmovdqa xmm8,XMMWORD[((K256+512+32))] + vmovdqa xmm9,XMMWORD[((K256+512+64))] + jmp NEAR $L$loop_avx +ALIGN 16 +$L$loop_avx: + vmovdqa xmm7,XMMWORD[((K256+512))] + vmovdqu xmm0,XMMWORD[rsi] + vmovdqu xmm1,XMMWORD[16+rsi] + vmovdqu xmm2,XMMWORD[32+rsi] + vmovdqu xmm3,XMMWORD[48+rsi] + vpshufb xmm0,xmm0,xmm7 + lea rbp,[K256] + vpshufb xmm1,xmm1,xmm7 + vpshufb xmm2,xmm2,xmm7 + vpaddd xmm4,xmm0,XMMWORD[rbp] + vpshufb xmm3,xmm3,xmm7 + vpaddd xmm5,xmm1,XMMWORD[32+rbp] + vpaddd xmm6,xmm2,XMMWORD[64+rbp] + vpaddd xmm7,xmm3,XMMWORD[96+rbp] + vmovdqa XMMWORD[rsp],xmm4 + mov r14d,eax + vmovdqa XMMWORD[16+rsp],xmm5 + mov edi,ebx + vmovdqa XMMWORD[32+rsp],xmm6 + xor edi,ecx + vmovdqa XMMWORD[48+rsp],xmm7 + mov r13d,r8d + jmp NEAR $L$avx_00_47 + +ALIGN 16 +$L$avx_00_47: + sub rbp,-128 + vpalignr xmm4,xmm1,xmm0,4 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + vpalignr xmm7,xmm3,xmm2,4 + shrd r14d,r14d,9 + xor r13d,r8d + xor r12d,r10d + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + vpaddd xmm0,xmm0,xmm7 + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax + vpsrld xmm7,xmm4,3 + xor r12d,r10d + shrd r14d,r14d,11 + xor r15d,ebx + vpslld xmm5,xmm4,14 + add r11d,r12d + shrd r13d,r13d,6 + and edi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,eax + add r11d,r13d + xor edi,ebx + vpshufd xmm7,xmm3,250 + shrd r14d,r14d,2 + add edx,r11d + add r11d,edi + vpsrld xmm6,xmm6,11 + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov r11d,r14d + mov r12d,r8d + shrd r14d,r14d,9 + vpslld xmm5,xmm5,11 + xor r13d,edx + xor r12d,r9d + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,r11d + and r12d,edx + xor r13d,edx + vpsrld xmm6,xmm7,10 + add r10d,DWORD[4+rsp] + mov edi,r11d + xor r12d,r9d + vpxor xmm4,xmm4,xmm5 + shrd r14d,r14d,11 + xor edi,eax + add r10d,r12d + vpsrlq xmm7,xmm7,17 + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r11d + vpaddd xmm0,xmm0,xmm4 + add r10d,r13d + xor r15d,eax + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + vpsrlq xmm7,xmm7,2 + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,edx + shrd r14d,r14d,9 + xor r13d,ecx + vpshufb xmm6,xmm6,xmm8 + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + vpaddd xmm0,xmm0,xmm6 + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[8+rsp] + vpshufd xmm7,xmm0,80 + mov r15d,r10d + xor r12d,r8d + shrd r14d,r14d,11 + vpsrld xmm6,xmm7,10 + xor r15d,r11d + add r9d,r12d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + and edi,r15d + xor r14d,r10d + add r9d,r13d + vpxor xmm6,xmm6,xmm7 + xor edi,r11d + shrd r14d,r14d,2 + add ebx,r9d + vpsrlq xmm7,xmm7,2 + add r9d,edi + mov r13d,ebx + add r14d,r9d + vpxor xmm6,xmm6,xmm7 + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + vpshufb xmm6,xmm6,xmm9 + shrd r14d,r14d,9 + xor r13d,ebx + xor r12d,edx + vpaddd xmm0,xmm0,xmm6 + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + vpaddd xmm6,xmm0,XMMWORD[rbp] + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov edi,r9d + xor r12d,edx + shrd r14d,r14d,11 + xor edi,r10d + add r8d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + shrd r14d,r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + vmovdqa XMMWORD[rsp],xmm6 + vpalignr xmm4,xmm2,xmm1,4 + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + vpalignr xmm7,xmm0,xmm3,4 + shrd r14d,r14d,9 + xor r13d,eax + xor r12d,ecx + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + vpaddd xmm1,xmm1,xmm7 + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d + vpsrld xmm7,xmm4,3 + xor r12d,ecx + shrd r14d,r14d,11 + xor r15d,r9d + vpslld xmm5,xmm4,14 + add edx,r12d + shrd r13d,r13d,6 + and edi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,r8d + add edx,r13d + xor edi,r9d + vpshufd xmm7,xmm0,250 + shrd r14d,r14d,2 + add r11d,edx + add edx,edi + vpsrld xmm6,xmm6,11 + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov edx,r14d + mov r12d,eax + shrd r14d,r14d,9 + vpslld xmm5,xmm5,11 + xor r13d,r11d + xor r12d,ebx + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + vpsrld xmm6,xmm7,10 + add ecx,DWORD[20+rsp] + mov edi,edx + xor r12d,ebx + vpxor xmm4,xmm4,xmm5 + shrd r14d,r14d,11 + xor edi,r8d + add ecx,r12d + vpsrlq xmm7,xmm7,17 + shrd r13d,r13d,6 + and r15d,edi + xor r14d,edx + vpaddd xmm1,xmm1,xmm4 + add ecx,r13d + xor r15d,r8d + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + vpsrlq xmm7,xmm7,2 + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,r11d + shrd r14d,r14d,9 + xor r13d,r10d + vpshufb xmm6,xmm6,xmm8 + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + vpaddd xmm1,xmm1,xmm6 + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[24+rsp] + vpshufd xmm7,xmm1,80 + mov r15d,ecx + xor r12d,eax + shrd r14d,r14d,11 + vpsrld xmm6,xmm7,10 + xor r15d,edx + add ebx,r12d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + and edi,r15d + xor r14d,ecx + add ebx,r13d + vpxor xmm6,xmm6,xmm7 + xor edi,edx + shrd r14d,r14d,2 + add r9d,ebx + vpsrlq xmm7,xmm7,2 + add ebx,edi + mov r13d,r9d + add r14d,ebx + vpxor xmm6,xmm6,xmm7 + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + vpshufb xmm6,xmm6,xmm9 + shrd r14d,r14d,9 + xor r13d,r9d + xor r12d,r11d + vpaddd xmm1,xmm1,xmm6 + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + vpaddd xmm6,xmm1,XMMWORD[32+rbp] + xor r13d,r9d + add eax,DWORD[28+rsp] + mov edi,ebx + xor r12d,r11d + shrd r14d,r14d,11 + xor edi,ecx + add eax,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + shrd r14d,r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + vmovdqa XMMWORD[16+rsp],xmm6 + vpalignr xmm4,xmm3,xmm2,4 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + vpalignr xmm7,xmm1,xmm0,4 + shrd r14d,r14d,9 + xor r13d,r8d + xor r12d,r10d + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + vpaddd xmm2,xmm2,xmm7 + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax + vpsrld xmm7,xmm4,3 + xor r12d,r10d + shrd r14d,r14d,11 + xor r15d,ebx + vpslld xmm5,xmm4,14 + add r11d,r12d + shrd r13d,r13d,6 + and edi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,eax + add r11d,r13d + xor edi,ebx + vpshufd xmm7,xmm1,250 + shrd r14d,r14d,2 + add edx,r11d + add r11d,edi + vpsrld xmm6,xmm6,11 + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov r11d,r14d + mov r12d,r8d + shrd r14d,r14d,9 + vpslld xmm5,xmm5,11 + xor r13d,edx + xor r12d,r9d + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,r11d + and r12d,edx + xor r13d,edx + vpsrld xmm6,xmm7,10 + add r10d,DWORD[36+rsp] + mov edi,r11d + xor r12d,r9d + vpxor xmm4,xmm4,xmm5 + shrd r14d,r14d,11 + xor edi,eax + add r10d,r12d + vpsrlq xmm7,xmm7,17 + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r11d + vpaddd xmm2,xmm2,xmm4 + add r10d,r13d + xor r15d,eax + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + vpsrlq xmm7,xmm7,2 + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,edx + shrd r14d,r14d,9 + xor r13d,ecx + vpshufb xmm6,xmm6,xmm8 + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + vpaddd xmm2,xmm2,xmm6 + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[40+rsp] + vpshufd xmm7,xmm2,80 + mov r15d,r10d + xor r12d,r8d + shrd r14d,r14d,11 + vpsrld xmm6,xmm7,10 + xor r15d,r11d + add r9d,r12d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + and edi,r15d + xor r14d,r10d + add r9d,r13d + vpxor xmm6,xmm6,xmm7 + xor edi,r11d + shrd r14d,r14d,2 + add ebx,r9d + vpsrlq xmm7,xmm7,2 + add r9d,edi + mov r13d,ebx + add r14d,r9d + vpxor xmm6,xmm6,xmm7 + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + vpshufb xmm6,xmm6,xmm9 + shrd r14d,r14d,9 + xor r13d,ebx + xor r12d,edx + vpaddd xmm2,xmm2,xmm6 + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + vpaddd xmm6,xmm2,XMMWORD[64+rbp] + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov edi,r9d + xor r12d,edx + shrd r14d,r14d,11 + xor edi,r10d + add r8d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + shrd r14d,r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + vmovdqa XMMWORD[32+rsp],xmm6 + vpalignr xmm4,xmm0,xmm3,4 + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + vpalignr xmm7,xmm2,xmm1,4 + shrd r14d,r14d,9 + xor r13d,eax + xor r12d,ecx + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + vpaddd xmm3,xmm3,xmm7 + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d + vpsrld xmm7,xmm4,3 + xor r12d,ecx + shrd r14d,r14d,11 + xor r15d,r9d + vpslld xmm5,xmm4,14 + add edx,r12d + shrd r13d,r13d,6 + and edi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,r8d + add edx,r13d + xor edi,r9d + vpshufd xmm7,xmm2,250 + shrd r14d,r14d,2 + add r11d,edx + add edx,edi + vpsrld xmm6,xmm6,11 + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov edx,r14d + mov r12d,eax + shrd r14d,r14d,9 + vpslld xmm5,xmm5,11 + xor r13d,r11d + xor r12d,ebx + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + vpsrld xmm6,xmm7,10 + add ecx,DWORD[52+rsp] + mov edi,edx + xor r12d,ebx + vpxor xmm4,xmm4,xmm5 + shrd r14d,r14d,11 + xor edi,r8d + add ecx,r12d + vpsrlq xmm7,xmm7,17 + shrd r13d,r13d,6 + and r15d,edi + xor r14d,edx + vpaddd xmm3,xmm3,xmm4 + add ecx,r13d + xor r15d,r8d + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + vpsrlq xmm7,xmm7,2 + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,r11d + shrd r14d,r14d,9 + xor r13d,r10d + vpshufb xmm6,xmm6,xmm8 + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + vpaddd xmm3,xmm3,xmm6 + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[56+rsp] + vpshufd xmm7,xmm3,80 + mov r15d,ecx + xor r12d,eax + shrd r14d,r14d,11 + vpsrld xmm6,xmm7,10 + xor r15d,edx + add ebx,r12d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + and edi,r15d + xor r14d,ecx + add ebx,r13d + vpxor xmm6,xmm6,xmm7 + xor edi,edx + shrd r14d,r14d,2 + add r9d,ebx + vpsrlq xmm7,xmm7,2 + add ebx,edi + mov r13d,r9d + add r14d,ebx + vpxor xmm6,xmm6,xmm7 + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + vpshufb xmm6,xmm6,xmm9 + shrd r14d,r14d,9 + xor r13d,r9d + xor r12d,r11d + vpaddd xmm3,xmm3,xmm6 + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + vpaddd xmm6,xmm3,XMMWORD[96+rbp] + xor r13d,r9d + add eax,DWORD[60+rsp] + mov edi,ebx + xor r12d,r11d + shrd r14d,r14d,11 + xor edi,ecx + add eax,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + shrd r14d,r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + vmovdqa XMMWORD[48+rsp],xmm6 + cmp BYTE[131+rbp],0 + jne NEAR $L$avx_00_47 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + shrd r14d,r14d,9 + xor r13d,r8d + xor r12d,r10d + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax + xor r12d,r10d + shrd r14d,r14d,11 + xor r15d,ebx + add r11d,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,eax + add r11d,r13d + xor edi,ebx + shrd r14d,r14d,2 + add edx,r11d + add r11d,edi + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + mov r11d,r14d + mov r12d,r8d + shrd r14d,r14d,9 + xor r13d,edx + xor r12d,r9d + shrd r13d,r13d,5 + xor r14d,r11d + and r12d,edx + xor r13d,edx + add r10d,DWORD[4+rsp] + mov edi,r11d + xor r12d,r9d + shrd r14d,r14d,11 + xor edi,eax + add r10d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + shrd r14d,r14d,2 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + mov r12d,edx + shrd r14d,r14d,9 + xor r13d,ecx + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[8+rsp] + mov r15d,r10d + xor r12d,r8d + shrd r14d,r14d,11 + xor r15d,r11d + add r9d,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,r10d + add r9d,r13d + xor edi,r11d + shrd r14d,r14d,2 + add ebx,r9d + add r9d,edi + mov r13d,ebx + add r14d,r9d + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + shrd r14d,r14d,9 + xor r13d,ebx + xor r12d,edx + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov edi,r9d + xor r12d,edx + shrd r14d,r14d,11 + xor edi,r10d + add r8d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + shrd r14d,r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + shrd r14d,r14d,9 + xor r13d,eax + xor r12d,ecx + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d + xor r12d,ecx + shrd r14d,r14d,11 + xor r15d,r9d + add edx,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,r8d + add edx,r13d + xor edi,r9d + shrd r14d,r14d,2 + add r11d,edx + add edx,edi + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + mov edx,r14d + mov r12d,eax + shrd r14d,r14d,9 + xor r13d,r11d + xor r12d,ebx + shrd r13d,r13d,5 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + add ecx,DWORD[20+rsp] + mov edi,edx + xor r12d,ebx + shrd r14d,r14d,11 + xor edi,r8d + add ecx,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + shrd r14d,r14d,2 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + mov r12d,r11d + shrd r14d,r14d,9 + xor r13d,r10d + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[24+rsp] + mov r15d,ecx + xor r12d,eax + shrd r14d,r14d,11 + xor r15d,edx + add ebx,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,ecx + add ebx,r13d + xor edi,edx + shrd r14d,r14d,2 + add r9d,ebx + add ebx,edi + mov r13d,r9d + add r14d,ebx + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + shrd r14d,r14d,9 + xor r13d,r9d + xor r12d,r11d + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + xor r13d,r9d + add eax,DWORD[28+rsp] + mov edi,ebx + xor r12d,r11d + shrd r14d,r14d,11 + xor edi,ecx + add eax,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + shrd r14d,r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + shrd r14d,r14d,9 + xor r13d,r8d + xor r12d,r10d + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax + xor r12d,r10d + shrd r14d,r14d,11 + xor r15d,ebx + add r11d,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,eax + add r11d,r13d + xor edi,ebx + shrd r14d,r14d,2 + add edx,r11d + add r11d,edi + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + mov r11d,r14d + mov r12d,r8d + shrd r14d,r14d,9 + xor r13d,edx + xor r12d,r9d + shrd r13d,r13d,5 + xor r14d,r11d + and r12d,edx + xor r13d,edx + add r10d,DWORD[36+rsp] + mov edi,r11d + xor r12d,r9d + shrd r14d,r14d,11 + xor edi,eax + add r10d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + shrd r14d,r14d,2 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + mov r12d,edx + shrd r14d,r14d,9 + xor r13d,ecx + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[40+rsp] + mov r15d,r10d + xor r12d,r8d + shrd r14d,r14d,11 + xor r15d,r11d + add r9d,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,r10d + add r9d,r13d + xor edi,r11d + shrd r14d,r14d,2 + add ebx,r9d + add r9d,edi + mov r13d,ebx + add r14d,r9d + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + shrd r14d,r14d,9 + xor r13d,ebx + xor r12d,edx + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov edi,r9d + xor r12d,edx + shrd r14d,r14d,11 + xor edi,r10d + add r8d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + shrd r14d,r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + shrd r14d,r14d,9 + xor r13d,eax + xor r12d,ecx + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d + xor r12d,ecx + shrd r14d,r14d,11 + xor r15d,r9d + add edx,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,r8d + add edx,r13d + xor edi,r9d + shrd r14d,r14d,2 + add r11d,edx + add edx,edi + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + mov edx,r14d + mov r12d,eax + shrd r14d,r14d,9 + xor r13d,r11d + xor r12d,ebx + shrd r13d,r13d,5 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + add ecx,DWORD[52+rsp] + mov edi,edx + xor r12d,ebx + shrd r14d,r14d,11 + xor edi,r8d + add ecx,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + shrd r14d,r14d,2 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + mov r12d,r11d + shrd r14d,r14d,9 + xor r13d,r10d + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[56+rsp] + mov r15d,ecx + xor r12d,eax + shrd r14d,r14d,11 + xor r15d,edx + add ebx,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,ecx + add ebx,r13d + xor edi,edx + shrd r14d,r14d,2 + add r9d,ebx + add ebx,edi + mov r13d,r9d + add r14d,ebx + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + shrd r14d,r14d,9 + xor r13d,r9d + xor r12d,r11d + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + xor r13d,r9d + add eax,DWORD[60+rsp] + mov edi,ebx + xor r12d,r11d + shrd r14d,r14d,11 + xor edi,ecx + add eax,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + shrd r14d,r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + mov rdi,QWORD[((64+0))+rsp] + mov eax,r14d + + add eax,DWORD[rdi] + lea rsi,[64+rsi] + add ebx,DWORD[4+rdi] + add ecx,DWORD[8+rdi] + add edx,DWORD[12+rdi] + add r8d,DWORD[16+rdi] + add r9d,DWORD[20+rdi] + add r10d,DWORD[24+rdi] + add r11d,DWORD[28+rdi] + + cmp rsi,QWORD[((64+16))+rsp] + + mov DWORD[rdi],eax + mov DWORD[4+rdi],ebx + mov DWORD[8+rdi],ecx + mov DWORD[12+rdi],edx + mov DWORD[16+rdi],r8d + mov DWORD[20+rdi],r9d + mov DWORD[24+rdi],r10d + mov DWORD[28+rdi],r11d + jb NEAR $L$loop_avx + + mov rsi,QWORD[((64+24))+rsp] + vzeroupper + movaps xmm6,XMMWORD[((64+32))+rsp] + movaps xmm7,XMMWORD[((64+48))+rsp] + movaps xmm8,XMMWORD[((64+64))+rsp] + movaps xmm9,XMMWORD[((64+80))+rsp] + mov r15,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r13,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + mov rbp,QWORD[32+rsi] + mov rbx,QWORD[40+rsi] + lea rsp,[48+rsi] +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_sha256_block_data_order_avx: EXTERN __imp_RtlVirtualUnwind ALIGN 16 @@ -2982,6 +4063,9 @@ DD $L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase DD $L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase DD $L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order_avx wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order_avx wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order_avx wrt ..imagebase section .xdata rdata align=8 ALIGN 8 $L$SEH_info_sha256_block_data_order: @@ -2992,3 +4076,7 @@ DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase +$L$SEH_info_sha256_block_data_order_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
diff --git a/third_party/boringssl/win-x86_64/crypto/sha/sha512-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/sha/sha512-x86_64.asm index b76cc0e..71449cd 100644 --- a/third_party/boringssl/win-x86_64/crypto/sha/sha512-x86_64.asm +++ b/third_party/boringssl/win-x86_64/crypto/sha/sha512-x86_64.asm
@@ -19,6 +19,17 @@ mov rdx,r8 + lea r11,[OPENSSL_ia32cap_P] + mov r9d,DWORD[r11] + mov r10d,DWORD[4+r11] + mov r11d,DWORD[8+r11] + test r10d,2048 + jnz NEAR $L$xop_shortcut + and r9d,1073741824 + and r10d,268435968 + or r10d,r9d + cmp r10d,1342177792 + je NEAR $L$avx_shortcut push rbx push rbp push r12 @@ -1801,6 +1812,2282 @@ DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 DB 111,114,103,62,0 + +ALIGN 64 +sha512_block_data_order_xop: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha512_block_data_order_xop: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +$L$xop_shortcut: + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + mov r11,rsp + shl rdx,4 + sub rsp,256 + lea rdx,[rdx*8+rsi] + and rsp,-64 + mov QWORD[((128+0))+rsp],rdi + mov QWORD[((128+8))+rsp],rsi + mov QWORD[((128+16))+rsp],rdx + mov QWORD[((128+24))+rsp],r11 + movaps XMMWORD[(128+32)+rsp],xmm6 + movaps XMMWORD[(128+48)+rsp],xmm7 + movaps XMMWORD[(128+64)+rsp],xmm8 + movaps XMMWORD[(128+80)+rsp],xmm9 + movaps XMMWORD[(128+96)+rsp],xmm10 + movaps XMMWORD[(128+112)+rsp],xmm11 +$L$prologue_xop: + + vzeroupper + mov rax,QWORD[rdi] + mov rbx,QWORD[8+rdi] + mov rcx,QWORD[16+rdi] + mov rdx,QWORD[24+rdi] + mov r8,QWORD[32+rdi] + mov r9,QWORD[40+rdi] + mov r10,QWORD[48+rdi] + mov r11,QWORD[56+rdi] + jmp NEAR $L$loop_xop +ALIGN 16 +$L$loop_xop: + vmovdqa xmm11,XMMWORD[((K512+1280))] + vmovdqu xmm0,XMMWORD[rsi] + lea rbp,[((K512+128))] + vmovdqu xmm1,XMMWORD[16+rsi] + vmovdqu xmm2,XMMWORD[32+rsi] + vpshufb xmm0,xmm0,xmm11 + vmovdqu xmm3,XMMWORD[48+rsi] + vpshufb xmm1,xmm1,xmm11 + vmovdqu xmm4,XMMWORD[64+rsi] + vpshufb xmm2,xmm2,xmm11 + vmovdqu xmm5,XMMWORD[80+rsi] + vpshufb xmm3,xmm3,xmm11 + vmovdqu xmm6,XMMWORD[96+rsi] + vpshufb xmm4,xmm4,xmm11 + vmovdqu xmm7,XMMWORD[112+rsi] + vpshufb xmm5,xmm5,xmm11 + vpaddq xmm8,xmm0,XMMWORD[((-128))+rbp] + vpshufb xmm6,xmm6,xmm11 + vpaddq xmm9,xmm1,XMMWORD[((-96))+rbp] + vpshufb xmm7,xmm7,xmm11 + vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] + vpaddq xmm11,xmm3,XMMWORD[((-32))+rbp] + vmovdqa XMMWORD[rsp],xmm8 + vpaddq xmm8,xmm4,XMMWORD[rbp] + vmovdqa XMMWORD[16+rsp],xmm9 + vpaddq xmm9,xmm5,XMMWORD[32+rbp] + vmovdqa XMMWORD[32+rsp],xmm10 + vpaddq xmm10,xmm6,XMMWORD[64+rbp] + vmovdqa XMMWORD[48+rsp],xmm11 + vpaddq xmm11,xmm7,XMMWORD[96+rbp] + vmovdqa XMMWORD[64+rsp],xmm8 + mov r14,rax + vmovdqa XMMWORD[80+rsp],xmm9 + mov rdi,rbx + vmovdqa XMMWORD[96+rsp],xmm10 + xor rdi,rcx + vmovdqa XMMWORD[112+rsp],xmm11 + mov r13,r8 + jmp NEAR $L$xop_00_47 + +ALIGN 16 +$L$xop_00_47: + add rbp,256 + vpalignr xmm8,xmm1,xmm0,8 + ror r13,23 + mov rax,r14 + vpalignr xmm11,xmm5,xmm4,8 + mov r12,r9 + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,r8 + xor r12,r10 + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,rax + vpaddq xmm0,xmm0,xmm11 + and r12,r8 + xor r13,r8 + add r11,QWORD[rsp] + mov r15,rax +DB 143,72,120,195,209,7 + xor r12,r10 + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,rbx + add r11,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,223,3 + xor r14,rax + add r11,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rbx + ror r14,28 + vpsrlq xmm10,xmm7,6 + add rdx,r11 + add r11,rdi + vpaddq xmm0,xmm0,xmm8 + mov r13,rdx + add r14,r11 +DB 143,72,120,195,203,42 + ror r13,23 + mov r11,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,r8 + ror r14,5 + xor r13,rdx + xor r12,r9 + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + vpaddq xmm0,xmm0,xmm11 + add r10,QWORD[8+rsp] + mov rdi,r11 + xor r12,r9 + ror r14,6 + vpaddq xmm10,xmm0,XMMWORD[((-128))+rbp] + xor rdi,rax + add r10,r12 + ror r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + ror r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + vmovdqa XMMWORD[rsp],xmm10 + vpalignr xmm8,xmm2,xmm1,8 + ror r13,23 + mov r10,r14 + vpalignr xmm11,xmm6,xmm5,8 + mov r12,rdx + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,rcx + xor r12,r8 + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,r10 + vpaddq xmm1,xmm1,xmm11 + and r12,rcx + xor r13,rcx + add r9,QWORD[16+rsp] + mov r15,r10 +DB 143,72,120,195,209,7 + xor r12,r8 + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,r11 + add r9,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,216,3 + xor r14,r10 + add r9,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r11 + ror r14,28 + vpsrlq xmm10,xmm0,6 + add rbx,r9 + add r9,rdi + vpaddq xmm1,xmm1,xmm8 + mov r13,rbx + add r14,r9 +DB 143,72,120,195,203,42 + ror r13,23 + mov r9,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,rcx + ror r14,5 + xor r13,rbx + xor r12,rdx + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + vpaddq xmm1,xmm1,xmm11 + add r8,QWORD[24+rsp] + mov rdi,r9 + xor r12,rdx + ror r14,6 + vpaddq xmm10,xmm1,XMMWORD[((-96))+rbp] + xor rdi,r10 + add r8,r12 + ror r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + ror r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + vmovdqa XMMWORD[16+rsp],xmm10 + vpalignr xmm8,xmm3,xmm2,8 + ror r13,23 + mov r8,r14 + vpalignr xmm11,xmm7,xmm6,8 + mov r12,rbx + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,rax + xor r12,rcx + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,r8 + vpaddq xmm2,xmm2,xmm11 + and r12,rax + xor r13,rax + add rdx,QWORD[32+rsp] + mov r15,r8 +DB 143,72,120,195,209,7 + xor r12,rcx + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,r9 + add rdx,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,217,3 + xor r14,r8 + add rdx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r9 + ror r14,28 + vpsrlq xmm10,xmm1,6 + add r11,rdx + add rdx,rdi + vpaddq xmm2,xmm2,xmm8 + mov r13,r11 + add r14,rdx +DB 143,72,120,195,203,42 + ror r13,23 + mov rdx,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,rax + ror r14,5 + xor r13,r11 + xor r12,rbx + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + vpaddq xmm2,xmm2,xmm11 + add rcx,QWORD[40+rsp] + mov rdi,rdx + xor r12,rbx + ror r14,6 + vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] + xor rdi,r8 + add rcx,r12 + ror r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + ror r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + vmovdqa XMMWORD[32+rsp],xmm10 + vpalignr xmm8,xmm4,xmm3,8 + ror r13,23 + mov rcx,r14 + vpalignr xmm11,xmm0,xmm7,8 + mov r12,r11 + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,r10 + xor r12,rax + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,rcx + vpaddq xmm3,xmm3,xmm11 + and r12,r10 + xor r13,r10 + add rbx,QWORD[48+rsp] + mov r15,rcx +DB 143,72,120,195,209,7 + xor r12,rax + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,rdx + add rbx,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,218,3 + xor r14,rcx + add rbx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rdx + ror r14,28 + vpsrlq xmm10,xmm2,6 + add r9,rbx + add rbx,rdi + vpaddq xmm3,xmm3,xmm8 + mov r13,r9 + add r14,rbx +DB 143,72,120,195,203,42 + ror r13,23 + mov rbx,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,r10 + ror r14,5 + xor r13,r9 + xor r12,r11 + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + vpaddq xmm3,xmm3,xmm11 + add rax,QWORD[56+rsp] + mov rdi,rbx + xor r12,r11 + ror r14,6 + vpaddq xmm10,xmm3,XMMWORD[((-32))+rbp] + xor rdi,rcx + add rax,r12 + ror r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + ror r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + vmovdqa XMMWORD[48+rsp],xmm10 + vpalignr xmm8,xmm5,xmm4,8 + ror r13,23 + mov rax,r14 + vpalignr xmm11,xmm1,xmm0,8 + mov r12,r9 + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,r8 + xor r12,r10 + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,rax + vpaddq xmm4,xmm4,xmm11 + and r12,r8 + xor r13,r8 + add r11,QWORD[64+rsp] + mov r15,rax +DB 143,72,120,195,209,7 + xor r12,r10 + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,rbx + add r11,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,219,3 + xor r14,rax + add r11,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rbx + ror r14,28 + vpsrlq xmm10,xmm3,6 + add rdx,r11 + add r11,rdi + vpaddq xmm4,xmm4,xmm8 + mov r13,rdx + add r14,r11 +DB 143,72,120,195,203,42 + ror r13,23 + mov r11,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,r8 + ror r14,5 + xor r13,rdx + xor r12,r9 + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + vpaddq xmm4,xmm4,xmm11 + add r10,QWORD[72+rsp] + mov rdi,r11 + xor r12,r9 + ror r14,6 + vpaddq xmm10,xmm4,XMMWORD[rbp] + xor rdi,rax + add r10,r12 + ror r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + ror r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + vmovdqa XMMWORD[64+rsp],xmm10 + vpalignr xmm8,xmm6,xmm5,8 + ror r13,23 + mov r10,r14 + vpalignr xmm11,xmm2,xmm1,8 + mov r12,rdx + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,rcx + xor r12,r8 + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,r10 + vpaddq xmm5,xmm5,xmm11 + and r12,rcx + xor r13,rcx + add r9,QWORD[80+rsp] + mov r15,r10 +DB 143,72,120,195,209,7 + xor r12,r8 + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,r11 + add r9,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,220,3 + xor r14,r10 + add r9,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r11 + ror r14,28 + vpsrlq xmm10,xmm4,6 + add rbx,r9 + add r9,rdi + vpaddq xmm5,xmm5,xmm8 + mov r13,rbx + add r14,r9 +DB 143,72,120,195,203,42 + ror r13,23 + mov r9,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,rcx + ror r14,5 + xor r13,rbx + xor r12,rdx + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + vpaddq xmm5,xmm5,xmm11 + add r8,QWORD[88+rsp] + mov rdi,r9 + xor r12,rdx + ror r14,6 + vpaddq xmm10,xmm5,XMMWORD[32+rbp] + xor rdi,r10 + add r8,r12 + ror r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + ror r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + vmovdqa XMMWORD[80+rsp],xmm10 + vpalignr xmm8,xmm7,xmm6,8 + ror r13,23 + mov r8,r14 + vpalignr xmm11,xmm3,xmm2,8 + mov r12,rbx + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,rax + xor r12,rcx + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,r8 + vpaddq xmm6,xmm6,xmm11 + and r12,rax + xor r13,rax + add rdx,QWORD[96+rsp] + mov r15,r8 +DB 143,72,120,195,209,7 + xor r12,rcx + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,r9 + add rdx,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,221,3 + xor r14,r8 + add rdx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r9 + ror r14,28 + vpsrlq xmm10,xmm5,6 + add r11,rdx + add rdx,rdi + vpaddq xmm6,xmm6,xmm8 + mov r13,r11 + add r14,rdx +DB 143,72,120,195,203,42 + ror r13,23 + mov rdx,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,rax + ror r14,5 + xor r13,r11 + xor r12,rbx + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + vpaddq xmm6,xmm6,xmm11 + add rcx,QWORD[104+rsp] + mov rdi,rdx + xor r12,rbx + ror r14,6 + vpaddq xmm10,xmm6,XMMWORD[64+rbp] + xor rdi,r8 + add rcx,r12 + ror r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + ror r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + vmovdqa XMMWORD[96+rsp],xmm10 + vpalignr xmm8,xmm0,xmm7,8 + ror r13,23 + mov rcx,r14 + vpalignr xmm11,xmm4,xmm3,8 + mov r12,r11 + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,r10 + xor r12,rax + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,rcx + vpaddq xmm7,xmm7,xmm11 + and r12,r10 + xor r13,r10 + add rbx,QWORD[112+rsp] + mov r15,rcx +DB 143,72,120,195,209,7 + xor r12,rax + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,rdx + add rbx,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,222,3 + xor r14,rcx + add rbx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rdx + ror r14,28 + vpsrlq xmm10,xmm6,6 + add r9,rbx + add rbx,rdi + vpaddq xmm7,xmm7,xmm8 + mov r13,r9 + add r14,rbx +DB 143,72,120,195,203,42 + ror r13,23 + mov rbx,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,r10 + ror r14,5 + xor r13,r9 + xor r12,r11 + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + vpaddq xmm7,xmm7,xmm11 + add rax,QWORD[120+rsp] + mov rdi,rbx + xor r12,r11 + ror r14,6 + vpaddq xmm10,xmm7,XMMWORD[96+rbp] + xor rdi,rcx + add rax,r12 + ror r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + ror r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + vmovdqa XMMWORD[112+rsp],xmm10 + cmp BYTE[135+rbp],0 + jne NEAR $L$xop_00_47 + ror r13,23 + mov rax,r14 + mov r12,r9 + ror r14,5 + xor r13,r8 + xor r12,r10 + ror r13,4 + xor r14,rax + and r12,r8 + xor r13,r8 + add r11,QWORD[rsp] + mov r15,rax + xor r12,r10 + ror r14,6 + xor r15,rbx + add r11,r12 + ror r13,14 + and rdi,r15 + xor r14,rax + add r11,r13 + xor rdi,rbx + ror r14,28 + add rdx,r11 + add r11,rdi + mov r13,rdx + add r14,r11 + ror r13,23 + mov r11,r14 + mov r12,r8 + ror r14,5 + xor r13,rdx + xor r12,r9 + ror r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + add r10,QWORD[8+rsp] + mov rdi,r11 + xor r12,r9 + ror r14,6 + xor rdi,rax + add r10,r12 + ror r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + ror r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + ror r13,23 + mov r10,r14 + mov r12,rdx + ror r14,5 + xor r13,rcx + xor r12,r8 + ror r13,4 + xor r14,r10 + and r12,rcx + xor r13,rcx + add r9,QWORD[16+rsp] + mov r15,r10 + xor r12,r8 + ror r14,6 + xor r15,r11 + add r9,r12 + ror r13,14 + and rdi,r15 + xor r14,r10 + add r9,r13 + xor rdi,r11 + ror r14,28 + add rbx,r9 + add r9,rdi + mov r13,rbx + add r14,r9 + ror r13,23 + mov r9,r14 + mov r12,rcx + ror r14,5 + xor r13,rbx + xor r12,rdx + ror r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + add r8,QWORD[24+rsp] + mov rdi,r9 + xor r12,rdx + ror r14,6 + xor rdi,r10 + add r8,r12 + ror r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + ror r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + ror r13,23 + mov r8,r14 + mov r12,rbx + ror r14,5 + xor r13,rax + xor r12,rcx + ror r13,4 + xor r14,r8 + and r12,rax + xor r13,rax + add rdx,QWORD[32+rsp] + mov r15,r8 + xor r12,rcx + ror r14,6 + xor r15,r9 + add rdx,r12 + ror r13,14 + and rdi,r15 + xor r14,r8 + add rdx,r13 + xor rdi,r9 + ror r14,28 + add r11,rdx + add rdx,rdi + mov r13,r11 + add r14,rdx + ror r13,23 + mov rdx,r14 + mov r12,rax + ror r14,5 + xor r13,r11 + xor r12,rbx + ror r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + add rcx,QWORD[40+rsp] + mov rdi,rdx + xor r12,rbx + ror r14,6 + xor rdi,r8 + add rcx,r12 + ror r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + ror r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + ror r13,23 + mov rcx,r14 + mov r12,r11 + ror r14,5 + xor r13,r10 + xor r12,rax + ror r13,4 + xor r14,rcx + and r12,r10 + xor r13,r10 + add rbx,QWORD[48+rsp] + mov r15,rcx + xor r12,rax + ror r14,6 + xor r15,rdx + add rbx,r12 + ror r13,14 + and rdi,r15 + xor r14,rcx + add rbx,r13 + xor rdi,rdx + ror r14,28 + add r9,rbx + add rbx,rdi + mov r13,r9 + add r14,rbx + ror r13,23 + mov rbx,r14 + mov r12,r10 + ror r14,5 + xor r13,r9 + xor r12,r11 + ror r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + add rax,QWORD[56+rsp] + mov rdi,rbx + xor r12,r11 + ror r14,6 + xor rdi,rcx + add rax,r12 + ror r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + ror r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + ror r13,23 + mov rax,r14 + mov r12,r9 + ror r14,5 + xor r13,r8 + xor r12,r10 + ror r13,4 + xor r14,rax + and r12,r8 + xor r13,r8 + add r11,QWORD[64+rsp] + mov r15,rax + xor r12,r10 + ror r14,6 + xor r15,rbx + add r11,r12 + ror r13,14 + and rdi,r15 + xor r14,rax + add r11,r13 + xor rdi,rbx + ror r14,28 + add rdx,r11 + add r11,rdi + mov r13,rdx + add r14,r11 + ror r13,23 + mov r11,r14 + mov r12,r8 + ror r14,5 + xor r13,rdx + xor r12,r9 + ror r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + add r10,QWORD[72+rsp] + mov rdi,r11 + xor r12,r9 + ror r14,6 + xor rdi,rax + add r10,r12 + ror r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + ror r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + ror r13,23 + mov r10,r14 + mov r12,rdx + ror r14,5 + xor r13,rcx + xor r12,r8 + ror r13,4 + xor r14,r10 + and r12,rcx + xor r13,rcx + add r9,QWORD[80+rsp] + mov r15,r10 + xor r12,r8 + ror r14,6 + xor r15,r11 + add r9,r12 + ror r13,14 + and rdi,r15 + xor r14,r10 + add r9,r13 + xor rdi,r11 + ror r14,28 + add rbx,r9 + add r9,rdi + mov r13,rbx + add r14,r9 + ror r13,23 + mov r9,r14 + mov r12,rcx + ror r14,5 + xor r13,rbx + xor r12,rdx + ror r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + add r8,QWORD[88+rsp] + mov rdi,r9 + xor r12,rdx + ror r14,6 + xor rdi,r10 + add r8,r12 + ror r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + ror r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + ror r13,23 + mov r8,r14 + mov r12,rbx + ror r14,5 + xor r13,rax + xor r12,rcx + ror r13,4 + xor r14,r8 + and r12,rax + xor r13,rax + add rdx,QWORD[96+rsp] + mov r15,r8 + xor r12,rcx + ror r14,6 + xor r15,r9 + add rdx,r12 + ror r13,14 + and rdi,r15 + xor r14,r8 + add rdx,r13 + xor rdi,r9 + ror r14,28 + add r11,rdx + add rdx,rdi + mov r13,r11 + add r14,rdx + ror r13,23 + mov rdx,r14 + mov r12,rax + ror r14,5 + xor r13,r11 + xor r12,rbx + ror r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + add rcx,QWORD[104+rsp] + mov rdi,rdx + xor r12,rbx + ror r14,6 + xor rdi,r8 + add rcx,r12 + ror r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + ror r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + ror r13,23 + mov rcx,r14 + mov r12,r11 + ror r14,5 + xor r13,r10 + xor r12,rax + ror r13,4 + xor r14,rcx + and r12,r10 + xor r13,r10 + add rbx,QWORD[112+rsp] + mov r15,rcx + xor r12,rax + ror r14,6 + xor r15,rdx + add rbx,r12 + ror r13,14 + and rdi,r15 + xor r14,rcx + add rbx,r13 + xor rdi,rdx + ror r14,28 + add r9,rbx + add rbx,rdi + mov r13,r9 + add r14,rbx + ror r13,23 + mov rbx,r14 + mov r12,r10 + ror r14,5 + xor r13,r9 + xor r12,r11 + ror r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + add rax,QWORD[120+rsp] + mov rdi,rbx + xor r12,r11 + ror r14,6 + xor rdi,rcx + add rax,r12 + ror r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + ror r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + mov rdi,QWORD[((128+0))+rsp] + mov rax,r14 + + add rax,QWORD[rdi] + lea rsi,[128+rsi] + add rbx,QWORD[8+rdi] + add rcx,QWORD[16+rdi] + add rdx,QWORD[24+rdi] + add r8,QWORD[32+rdi] + add r9,QWORD[40+rdi] + add r10,QWORD[48+rdi] + add r11,QWORD[56+rdi] + + cmp rsi,QWORD[((128+16))+rsp] + + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rcx + mov QWORD[24+rdi],rdx + mov QWORD[32+rdi],r8 + mov QWORD[40+rdi],r9 + mov QWORD[48+rdi],r10 + mov QWORD[56+rdi],r11 + jb NEAR $L$loop_xop + + mov rsi,QWORD[((128+24))+rsp] + vzeroupper + movaps xmm6,XMMWORD[((128+32))+rsp] + movaps xmm7,XMMWORD[((128+48))+rsp] + movaps xmm8,XMMWORD[((128+64))+rsp] + movaps xmm9,XMMWORD[((128+80))+rsp] + movaps xmm10,XMMWORD[((128+96))+rsp] + movaps xmm11,XMMWORD[((128+112))+rsp] + mov r15,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r13,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + mov rbp,QWORD[32+rsi] + mov rbx,QWORD[40+rsi] + lea rsp,[48+rsi] +$L$epilogue_xop: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_sha512_block_data_order_xop: + +ALIGN 64 +sha512_block_data_order_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha512_block_data_order_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +$L$avx_shortcut: + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + mov r11,rsp + shl rdx,4 + sub rsp,256 + lea rdx,[rdx*8+rsi] + and rsp,-64 + mov QWORD[((128+0))+rsp],rdi + mov QWORD[((128+8))+rsp],rsi + mov QWORD[((128+16))+rsp],rdx + mov QWORD[((128+24))+rsp],r11 + movaps XMMWORD[(128+32)+rsp],xmm6 + movaps XMMWORD[(128+48)+rsp],xmm7 + movaps XMMWORD[(128+64)+rsp],xmm8 + movaps XMMWORD[(128+80)+rsp],xmm9 + movaps XMMWORD[(128+96)+rsp],xmm10 + movaps XMMWORD[(128+112)+rsp],xmm11 +$L$prologue_avx: + + vzeroupper + mov rax,QWORD[rdi] + mov rbx,QWORD[8+rdi] + mov rcx,QWORD[16+rdi] + mov rdx,QWORD[24+rdi] + mov r8,QWORD[32+rdi] + mov r9,QWORD[40+rdi] + mov r10,QWORD[48+rdi] + mov r11,QWORD[56+rdi] + jmp NEAR $L$loop_avx +ALIGN 16 +$L$loop_avx: + vmovdqa xmm11,XMMWORD[((K512+1280))] + vmovdqu xmm0,XMMWORD[rsi] + lea rbp,[((K512+128))] + vmovdqu xmm1,XMMWORD[16+rsi] + vmovdqu xmm2,XMMWORD[32+rsi] + vpshufb xmm0,xmm0,xmm11 + vmovdqu xmm3,XMMWORD[48+rsi] + vpshufb xmm1,xmm1,xmm11 + vmovdqu xmm4,XMMWORD[64+rsi] + vpshufb xmm2,xmm2,xmm11 + vmovdqu xmm5,XMMWORD[80+rsi] + vpshufb xmm3,xmm3,xmm11 + vmovdqu xmm6,XMMWORD[96+rsi] + vpshufb xmm4,xmm4,xmm11 + vmovdqu xmm7,XMMWORD[112+rsi] + vpshufb xmm5,xmm5,xmm11 + vpaddq xmm8,xmm0,XMMWORD[((-128))+rbp] + vpshufb xmm6,xmm6,xmm11 + vpaddq xmm9,xmm1,XMMWORD[((-96))+rbp] + vpshufb xmm7,xmm7,xmm11 + vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] + vpaddq xmm11,xmm3,XMMWORD[((-32))+rbp] + vmovdqa XMMWORD[rsp],xmm8 + vpaddq xmm8,xmm4,XMMWORD[rbp] + vmovdqa XMMWORD[16+rsp],xmm9 + vpaddq xmm9,xmm5,XMMWORD[32+rbp] + vmovdqa XMMWORD[32+rsp],xmm10 + vpaddq xmm10,xmm6,XMMWORD[64+rbp] + vmovdqa XMMWORD[48+rsp],xmm11 + vpaddq xmm11,xmm7,XMMWORD[96+rbp] + vmovdqa XMMWORD[64+rsp],xmm8 + mov r14,rax + vmovdqa XMMWORD[80+rsp],xmm9 + mov rdi,rbx + vmovdqa XMMWORD[96+rsp],xmm10 + xor rdi,rcx + vmovdqa XMMWORD[112+rsp],xmm11 + mov r13,r8 + jmp NEAR $L$avx_00_47 + +ALIGN 16 +$L$avx_00_47: + add rbp,256 + vpalignr xmm8,xmm1,xmm0,8 + shrd r13,r13,23 + mov rax,r14 + vpalignr xmm11,xmm5,xmm4,8 + mov r12,r9 + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,r8 + xor r12,r10 + vpaddq xmm0,xmm0,xmm11 + shrd r13,r13,4 + xor r14,rax + vpsrlq xmm11,xmm8,7 + and r12,r8 + xor r13,r8 + vpsllq xmm9,xmm8,56 + add r11,QWORD[rsp] + mov r15,rax + vpxor xmm8,xmm11,xmm10 + xor r12,r10 + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,rbx + add r11,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,rax + add r11,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rbx + shrd r14,r14,28 + vpsrlq xmm11,xmm7,6 + add rdx,r11 + add r11,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,rdx + add r14,r11 + vpsllq xmm10,xmm7,3 + shrd r13,r13,23 + mov r11,r14 + vpaddq xmm0,xmm0,xmm8 + mov r12,r8 + shrd r14,r14,5 + vpsrlq xmm9,xmm7,19 + xor r13,rdx + xor r12,r9 + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,r11 + vpsllq xmm10,xmm10,42 + and r12,rdx + xor r13,rdx + vpxor xmm11,xmm11,xmm9 + add r10,QWORD[8+rsp] + mov rdi,r11 + vpsrlq xmm9,xmm9,42 + xor r12,r9 + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,rax + add r10,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm0,xmm0,xmm11 + xor r14,r11 + add r10,r13 + vpaddq xmm10,xmm0,XMMWORD[((-128))+rbp] + xor r15,rax + shrd r14,r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + vmovdqa XMMWORD[rsp],xmm10 + vpalignr xmm8,xmm2,xmm1,8 + shrd r13,r13,23 + mov r10,r14 + vpalignr xmm11,xmm6,xmm5,8 + mov r12,rdx + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,rcx + xor r12,r8 + vpaddq xmm1,xmm1,xmm11 + shrd r13,r13,4 + xor r14,r10 + vpsrlq xmm11,xmm8,7 + and r12,rcx + xor r13,rcx + vpsllq xmm9,xmm8,56 + add r9,QWORD[16+rsp] + mov r15,r10 + vpxor xmm8,xmm11,xmm10 + xor r12,r8 + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,r11 + add r9,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,r10 + add r9,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r11 + shrd r14,r14,28 + vpsrlq xmm11,xmm0,6 + add rbx,r9 + add r9,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,rbx + add r14,r9 + vpsllq xmm10,xmm0,3 + shrd r13,r13,23 + mov r9,r14 + vpaddq xmm1,xmm1,xmm8 + mov r12,rcx + shrd r14,r14,5 + vpsrlq xmm9,xmm0,19 + xor r13,rbx + xor r12,rdx + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,r9 + vpsllq xmm10,xmm10,42 + and r12,rbx + xor r13,rbx + vpxor xmm11,xmm11,xmm9 + add r8,QWORD[24+rsp] + mov rdi,r9 + vpsrlq xmm9,xmm9,42 + xor r12,rdx + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,r10 + add r8,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm1,xmm1,xmm11 + xor r14,r9 + add r8,r13 + vpaddq xmm10,xmm1,XMMWORD[((-96))+rbp] + xor r15,r10 + shrd r14,r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + vmovdqa XMMWORD[16+rsp],xmm10 + vpalignr xmm8,xmm3,xmm2,8 + shrd r13,r13,23 + mov r8,r14 + vpalignr xmm11,xmm7,xmm6,8 + mov r12,rbx + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,rax + xor r12,rcx + vpaddq xmm2,xmm2,xmm11 + shrd r13,r13,4 + xor r14,r8 + vpsrlq xmm11,xmm8,7 + and r12,rax + xor r13,rax + vpsllq xmm9,xmm8,56 + add rdx,QWORD[32+rsp] + mov r15,r8 + vpxor xmm8,xmm11,xmm10 + xor r12,rcx + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,r9 + add rdx,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,r8 + add rdx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r9 + shrd r14,r14,28 + vpsrlq xmm11,xmm1,6 + add r11,rdx + add rdx,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,r11 + add r14,rdx + vpsllq xmm10,xmm1,3 + shrd r13,r13,23 + mov rdx,r14 + vpaddq xmm2,xmm2,xmm8 + mov r12,rax + shrd r14,r14,5 + vpsrlq xmm9,xmm1,19 + xor r13,r11 + xor r12,rbx + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,rdx + vpsllq xmm10,xmm10,42 + and r12,r11 + xor r13,r11 + vpxor xmm11,xmm11,xmm9 + add rcx,QWORD[40+rsp] + mov rdi,rdx + vpsrlq xmm9,xmm9,42 + xor r12,rbx + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,r8 + add rcx,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm2,xmm2,xmm11 + xor r14,rdx + add rcx,r13 + vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] + xor r15,r8 + shrd r14,r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + vmovdqa XMMWORD[32+rsp],xmm10 + vpalignr xmm8,xmm4,xmm3,8 + shrd r13,r13,23 + mov rcx,r14 + vpalignr xmm11,xmm0,xmm7,8 + mov r12,r11 + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,r10 + xor r12,rax + vpaddq xmm3,xmm3,xmm11 + shrd r13,r13,4 + xor r14,rcx + vpsrlq xmm11,xmm8,7 + and r12,r10 + xor r13,r10 + vpsllq xmm9,xmm8,56 + add rbx,QWORD[48+rsp] + mov r15,rcx + vpxor xmm8,xmm11,xmm10 + xor r12,rax + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,rdx + add rbx,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,rcx + add rbx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rdx + shrd r14,r14,28 + vpsrlq xmm11,xmm2,6 + add r9,rbx + add rbx,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,r9 + add r14,rbx + vpsllq xmm10,xmm2,3 + shrd r13,r13,23 + mov rbx,r14 + vpaddq xmm3,xmm3,xmm8 + mov r12,r10 + shrd r14,r14,5 + vpsrlq xmm9,xmm2,19 + xor r13,r9 + xor r12,r11 + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,rbx + vpsllq xmm10,xmm10,42 + and r12,r9 + xor r13,r9 + vpxor xmm11,xmm11,xmm9 + add rax,QWORD[56+rsp] + mov rdi,rbx + vpsrlq xmm9,xmm9,42 + xor r12,r11 + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,rcx + add rax,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm3,xmm3,xmm11 + xor r14,rbx + add rax,r13 + vpaddq xmm10,xmm3,XMMWORD[((-32))+rbp] + xor r15,rcx + shrd r14,r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + vmovdqa XMMWORD[48+rsp],xmm10 + vpalignr xmm8,xmm5,xmm4,8 + shrd r13,r13,23 + mov rax,r14 + vpalignr xmm11,xmm1,xmm0,8 + mov r12,r9 + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,r8 + xor r12,r10 + vpaddq xmm4,xmm4,xmm11 + shrd r13,r13,4 + xor r14,rax + vpsrlq xmm11,xmm8,7 + and r12,r8 + xor r13,r8 + vpsllq xmm9,xmm8,56 + add r11,QWORD[64+rsp] + mov r15,rax + vpxor xmm8,xmm11,xmm10 + xor r12,r10 + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,rbx + add r11,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,rax + add r11,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rbx + shrd r14,r14,28 + vpsrlq xmm11,xmm3,6 + add rdx,r11 + add r11,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,rdx + add r14,r11 + vpsllq xmm10,xmm3,3 + shrd r13,r13,23 + mov r11,r14 + vpaddq xmm4,xmm4,xmm8 + mov r12,r8 + shrd r14,r14,5 + vpsrlq xmm9,xmm3,19 + xor r13,rdx + xor r12,r9 + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,r11 + vpsllq xmm10,xmm10,42 + and r12,rdx + xor r13,rdx + vpxor xmm11,xmm11,xmm9 + add r10,QWORD[72+rsp] + mov rdi,r11 + vpsrlq xmm9,xmm9,42 + xor r12,r9 + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,rax + add r10,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm4,xmm4,xmm11 + xor r14,r11 + add r10,r13 + vpaddq xmm10,xmm4,XMMWORD[rbp] + xor r15,rax + shrd r14,r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + vmovdqa XMMWORD[64+rsp],xmm10 + vpalignr xmm8,xmm6,xmm5,8 + shrd r13,r13,23 + mov r10,r14 + vpalignr xmm11,xmm2,xmm1,8 + mov r12,rdx + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,rcx + xor r12,r8 + vpaddq xmm5,xmm5,xmm11 + shrd r13,r13,4 + xor r14,r10 + vpsrlq xmm11,xmm8,7 + and r12,rcx + xor r13,rcx + vpsllq xmm9,xmm8,56 + add r9,QWORD[80+rsp] + mov r15,r10 + vpxor xmm8,xmm11,xmm10 + xor r12,r8 + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,r11 + add r9,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,r10 + add r9,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r11 + shrd r14,r14,28 + vpsrlq xmm11,xmm4,6 + add rbx,r9 + add r9,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,rbx + add r14,r9 + vpsllq xmm10,xmm4,3 + shrd r13,r13,23 + mov r9,r14 + vpaddq xmm5,xmm5,xmm8 + mov r12,rcx + shrd r14,r14,5 + vpsrlq xmm9,xmm4,19 + xor r13,rbx + xor r12,rdx + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,r9 + vpsllq xmm10,xmm10,42 + and r12,rbx + xor r13,rbx + vpxor xmm11,xmm11,xmm9 + add r8,QWORD[88+rsp] + mov rdi,r9 + vpsrlq xmm9,xmm9,42 + xor r12,rdx + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,r10 + add r8,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm5,xmm5,xmm11 + xor r14,r9 + add r8,r13 + vpaddq xmm10,xmm5,XMMWORD[32+rbp] + xor r15,r10 + shrd r14,r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + vmovdqa XMMWORD[80+rsp],xmm10 + vpalignr xmm8,xmm7,xmm6,8 + shrd r13,r13,23 + mov r8,r14 + vpalignr xmm11,xmm3,xmm2,8 + mov r12,rbx + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,rax + xor r12,rcx + vpaddq xmm6,xmm6,xmm11 + shrd r13,r13,4 + xor r14,r8 + vpsrlq xmm11,xmm8,7 + and r12,rax + xor r13,rax + vpsllq xmm9,xmm8,56 + add rdx,QWORD[96+rsp] + mov r15,r8 + vpxor xmm8,xmm11,xmm10 + xor r12,rcx + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,r9 + add rdx,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,r8 + add rdx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r9 + shrd r14,r14,28 + vpsrlq xmm11,xmm5,6 + add r11,rdx + add rdx,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,r11 + add r14,rdx + vpsllq xmm10,xmm5,3 + shrd r13,r13,23 + mov rdx,r14 + vpaddq xmm6,xmm6,xmm8 + mov r12,rax + shrd r14,r14,5 + vpsrlq xmm9,xmm5,19 + xor r13,r11 + xor r12,rbx + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,rdx + vpsllq xmm10,xmm10,42 + and r12,r11 + xor r13,r11 + vpxor xmm11,xmm11,xmm9 + add rcx,QWORD[104+rsp] + mov rdi,rdx + vpsrlq xmm9,xmm9,42 + xor r12,rbx + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,r8 + add rcx,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm6,xmm6,xmm11 + xor r14,rdx + add rcx,r13 + vpaddq xmm10,xmm6,XMMWORD[64+rbp] + xor r15,r8 + shrd r14,r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + vmovdqa XMMWORD[96+rsp],xmm10 + vpalignr xmm8,xmm0,xmm7,8 + shrd r13,r13,23 + mov rcx,r14 + vpalignr xmm11,xmm4,xmm3,8 + mov r12,r11 + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,r10 + xor r12,rax + vpaddq xmm7,xmm7,xmm11 + shrd r13,r13,4 + xor r14,rcx + vpsrlq xmm11,xmm8,7 + and r12,r10 + xor r13,r10 + vpsllq xmm9,xmm8,56 + add rbx,QWORD[112+rsp] + mov r15,rcx + vpxor xmm8,xmm11,xmm10 + xor r12,rax + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,rdx + add rbx,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,rcx + add rbx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rdx + shrd r14,r14,28 + vpsrlq xmm11,xmm6,6 + add r9,rbx + add rbx,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,r9 + add r14,rbx + vpsllq xmm10,xmm6,3 + shrd r13,r13,23 + mov rbx,r14 + vpaddq xmm7,xmm7,xmm8 + mov r12,r10 + shrd r14,r14,5 + vpsrlq xmm9,xmm6,19 + xor r13,r9 + xor r12,r11 + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,rbx + vpsllq xmm10,xmm10,42 + and r12,r9 + xor r13,r9 + vpxor xmm11,xmm11,xmm9 + add rax,QWORD[120+rsp] + mov rdi,rbx + vpsrlq xmm9,xmm9,42 + xor r12,r11 + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,rcx + add rax,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm7,xmm7,xmm11 + xor r14,rbx + add rax,r13 + vpaddq xmm10,xmm7,XMMWORD[96+rbp] + xor r15,rcx + shrd r14,r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + vmovdqa XMMWORD[112+rsp],xmm10 + cmp BYTE[135+rbp],0 + jne NEAR $L$avx_00_47 + shrd r13,r13,23 + mov rax,r14 + mov r12,r9 + shrd r14,r14,5 + xor r13,r8 + xor r12,r10 + shrd r13,r13,4 + xor r14,rax + and r12,r8 + xor r13,r8 + add r11,QWORD[rsp] + mov r15,rax + xor r12,r10 + shrd r14,r14,6 + xor r15,rbx + add r11,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,rax + add r11,r13 + xor rdi,rbx + shrd r14,r14,28 + add rdx,r11 + add r11,rdi + mov r13,rdx + add r14,r11 + shrd r13,r13,23 + mov r11,r14 + mov r12,r8 + shrd r14,r14,5 + xor r13,rdx + xor r12,r9 + shrd r13,r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + add r10,QWORD[8+rsp] + mov rdi,r11 + xor r12,r9 + shrd r14,r14,6 + xor rdi,rax + add r10,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + shrd r14,r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + shrd r13,r13,23 + mov r10,r14 + mov r12,rdx + shrd r14,r14,5 + xor r13,rcx + xor r12,r8 + shrd r13,r13,4 + xor r14,r10 + and r12,rcx + xor r13,rcx + add r9,QWORD[16+rsp] + mov r15,r10 + xor r12,r8 + shrd r14,r14,6 + xor r15,r11 + add r9,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,r10 + add r9,r13 + xor rdi,r11 + shrd r14,r14,28 + add rbx,r9 + add r9,rdi + mov r13,rbx + add r14,r9 + shrd r13,r13,23 + mov r9,r14 + mov r12,rcx + shrd r14,r14,5 + xor r13,rbx + xor r12,rdx + shrd r13,r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + add r8,QWORD[24+rsp] + mov rdi,r9 + xor r12,rdx + shrd r14,r14,6 + xor rdi,r10 + add r8,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + shrd r14,r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + shrd r13,r13,23 + mov r8,r14 + mov r12,rbx + shrd r14,r14,5 + xor r13,rax + xor r12,rcx + shrd r13,r13,4 + xor r14,r8 + and r12,rax + xor r13,rax + add rdx,QWORD[32+rsp] + mov r15,r8 + xor r12,rcx + shrd r14,r14,6 + xor r15,r9 + add rdx,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,r8 + add rdx,r13 + xor rdi,r9 + shrd r14,r14,28 + add r11,rdx + add rdx,rdi + mov r13,r11 + add r14,rdx + shrd r13,r13,23 + mov rdx,r14 + mov r12,rax + shrd r14,r14,5 + xor r13,r11 + xor r12,rbx + shrd r13,r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + add rcx,QWORD[40+rsp] + mov rdi,rdx + xor r12,rbx + shrd r14,r14,6 + xor rdi,r8 + add rcx,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + shrd r14,r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + shrd r13,r13,23 + mov rcx,r14 + mov r12,r11 + shrd r14,r14,5 + xor r13,r10 + xor r12,rax + shrd r13,r13,4 + xor r14,rcx + and r12,r10 + xor r13,r10 + add rbx,QWORD[48+rsp] + mov r15,rcx + xor r12,rax + shrd r14,r14,6 + xor r15,rdx + add rbx,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,rcx + add rbx,r13 + xor rdi,rdx + shrd r14,r14,28 + add r9,rbx + add rbx,rdi + mov r13,r9 + add r14,rbx + shrd r13,r13,23 + mov rbx,r14 + mov r12,r10 + shrd r14,r14,5 + xor r13,r9 + xor r12,r11 + shrd r13,r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + add rax,QWORD[56+rsp] + mov rdi,rbx + xor r12,r11 + shrd r14,r14,6 + xor rdi,rcx + add rax,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + shrd r14,r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + shrd r13,r13,23 + mov rax,r14 + mov r12,r9 + shrd r14,r14,5 + xor r13,r8 + xor r12,r10 + shrd r13,r13,4 + xor r14,rax + and r12,r8 + xor r13,r8 + add r11,QWORD[64+rsp] + mov r15,rax + xor r12,r10 + shrd r14,r14,6 + xor r15,rbx + add r11,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,rax + add r11,r13 + xor rdi,rbx + shrd r14,r14,28 + add rdx,r11 + add r11,rdi + mov r13,rdx + add r14,r11 + shrd r13,r13,23 + mov r11,r14 + mov r12,r8 + shrd r14,r14,5 + xor r13,rdx + xor r12,r9 + shrd r13,r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + add r10,QWORD[72+rsp] + mov rdi,r11 + xor r12,r9 + shrd r14,r14,6 + xor rdi,rax + add r10,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + shrd r14,r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + shrd r13,r13,23 + mov r10,r14 + mov r12,rdx + shrd r14,r14,5 + xor r13,rcx + xor r12,r8 + shrd r13,r13,4 + xor r14,r10 + and r12,rcx + xor r13,rcx + add r9,QWORD[80+rsp] + mov r15,r10 + xor r12,r8 + shrd r14,r14,6 + xor r15,r11 + add r9,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,r10 + add r9,r13 + xor rdi,r11 + shrd r14,r14,28 + add rbx,r9 + add r9,rdi + mov r13,rbx + add r14,r9 + shrd r13,r13,23 + mov r9,r14 + mov r12,rcx + shrd r14,r14,5 + xor r13,rbx + xor r12,rdx + shrd r13,r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + add r8,QWORD[88+rsp] + mov rdi,r9 + xor r12,rdx + shrd r14,r14,6 + xor rdi,r10 + add r8,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + shrd r14,r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + shrd r13,r13,23 + mov r8,r14 + mov r12,rbx + shrd r14,r14,5 + xor r13,rax + xor r12,rcx + shrd r13,r13,4 + xor r14,r8 + and r12,rax + xor r13,rax + add rdx,QWORD[96+rsp] + mov r15,r8 + xor r12,rcx + shrd r14,r14,6 + xor r15,r9 + add rdx,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,r8 + add rdx,r13 + xor rdi,r9 + shrd r14,r14,28 + add r11,rdx + add rdx,rdi + mov r13,r11 + add r14,rdx + shrd r13,r13,23 + mov rdx,r14 + mov r12,rax + shrd r14,r14,5 + xor r13,r11 + xor r12,rbx + shrd r13,r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + add rcx,QWORD[104+rsp] + mov rdi,rdx + xor r12,rbx + shrd r14,r14,6 + xor rdi,r8 + add rcx,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + shrd r14,r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + shrd r13,r13,23 + mov rcx,r14 + mov r12,r11 + shrd r14,r14,5 + xor r13,r10 + xor r12,rax + shrd r13,r13,4 + xor r14,rcx + and r12,r10 + xor r13,r10 + add rbx,QWORD[112+rsp] + mov r15,rcx + xor r12,rax + shrd r14,r14,6 + xor r15,rdx + add rbx,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,rcx + add rbx,r13 + xor rdi,rdx + shrd r14,r14,28 + add r9,rbx + add rbx,rdi + mov r13,r9 + add r14,rbx + shrd r13,r13,23 + mov rbx,r14 + mov r12,r10 + shrd r14,r14,5 + xor r13,r9 + xor r12,r11 + shrd r13,r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + add rax,QWORD[120+rsp] + mov rdi,rbx + xor r12,r11 + shrd r14,r14,6 + xor rdi,rcx + add rax,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + shrd r14,r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + mov rdi,QWORD[((128+0))+rsp] + mov rax,r14 + + add rax,QWORD[rdi] + lea rsi,[128+rsi] + add rbx,QWORD[8+rdi] + add rcx,QWORD[16+rdi] + add rdx,QWORD[24+rdi] + add r8,QWORD[32+rdi] + add r9,QWORD[40+rdi] + add r10,QWORD[48+rdi] + add r11,QWORD[56+rdi] + + cmp rsi,QWORD[((128+16))+rsp] + + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rcx + mov QWORD[24+rdi],rdx + mov QWORD[32+rdi],r8 + mov QWORD[40+rdi],r9 + mov QWORD[48+rdi],r10 + mov QWORD[56+rdi],r11 + jb NEAR $L$loop_avx + + mov rsi,QWORD[((128+24))+rsp] + vzeroupper + movaps xmm6,XMMWORD[((128+32))+rsp] + movaps xmm7,XMMWORD[((128+48))+rsp] + movaps xmm8,XMMWORD[((128+64))+rsp] + movaps xmm9,XMMWORD[((128+80))+rsp] + movaps xmm10,XMMWORD[((128+96))+rsp] + movaps xmm11,XMMWORD[((128+112))+rsp] + mov r15,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r13,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + mov rbp,QWORD[32+rsi] + mov rbx,QWORD[40+rsi] + lea rsp,[48+rsi] +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_sha512_block_data_order_avx: EXTERN __imp_RtlVirtualUnwind ALIGN 16 @@ -1903,9 +4190,23 @@ DD $L$SEH_begin_sha512_block_data_order wrt ..imagebase DD $L$SEH_end_sha512_block_data_order wrt ..imagebase DD $L$SEH_info_sha512_block_data_order wrt ..imagebase + DD $L$SEH_begin_sha512_block_data_order_xop wrt ..imagebase + DD $L$SEH_end_sha512_block_data_order_xop wrt ..imagebase + DD $L$SEH_info_sha512_block_data_order_xop wrt ..imagebase + DD $L$SEH_begin_sha512_block_data_order_avx wrt ..imagebase + DD $L$SEH_end_sha512_block_data_order_avx wrt ..imagebase + DD $L$SEH_info_sha512_block_data_order_avx wrt ..imagebase section .xdata rdata align=8 ALIGN 8 $L$SEH_info_sha512_block_data_order: DB 9,0,0,0 DD se_handler wrt ..imagebase DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase +$L$SEH_info_sha512_block_data_order_xop: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_xop wrt ..imagebase,$L$epilogue_xop wrt ..imagebase +$L$SEH_info_sha512_block_data_order_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
diff --git a/third_party/closure_compiler/externs/chrome_extensions.js b/third_party/closure_compiler/externs/chrome_extensions.js index 1f7f6651..787e808 100644 --- a/third_party/closure_compiler/externs/chrome_extensions.js +++ b/third_party/closure_compiler/externs/chrome_extensions.js
@@ -459,6 +459,14 @@ chrome.app.window.AppWindow.prototype.contentWindow; +/** @type {!chrome.app.window.Bounds} */ +chrome.app.window.AppWindow.prototype.innerBounds; + + +/** @type {!chrome.app.window.Bounds} */ +chrome.app.window.AppWindow.prototype.outerBounds; + + /** * @typedef {?{ * left: number,
diff --git a/tools/checkbins/checkbins.py b/tools/checkbins/checkbins.py index 213f30a..9531f24 100755 --- a/tools/checkbins/checkbins.py +++ b/tools/checkbins/checkbins.py
@@ -10,6 +10,7 @@ /NXCOMPAT, /DYNAMICBASE and /SAFESEH. """ +import json import os import optparse import sys @@ -44,6 +45,8 @@ pe_total = 0 pe_passed = 0 + failures = [] + for file in os.listdir(directory): path = os.path.abspath(os.path.join(directory, file)) if not IsPEFile(path): @@ -103,8 +106,15 @@ # Update tally. if success: pe_passed = pe_passed + 1 + else: + failures.append(path) print "Result: %d files found, %d files passed" % (pe_total, pe_passed) + + if options.json: + with open(options.json, 'w') as f: + json.dump(failures, f) + if pe_passed != pe_total: sys.exit(1) @@ -113,6 +123,7 @@ option_parser = optparse.OptionParser(usage=usage) option_parser.add_option("-v", "--verbose", action="store_true", default=False, help="Print debug logging") + option_parser.add_option("--json", help="Path to JSON output file") options, args = option_parser.parse_args() if not args: option_parser.print_help()
diff --git a/tools/mb/mb.py b/tools/mb/mb.py index b7333451..a3e8e37 100755 --- a/tools/mb/mb.py +++ b/tools/mb/mb.py
@@ -620,7 +620,8 @@ def RunGYPAnalyze(self, vals): output_dir = self.ParseGYPConfigPath(self.args.path[0]) if self.args.verbose: - inp = self.ReadInputJSON(['files']) + inp = self.ReadInputJSON(['files', 'test_targets', + 'additional_compile_targets']) self.Print() self.Print('analyze input:') self.PrintJSON(inp) @@ -773,27 +774,20 @@ if ret: return ret - # TODO(dpranke): add 'test_targets' and 'additional_compile_targets' - # as required keys once the recipe has been converted over. - # See crbug.com/552146. - inp = self.ReadInputJSON(['files']) + inp = self.ReadInputJSON(['files', 'test_targets', + 'additional_compile_targets']) if self.args.verbose: self.Print() self.Print('analyze input:') self.PrintJSON(inp) self.Print() - use_new_logic = ('test_targets' in inp and - 'additional_compile_targets' in inp) - if use_new_logic: - # TODO(crbug.com/555273) - currently GN treats targets and - # additional_compile_targets identically since we can't tell the - # difference between a target that is a group in GN and one that isn't. - # We should eventually fix this and treat the two types differently. - targets = (set(inp['test_targets']) | - set(inp['additional_compile_targets'])) - else: - targets = set(inp['targets']) + # TODO(crbug.com/555273) - currently GN treats targets and + # additional_compile_targets identically since we can't tell the + # difference between a target that is a group in GN and one that isn't. + # We should eventually fix this and treat the two types differently. + targets = (set(inp['test_targets']) | + set(inp['additional_compile_targets'])) output_path = self.args.output_path[0] @@ -802,14 +796,11 @@ # since we can't deal with it yet. if (any(f.endswith('.gn') or f.endswith('.gni') for f in inp['files']) or 'all' in targets): - if use_new_logic: - self.WriteJSON({ - 'status': 'Found dependency (all)', - 'compile_targets': sorted(targets), - 'test_targets': sorted(targets & set(inp['test_targets'])), - }, output_path) - else: - self.WriteJSON({'status': 'Found dependency (all)'}, output_path) + self.WriteJSON({ + 'status': 'Found dependency (all)', + 'compile_targets': sorted(targets), + 'test_targets': sorted(targets & set(inp['test_targets'])), + }, output_path) return 0 # This shouldn't normally happen, but could due to unusual race conditions, @@ -817,18 +808,11 @@ # the patch has landed. if not inp['files']: self.Print('Warning: No files modified in patch, bailing out early.') - if use_new_logic: - self.WriteJSON({ - 'status': 'No dependency', - 'compile_targets': [], - 'test_targets': [], - }, output_path) - else: - self.WriteJSON({ - 'status': 'No dependency', - 'targets': [], - 'build_targets': [], - }, output_path) + self.WriteJSON({ + 'status': 'No dependency', + 'compile_targets': [], + 'test_targets': [], + }, output_path) return 0 ret = 0 @@ -869,32 +853,18 @@ self.RemoveFile(response_file.name) if matching_targets: - if use_new_logic: - self.WriteJSON({ - 'status': 'Found dependency', - 'compile_targets': sorted(matching_targets), - 'test_targets': sorted(matching_targets & - set(inp['test_targets'])), - }, output_path) - else: - self.WriteJSON({ + self.WriteJSON({ 'status': 'Found dependency', - 'targets': sorted(matching_targets), - 'build_targets': sorted(matching_targets), - }, output_path) + 'compile_targets': sorted(matching_targets), + 'test_targets': sorted(matching_targets & + set(inp['test_targets'])), + }, output_path) else: - if use_new_logic: - self.WriteJSON({ - 'status': 'No dependency', - 'compile_targets': [], - 'test_targets': [], - }, output_path) - else: - self.WriteJSON({ - 'status': 'No dependency', - 'targets': [], - 'build_targets': [], - }, output_path) + self.WriteJSON({ + 'status': 'No dependency', + 'compile_targets': [], + 'test_targets': [], + }, output_path) if self.args.verbose: outp = json.loads(self.ReadFile(output_path))
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 97f6884..1888424 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -55,7 +55,7 @@ 'gyp_release_bot_arm': ['gyp', 'release_bot', 'arm', 'crosscompile'], 'gyp_release_trybot': ['gyp', 'release_trybot'], 'gyp_release_trybot_x64': ['gyp', 'release_trybot', 'x64'], - 'libfuzzer_upload_bot': ['gn', 'release', 'libfuzzer', 'asan'], + 'libfuzzer_upload_bot': ['gn', 'release', 'libfuzzer', 'asan', 'proprietary_codecs'], # This is just for completeness; any bot that uses this config should never actually run MB. 'none': ['none'], @@ -292,6 +292,11 @@ 'gyp_defines': 'branding=Chrome buildtype=Official', }, + 'proprietary_codecs': { + 'gn_args': 'proprietary_codecs=1', + 'gyp_defines': 'proprietary_codecs=1', + }, + 'release': { 'gn_args': 'is_debug=false', },
diff --git a/tools/mb/mb_unittest.py b/tools/mb/mb_unittest.py index 1a0f901f..68c5575 100755 --- a/tools/mb/mb_unittest.py +++ b/tools/mb/mb_unittest.py
@@ -204,25 +204,6 @@ def test_gn_analyze(self): files = {'/tmp/in.json': """{\ "files": ["foo/foo_unittest.cc"], - "targets": ["foo_unittests", "bar_unittests"] - }"""} - - mbw = self.fake_mbw(files) - mbw.Call = lambda cmd, env=None, buffer_output=True: ( - 0, 'out/Default/foo_unittests\n', '') - - self.check(['analyze', '-c', 'gn_debug', '//out/Default', - '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) - out = json.loads(mbw.files['/tmp/out.json']) - self.assertEqual(out, { - 'status': 'Found dependency', - 'targets': ['foo_unittests'], - 'build_targets': ['foo_unittests'] - }) - - def test_gn_analyze_new_logic(self): - files = {'/tmp/in.json': """{\ - "files": ["foo/foo_unittest.cc"], "test_targets": ["foo_unittests", "bar_unittests"], "additional_compile_targets": [] }"""} @@ -243,21 +224,6 @@ def test_gn_analyze_all(self): files = {'/tmp/in.json': """{\ "files": ["foo/foo_unittest.cc"], - "targets": ["all", "bar_unittests"] - }"""} - mbw = self.fake_mbw(files) - mbw.Call = lambda cmd, env=None, buffer_output=True: ( - 0, 'out/Default/foo_unittests\n', '') - self.check(['analyze', '-c', 'gn_debug', '//out/Default', - '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) - out = json.loads(mbw.files['/tmp/out.json']) - self.assertEqual(out, { - 'status': 'Found dependency (all)', - }) - - def test_gn_analyze_all_new_logic(self): - files = {'/tmp/in.json': """{\ - "files": ["foo/foo_unittest.cc"], "test_targets": ["bar_unittests"], "additional_compile_targets": ["all"] }"""} @@ -276,27 +242,6 @@ def test_gn_analyze_missing_file(self): files = {'/tmp/in.json': """{\ "files": ["foo/foo_unittest.cc"], - "targets": ["bar_unittests"] - }"""} - mbw = self.fake_mbw(files) - mbw.cmds = [ - (0, '', ''), - (1, 'The input matches no targets, configs, or files\n', ''), - (1, 'The input matches no targets, configs, or files\n', ''), - ] - - self.check(['analyze', '-c', 'gn_debug', '//out/Default', - '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) - out = json.loads(mbw.files['/tmp/out.json']) - self.assertEqual(out, { - 'build_targets': [], - 'targets': [], - 'status': 'No dependency', - }) - - def test_gn_analyze_missing_file_new_logic(self): - files = {'/tmp/in.json': """{\ - "files": ["foo/foo_unittest.cc"], "test_targets": ["bar_unittests"], "additional_compile_targets": [] }"""}
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 9538ada..4132996a12 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -5199,6 +5199,14 @@ </summary> </histogram> +<histogram name="ContextMenu.SaveLinkType" enum="ContextMenuSaveLinkType"> + <owner>qinmin@chromium.org</owner> + <summary> + Type of the url when user saves the content through the save link context + menu. + </summary> +</histogram> + <histogram name="ContextMenu.SelectedOption" enum="ContextMenuOption"> <owner>newt@chromium.org</owner> <summary>The option that the user selected from a context menu.</summary> @@ -56413,6 +56421,18 @@ <int value="19" label="Share image"/> </enum> +<enum name="ContextMenuSaveLinkType" type="int"> + <summary> + The content type when user chooses save link context menu option + </summary> + <int value="0" label="Unkown"/> + <int value="1" label="Text"/> + <int value="2" label="Image"/> + <int value="3" label="Audio"/> + <int value="4" label="Video"/> + <int value="5" label="Pdf"/> +</enum> + <enum name="ContextualSearchIconSpriteAnimated" type="int"> <int value="0" label="Animated, seen, from tap"/> <int value="1" label="Animated, not seen, from tap"/>
diff --git a/tools/telemetry/telemetry/core/android_platform.py b/tools/telemetry/telemetry/core/android_platform.py index 5806f394..f38c797a 100644 --- a/tools/telemetry/telemetry/core/android_platform.py +++ b/tools/telemetry/telemetry/core/android_platform.py
@@ -19,6 +19,9 @@ def android_action_runner(self): return self._android_action_runner + def IsSvelte(self): + return self._platform_backend.IsSvelte() + def LaunchAndroidApplication(self, start_intent, is_app_ready_predicate=None, app_has_webviews=True): """Launches an Android application given the intent.
diff --git a/tools/telemetry/telemetry/internal/platform/android_platform_backend.py b/tools/telemetry/telemetry/internal/platform/android_platform_backend.py index 4b42957..bbd9f50 100644 --- a/tools/telemetry/telemetry/internal/platform/android_platform_backend.py +++ b/tools/telemetry/telemetry/internal/platform/android_platform_backend.py
@@ -214,6 +214,14 @@ def device(self): return self._device + def IsSvelte(self): + try: + self._device.RunShellCommand( + 'getprop ro.build.description | grep svelte', check_return=True) + return True + except device_errors.AdbCommandFailedError: + return False + def IsDisplayTracingSupported(self): return bool(self.GetOSVersionName() >= 'J')
diff --git a/tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py b/tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py index 5fae513f..7030e82 100644 --- a/tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py +++ b/tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py
@@ -12,6 +12,7 @@ import mock from devil.android import battery_utils +from devil.android import device_errors from devil.android import device_utils class AndroidPlatformBackendTest(unittest.TestCase): @@ -50,6 +51,22 @@ self.device_patcher.stop() @decorators.Disabled('chromeos') + def testIsSvelte(self): + with mock.patch('devil.android.device_utils.DeviceUtils.RunShellCommand', + return_value=0): + backend = android_platform_backend.AndroidPlatformBackend( + android_device.AndroidDevice('12345'), self._options) + self.assertTrue(backend.IsSvelte()) + + @decorators.Disabled('chromeos') + def testIsNotSvelte(self): + with mock.patch('devil.android.device_utils.DeviceUtils.RunShellCommand', + side_effect=device_errors.AdbCommandFailedError('m', 'n')): + backend = android_platform_backend.AndroidPlatformBackend( + android_device.AndroidDevice('12345'), self._options) + self.assertFalse(backend.IsSvelte()) + + @decorators.Disabled('chromeos') def testGetCpuStats(self): proc_stat_content = ( '7702 (.android.chrome) S 167 167 0 0 -1 1077936448 '
diff --git a/tools/valgrind/memcheck/suppressions.txt b/tools/valgrind/memcheck/suppressions.txt index b794982..3057062b 100644 --- a/tools/valgrind/memcheck/suppressions.txt +++ b/tools/valgrind/memcheck/suppressions.txt
@@ -3427,3 +3427,13 @@ fun:vp9_pick_inter_mode fun:nonrd_pick_sb_modes } +{ + bug_558179 + Memcheck:Leak + fun:_Znw* + fun:_ZN7content27ServiceWorkerContextWrapperC1EPNS_14BrowserContextE + fun:_ZN7content20StoragePartitionImpl6CreateEPNS_14BrowserContextEbRKN4base8FilePathE + fun:_ZN7content23StoragePartitionImplMap3GetERKSsS2_b + fun:_ZN7content12_GLOBAL__N_129GetStoragePartitionFromConfigEPNS_14BrowserContextERKSsS4_b + fun:_ZN7content14BrowserContext26GetStoragePartitionForSiteEPS0_RK4GURL +}
diff --git a/ui/accessibility/ax_node_data.cc b/ui/accessibility/ax_node_data.cc index 194880c..c7a50051 100644 --- a/ui/accessibility/ax_node_data.cc +++ b/ui/accessibility/ax_node_data.cc
@@ -4,6 +4,7 @@ #include "ui/accessibility/ax_node_data.h" +#include <algorithm> #include <set> #include "base/strings/string_number_conversions.h"
diff --git a/ui/base/x/x11_menu_list.cc b/ui/base/x/x11_menu_list.cc index 08f2c7d..a7c2fda 100644 --- a/ui/base/x/x11_menu_list.cc +++ b/ui/base/x/x11_menu_list.cc
@@ -4,6 +4,8 @@ #include "ui/base/x/x11_menu_list.h" +#include <algorithm> + #include "base/memory/singleton.h" #include "ui/base/x/x11_util.h"
diff --git a/ui/events/gesture_detection/gesture_detector.cc b/ui/events/gesture_detection/gesture_detector.cc index ec5e5ae8..0dc4707 100644 --- a/ui/events/gesture_detection/gesture_detector.cc +++ b/ui/events/gesture_detection/gesture_detector.cc
@@ -7,6 +7,7 @@ #include "ui/events/gesture_detection/gesture_detector.h" +#include <algorithm> #include <cmath> #include "base/timer/timer.h"
diff --git a/ui/events/gesture_detection/scale_gesture_detector.cc b/ui/events/gesture_detection/scale_gesture_detector.cc index 7793aab4..5fc55eb0 100644 --- a/ui/events/gesture_detection/scale_gesture_detector.cc +++ b/ui/events/gesture_detection/scale_gesture_detector.cc
@@ -6,6 +6,7 @@ #include <limits.h> +#include <algorithm> #include <cmath> #include "base/logging.h"
diff --git a/ui/events/gesture_detection/snap_scroll_controller.cc b/ui/events/gesture_detection/snap_scroll_controller.cc index 9ecf6b108..b50971d3 100644 --- a/ui/events/gesture_detection/snap_scroll_controller.cc +++ b/ui/events/gesture_detection/snap_scroll_controller.cc
@@ -4,6 +4,7 @@ #include "ui/events/gesture_detection/snap_scroll_controller.h" +#include <algorithm> #include <cmath> #include "ui/events/gesture_detection/motion_event.h"
diff --git a/ui/file_manager/video_player/js/video_player.js b/ui/file_manager/video_player/js/video_player.js index 94c3367..544abfb3 100644 --- a/ui/file_manager/video_player/js/video_player.js +++ b/ui/file_manager/video_player/js/video_player.js
@@ -495,9 +495,10 @@ } var appWindow = chrome.app.window.current(); - appWindow.resizeTo(newWidth, newHeight); - appWindow.moveTo(oldLeft - (newWidth - oldWidth) / 2, - oldTop - (newHeight - oldHeight) / 2); + appWindow.innerBounds.width = Math.round(newWidth); + appWindow.innerBounds.height = Math.round(newHeight); + appWindow.outerBounds.left = Math.round(oldLeft - (newWidth - oldWidth) / 2); + appWindow.outerBounds.top = Math.round(oldTop - (newHeight - oldHeight) / 2); appWindow.show(); this.videoElement_.play();
diff --git a/ui/gfx/animation/linear_animation.cc b/ui/gfx/animation/linear_animation.cc index 0c9fa63..dd114a0 100644 --- a/ui/gfx/animation/linear_animation.cc +++ b/ui/gfx/animation/linear_animation.cc
@@ -6,6 +6,8 @@ #include <math.h> +#include <algorithm> + #include "ui/gfx/animation/animation_container.h" #include "ui/gfx/animation/animation_delegate.h"
diff --git a/ui/gfx/gdi_util.cc b/ui/gfx/gdi_util.cc index 09c4b4bb..1e6b71d 100644 --- a/ui/gfx/gdi_util.cc +++ b/ui/gfx/gdi_util.cc
@@ -4,6 +4,8 @@ #include "ui/gfx/gdi_util.h" +#include <algorithm> + #include "base/logging.h" #include "base/memory/scoped_ptr.h"
diff --git a/ui/gfx/image/image_util.cc b/ui/gfx/image/image_util.cc index 89a3f8c0..a9ed68c5 100644 --- a/ui/gfx/image/image_util.cc +++ b/ui/gfx/image/image_util.cc
@@ -4,6 +4,8 @@ #include "ui/gfx/image/image_util.h" +#include <algorithm> + #include "base/memory/scoped_ptr.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/codec/jpeg_codec.h"
diff --git a/ui/gl/gl_surface_osmesa.cc b/ui/gl/gl_surface_osmesa.cc index f488274..a13b506 100644 --- a/ui/gl/gl_surface_osmesa.cc +++ b/ui/gl/gl_surface_osmesa.cc
@@ -2,12 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "ui/gl/gl_surface_osmesa.h" + +#include <algorithm> + #include "base/logging.h" #include "base/numerics/safe_math.h" #include "third_party/mesa/src/include/GL/osmesa.h" #include "ui/gl/gl_bindings.h" #include "ui/gl/gl_context.h" -#include "ui/gl/gl_surface_osmesa.h" #include "ui/gl/scoped_make_current.h" namespace gfx {
diff --git a/ui/gl/gpu_timing.h b/ui/gl/gpu_timing.h index 5d72d7c..4082b91 100644 --- a/ui/gl/gpu_timing.h +++ b/ui/gl/gpu_timing.h
@@ -5,6 +5,7 @@ #ifndef UI_GL_GPU_TIMING_H_ #define UI_GL_GPU_TIMING_H_ +#include <memory> #include <queue> #include "base/callback.h" @@ -58,7 +59,7 @@ }; protected: - friend struct base::DefaultDeleter<GPUTiming>; + friend std::default_delete<GPUTiming>; friend class GLContextReal; static GPUTiming* CreateGPUTiming(GLContextReal* context);
diff --git a/ui/touch_selection/touch_handle.cc b/ui/touch_selection/touch_handle.cc index 0fe3612e..ad81711 100644 --- a/ui/touch_selection/touch_handle.cc +++ b/ui/touch_selection/touch_handle.cc
@@ -4,6 +4,7 @@ #include "ui/touch_selection/touch_handle.h" +#include <algorithm> #include <cmath> namespace ui {
diff --git a/ui/views/view.cc b/ui/views/view.cc index 0fc75597..8ee73c0 100644 --- a/ui/views/view.cc +++ b/ui/views/view.cc
@@ -1887,7 +1887,7 @@ OnBoundsChanged(previous_bounds); - if (previous_bounds.size() != size()) { + if (needs_layout_ || previous_bounds.size() != size()) { needs_layout_ = false; Layout(); }
diff --git a/ui/views/view_unittest.cc b/ui/views/view_unittest.cc index 75fa552..8e42476 100644 --- a/ui/views/view_unittest.cc +++ b/ui/views/view_unittest.cc
@@ -202,6 +202,7 @@ public: TestView() : View(), + did_layout_(false), delete_on_pressed_(false), did_paint_(false), native_theme_(NULL), @@ -211,6 +212,7 @@ // Reset all test state void Reset() { did_change_bounds_ = false; + did_layout_ = false; last_mouse_event_type_ = 0; location_.SetPoint(0, 0); received_mouse_enter_ = false; @@ -239,6 +241,11 @@ return can_process_events_within_subtree_; } + void Layout() override { + did_layout_ = true; + View::Layout(); + } + void OnBoundsChanged(const gfx::Rect& previous_bounds) override; bool OnMousePressed(const ui::MouseEvent& event) override; bool OnMouseDragged(const ui::MouseEvent& event) override; @@ -256,6 +263,9 @@ bool did_change_bounds_; gfx::Rect new_bounds_; + // Layout. + bool did_layout_; + // MouseEvent. int last_mouse_event_type_; gfx::Point location_; @@ -278,6 +288,35 @@ }; //////////////////////////////////////////////////////////////////////////////// +// Layout +//////////////////////////////////////////////////////////////////////////////// + +TEST_F(ViewTest, LayoutCalledInvalidateAndOriginChanges) { + TestView parent; + TestView* child = new TestView; + gfx::Rect parent_rect(0, 0, 100, 100); + parent.SetBoundsRect(parent_rect); + + parent.Reset(); + // |AddChildView| invalidates parent's layout. + parent.AddChildView(child); + // Change rect so that only rect's origin is affected. + parent.SetBoundsRect(parent_rect + gfx::Vector2d(10, 0)); + + EXPECT_TRUE(parent.did_layout_); + + // After child layout is invalidated, parent and child must be laid out + // during parent->BoundsChanged(...) call. + parent.Reset(); + child->Reset(); + + child->InvalidateLayout(); + parent.SetBoundsRect(parent_rect + gfx::Vector2d(20, 0)); + EXPECT_TRUE(parent.did_layout_); + EXPECT_TRUE(child->did_layout_); +} + +//////////////////////////////////////////////////////////////////////////////// // OnBoundsChanged ////////////////////////////////////////////////////////////////////////////////