DFG should not emit PutByVal hole case unless it has to
https://bugs.webkit.org/show_bug.cgi?id=97080

Reviewed by Geoffrey Garen.

This causes us to generate less code for typical PutByVal's. But if profiling tells us
that the hole case is being hit, we generate the same code as we would have generated
before. This seems like a slight speed-up across the board.

* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::store8):
(MacroAssemblerARMv7):
* assembler/MacroAssemblerX86.h:
(MacroAssemblerX86):
(JSC::MacroAssemblerX86::store8):
* assembler/MacroAssemblerX86_64.h:
(MacroAssemblerX86_64):
(JSC::MacroAssemblerX86_64::store8):
* assembler/X86Assembler.h:
(X86Assembler):
(JSC::X86Assembler::movb_i8m):
* bytecode/ArrayProfile.h:
(JSC::ArrayProfile::ArrayProfile):
(JSC::ArrayProfile::addressOfMayStoreToHole):
(JSC::ArrayProfile::mayStoreToHole):
(ArrayProfile):
* dfg/DFGArrayMode.cpp:
(JSC::DFG::fromObserved):
(JSC::DFG::modeAlreadyChecked):
(JSC::DFG::modeToString):
* dfg/DFGArrayMode.h:
(DFG):
(JSC::DFG::mayStoreToHole):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* jit/JIT.h:
(JIT):
* jit/JITInlineMethods.h:
(JSC::JIT::emitArrayProfileStoreToHoleSpecialCase):
(JSC):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_put_by_val):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_put_by_val):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129045 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove RenderIFrame::updateLogicalHeight and RenderIFrame::updateLogicalWidth
https://bugs.webkit.org/show_bug.cgi?id=97049

Reviewed by Ojan Vafai.

This is an incremental step in making updateLogicalHeight non-virtual so it's
possible to call computeLogicalHeight on any RenderBox and get the right
version of the function.

The code in RenderIFrame::layout was calling flattenFrame(), which would
query it's bounding box size.  Since we hadn't done a layout yet, the size
is unknown.  The fix is to only call flattenFrame() after calling
updateLogicalWidth and updateLogicalHeight. We can then fixup the size of
the iframe.

No new tests, existing tests in fast/frames/flattening should continue to pass.

* rendering/RenderIFrame.cpp:
(WebCore::RenderIFrame::layout):
* rendering/RenderIFrame.h:
(RenderIFrame):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129046 268f45cc-cd09-0410-ab3c-d52691b4dbfc
nrwt: replace TEXT, AUDIO, and IMAGE+TEXT with FAIL
https://bugs.webkit.org/show_bug.cgi?id=96845

Reviewed by Ojan Vafai.

In preparation for the new TestExpectations syntax, we replace
all TEXT, IMAGE+TEXT, and AUDIO failures with FAIL. This will
make switching to the new syntax lossless (i.e., we lose
information now, not then).

Tools:

Note that we can still parse in results.json files that have the
old data for backwards compatibility.

* Scripts/webkitpy/common/net/resultsjsonparser.py:
(JSONTestResult._failure_types_from_actual_result):
* Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
(ResultsJSONParserTest):
(test_basic):
* Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
(ResultSummaryTest.test_summarized_results_wontfix):
* Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
(JSONLayoutResultsGenerator):
* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectations):
(TestExpectations.remove_pixel_failures):
(TestExpectations.has_pixel_failures):
(TestExpectations.suffixes_for_expectations):
(TestExpectations.get_rebaselining_failures):
(TestExpectations.remove_configuration_from_test):
* Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
(assert_bad_expectations):
(BasicTests):
(BasicTests.test_basic):
(MiscTests):
(MiscTests.test_multiple_results):
(MiscTests.test_result_was_expected):
(MiscTests.test_remove_pixel_failures):
(MiscTests.test_suffixes_for_expectations):
(test_get_expectations_string):
(test_parse_warning):
(test_error_on_different_platform):
(test_error_on_different_build_type):
(test_overrides):
(test_overrides__directory):
(test_overrides__duplicate):
(test_pixel_tests_flag):
(test_more_specific_override_resets_skip):
(SkippedTests.test_skipped_file_overrides_expectations):
(SkippedTests.test_skipped_dir_overrides_expectations):
(SkippedTests.test_skipped_file_overrides_overrides):
(SkippedTests.test_skipped_dir_overrides_overrides):
(ExpectationSyntaxTests.test_missing_colon):
(ExpectationSyntaxTests.test_too_many_equals_signs):
(SemanticTests.test_bug_format):
(SemanticTests.test_bad_bugid):
(SemanticTests.test_missing_bugid):
(SemanticTests.test_rebaseline):
(test_missing_file):
(test_more_modifiers):
(test_order_in_file):
(test_macro_overrides):
(RemoveConfigurationsTest.test_remove):
(test_remove_line):
(RebaseliningTest.test_remove):
(TestExpectationSerializationTests.test_serialize_parsed_expectations):
* Scripts/webkitpy/layout_tests/models/test_failures.py:
(determine_result_type):
* Scripts/webkitpy/layout_tests/port/port_testcase.py:
(test_test_expectations):
* Scripts/webkitpy/layout_tests/port/test.py:
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
(MainTest.test_missing_and_unexpected_results):
(MainTest.test_retrying_and_flaky_tests):
* Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
(TestExpectationsTestCase.test_valid_expectations):
* Scripts/webkitpy/tool/commands/queries_unittest.py:
(PrintExpectationsTest.test_basic):
(PrintExpectationsTest.test_multiple):
(PrintExpectationsTest.test_full):
(PrintExpectationsTest.test_exclude):
(PrintExpectationsTest.test_csv):
* Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
(test_rebaseline_does_not_include_overrides):
(test_overrides_are_included_correctly):

LayoutTests:

* platform/chromium-android/TestExpectations:
* platform/chromium/TestExpectations:
* platform/efl-wk1/TestExpectations:
* platform/efl-wk2/TestExpectations:
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac-wk2/TestExpectations:
* platform/mac/TestExpectations:
* platform/qt-4.8/TestExpectations:
* platform/qt-arm/TestExpectations:
* platform/qt-mac/TestExpectations:
* platform/qt/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Disable some failing IDB tests
https://bugs.webkit.org/show_bug.cgi?id=97135

Reviewed by Nate Chapin.

They were broken in r129037.

* tests/IDBDatabaseBackendTest.cpp:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129048 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Warning in SandboxExtension.h if WEB_PROCESS_SANDBOX is not enabled
https://bugs.webkit.org/show_bug.cgi?id=97137

Reviewed by Benjamin Poulain.

m_size is only used when WEB_PROCESS_SANDBOX is enabled, so move its declaration inside
#if ENABLE(WEB_PROCESS_SANDBOX).

* Shared/SandboxExtension.h:
(HandleArray):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129049 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Chromium] HarfBuzzShaper should take into account combining characters
https://bugs.webkit.org/show_bug.cgi?id=97069

Reviewed by Tony Chang.

When dividing a text run into HarfBuzzRuns, try to find suitable SimpleFontData for
combining character sequence if there are one or more mark characters are followed.
If there is no combined glyphs in the font, use fallback font for mark characters.

No new tests.
In platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html,
U+0947 (devanagari vowel sign e) should be displayed.
In fast/text/wide-zero-width-space.html, &eacute; and e&#0301; should look identical.

* platform/graphics/harfbuzz/ng/HarfBuzzShaper.cpp:
(WebCore):
(WebCore::fontDataForCombiningCharacterSequence): Added.
(WebCore::HarfBuzzShaper::collectHarfBuzzRuns): See above description.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129050 268f45cc-cd09-0410-ab3c-d52691b4dbfc
implement first part of support for the new TestExpectations syntax
https://bugs.webkit.org/show_bug.cgi?id=96569

Reviewed by Ryosuke Niwa.

This patch implements support for parsing a line of the new
format for the TestExpectations file and converting it back into
the old format for compatibility. This routine is not yet used
by anything.

The new format is documented at:
  http://trac.webkit.org/wiki/TestExpectations

but, in short:

  [bugs] [ "[" modifiers "]" ] test_name [ "[" expectations "]" ]

- Comments are indicated with "#" instead of "//"
- If no expectations are specified we default to Skip for
  compatibility with the Skipped files (these two changes make
  Skipped files a subset of TestExpectations files)

- All of the tokens are now CamelCase instead of ALLCAPS.
- FAIL -> Failure
- IMAGE -> ImageOnlyFailure
- WONTFIX -> WontFix
- modifiers refer to just the platforms and configurations
  (release/debug) that the line applies to.
- WontFix, Rebaseline, Slow, and Skip move to the right-hand side as
  expectations
- expectations will typically be written out in lexicographic order
- We use webkit.org/b/12345, crbug.com/12345, and Bug(dpranke)
  instead of BUGWK12345, BUGCR12345, and BUGDPRANKE.

* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectationParser):
(TestExpectationParser._tokenize_line_using_new_format):
* Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
(NewExpectationSyntaxTests):
(NewExpectationSyntaxTests.assert_exp):
(NewExpectationSyntaxTests.test_bare_name):
(NewExpectationSyntaxTests.test_bare_name_and_bugs):
(NewExpectationSyntaxTests.test_comments):
(NewExpectationSyntaxTests.test_config_modifiers):
(NewExpectationSyntaxTests.test_unknown_config):
(NewExpectationSyntaxTests.test_unknown_expectation):
(NewExpectationSyntaxTests.test_skip):
(NewExpectationSyntaxTests.test_slow):
(NewExpectationSyntaxTests.test_wontfix):
(NewExpectationSyntaxTests.test_blank_line):
(NewExpectationSyntaxTests.test_warnings):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129051 268f45cc-cd09-0410-ab3c-d52691b4dbfc