Ignore:
Timestamp:
May 24, 2016, 10:08:45 AM (9 years ago)
Author:
[email protected]
Message:

LLInt64 should have typed array fast paths for get_by_val
https://bugs.webkit.org/show_bug.cgi?id=157931

Reviewed by Keith Miller.

Source/JavaScriptCore:

I think that the LLInt should be able to access typed arrays more quickly than it does now.
Ideally we would have fast paths for every major typed array operation and we would use
inline cache optimizations. I don't want to do this all in one go, so my plan is to
incrementally add support for this as time allows.

This change just adds the easy typed array fast paths for get_by_val in the 64-bit version
of LLInt.

Another bug, https://bugs.webkit.org/show_bug.cgi?id=157922, tracks the overall task of
adding all typed array fast paths to both versions of the LLInt.

This is a 30% speed-up on typed array benchmarks in LLInt. This is not a speed-up when the
JITs are enabled.

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/backends.rb:
  • runtime/JSArrayBufferView.h:
  • runtime/JSType.h:

LayoutTests:

  • js/regress/get_by_val-Int32Array-expected.txt: Added.
  • js/regress/get_by_val-Int32Array.html: Added.
  • js/regress/script-tests/get_by_val-Int32Array.js: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/offlineasm/backends.rb

    r196541 r201335  
    9999end
    100100
     101class LoweringError < StandardError
     102    attr_reader :originString
     103   
     104    def initialize(e, originString)
     105        super "#{e} (due to #{originString})"
     106        @originString = originString
     107        set_backtrace e.backtrace
     108    end
     109end
     110
    101111class Node
    102112    def lower(name)
     
    105115            send("lower" + name)
    106116        rescue => e
    107             e.message << "At #{codeOriginString}"
    108             raise e
     117            raise LoweringError.new(e, codeOriginString)
    109118        end
    110119    end
Note: See TracChangeset for help on using the changeset viewer.