diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2016-11-07 09:36:50 +0300 |
---|---|---|
committer | Konstantin Tokarev <annulen@yandex.ru> | 2017-02-02 12:31:10 +0000 |
commit | 5ae3854f795ac5c1a0f104bd8b66ed6f988181cd (patch) | |
tree | 197aac0ea37c400dfa582379b2bac84029e794a0 /Source/JavaScriptCore | |
parent | 747609969d3a8bd95ed2293bb5d943660188ede4 (diff) | |
download | qtwebkit-5ae3854f795ac5c1a0f104bd8b66ed6f988181cd.tar.gz |
Imported WebKit commit 490f716dd2dd07fb0d6652795c62586e2e28ae27
Change-Id: I9f66467721cf923468af87915c260c1bb44e013e
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/JavaScriptCore')
-rw-r--r-- | Source/JavaScriptCore/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Source/JavaScriptCore/llint/LowLevelInterpreter.cpp | 2 | ||||
-rw-r--r-- | Source/JavaScriptCore/offlineasm/asm.rb | 13 | ||||
-rw-r--r-- | Source/JavaScriptCore/offlineasm/x86.rb | 29 | ||||
-rw-r--r-- | Source/JavaScriptCore/shell/CMakeLists.txt | 2 |
5 files changed, 29 insertions, 20 deletions
diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt index d570b8dd0..1957446b4 100644 --- a/Source/JavaScriptCore/CMakeLists.txt +++ b/Source/JavaScriptCore/CMakeLists.txt @@ -987,6 +987,7 @@ target_link_libraries(LLIntOffsetsExtractor WTF) # after every asm.rb run. if (MSVC) set(LLIntOutput LowLevelInterpreterWin.asm) + set(OFFLINE_ASM_ARGS --assembler=MASM) else () set(LLIntOutput LLIntAssembly.h) endif () @@ -995,7 +996,7 @@ add_custom_command( OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${LLIntOutput} MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb DEPENDS LLIntOffsetsExtractor ${LLINT_ASM} ${OFFLINE_ASM} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InitBytecodes.asm - COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb -I${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/ ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm $<TARGET_FILE:LLIntOffsetsExtractor> ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${LLIntOutput} + COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb -I${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/ ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm $<TARGET_FILE:LLIntOffsetsExtractor> ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${LLIntOutput} ${OFFLINE_ASM_ARGS} COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${LLIntOutput} WORKING_DIRECTORY ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} VERBATIM) diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp index 72bcddf57..4251338fd 100644 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp @@ -483,7 +483,7 @@ JSValue CLoop::execute(OpcodeID entryOpcodeID, void* executableAddress, VM* vm, } // namespace JSC -#elif !OS(WINDOWS) +#elif !COMPILER(MSVC) //============================================================================ // Define the opcode dispatch mechanism when using an ASM loop: diff --git a/Source/JavaScriptCore/offlineasm/asm.rb b/Source/JavaScriptCore/offlineasm/asm.rb index e93d85536..36482660e 100644 --- a/Source/JavaScriptCore/offlineasm/asm.rb +++ b/Source/JavaScriptCore/offlineasm/asm.rb @@ -29,6 +29,7 @@ require "config" require "backends" require "digest/sha1" require "offsets" +require 'optparse' require "parser" require "self_hash" require "settings" @@ -301,6 +302,15 @@ asmFile = ARGV.shift offsetsFile = ARGV.shift outputFlnm = ARGV.shift +$options = {} +OptionParser.new do |opts| + opts.banner = "Usage: asm.rb asmFile offsetsFile outputFileName [--assembler=<ASM>]" + # This option is currently only used to specify the masm assembler + opts.on("--assembler=[ASM]", "Specify an assembler to use.") do |assembler| + $options[:assembler] = assembler + end +end.parse! + begin configurationList = offsetsAndConfigurationIndex(offsetsFile) rescue MissingMagicValuesException @@ -319,7 +329,8 @@ $commentPrefix = $emitWinAsm ? ";" : "//" inputHash = $commentPrefix + " offlineasm input hash: " + parseHash(asmFile) + " " + Digest::SHA1.hexdigest(configurationList.map{|v| (v[0] + [v[1]]).join(' ')}.join(' ')) + - " " + selfHash + " " + selfHash + + " " + Digest::SHA1.hexdigest($options.has_key?(:assembler) ? $options[:assembler] : "") if FileTest.exist? outputFlnm File.open(outputFlnm, "r") { diff --git a/Source/JavaScriptCore/offlineasm/x86.rb b/Source/JavaScriptCore/offlineasm/x86.rb index 2e0693726..0da7a0240 100644 --- a/Source/JavaScriptCore/offlineasm/x86.rb +++ b/Source/JavaScriptCore/offlineasm/x86.rb @@ -125,20 +125,12 @@ def useX87 end end -def isCompilingOnWindows - ENV['OS'] == 'Windows_NT' -end - -def isGCC - !isCompilingOnWindows -end - def isMSVC - isCompilingOnWindows + $options.has_key?(:assembler) && $options[:assembler] == "MASM" end def isIntelSyntax - isCompilingOnWindows + $options.has_key?(:assembler) && $options[:assembler] == "MASM" end def register(name) @@ -520,7 +512,6 @@ class Sequence end class Instruction - @@floatingPointCompareImplicitOperand = isIntelSyntax ? "st(0), " : "" def x86Operands(*kinds) raise unless kinds.size == operands.size @@ -574,6 +565,10 @@ class Instruction raise end end + + def getImplicitOperandString + isIntelSyntax ? "st(0), " : "" + end def handleX86OpWithNumOperands(opcode, kind, numOperands) if numOperands == 3 @@ -808,20 +803,21 @@ class Instruction end def handleX87Compare(mode) + floatingPointCompareImplicitOperand = getImplicitOperandString case mode when :normal if (operands[0].x87DefaultStackPosition == 0) - $asm.puts "fucomi #{@@floatingPointCompareImplicitOperand}#{operands[1].x87Operand(0)}" + $asm.puts "fucomi #{floatingPointCompareImplicitOperand}#{operands[1].x87Operand(0)}" else $asm.puts "fld #{operands[0].x87Operand(0)}" - $asm.puts "fucomip #{@@floatingPointCompareImplicitOperand}#{operands[1].x87Operand(1)}" + $asm.puts "fucomip #{floatingPointCompareImplicitOperand}#{operands[1].x87Operand(1)}" end when :reverse if (operands[1].x87DefaultStackPosition == 0) - $asm.puts "fucomi #{@@floatingPointCompareImplicitOperand}#{operands[0].x87Operand(0)}" + $asm.puts "fucomi #{floatingPointCompareImplicitOperand}#{operands[0].x87Operand(0)}" else $asm.puts "fld #{operands[1].x87Operand(0)}" - $asm.puts "fucomip #{@@floatingPointCompareImplicitOperand}#{operands[0].x87Operand(1)}" + $asm.puts "fucomip #{floatingPointCompareImplicitOperand}#{operands[0].x87Operand(1)}" end else raise mode.inspect @@ -1108,6 +1104,7 @@ class Instruction $asm.puts "cvttsd2si #{operands[0].x86Operand(:double)}, #{operands[1].x86Operand(:int)}" when "bcd2i" if useX87 + floatingPointCompareImplicitOperand = getImplicitOperandString sp = RegisterID.new(nil, "sp") if (operands[0].x87DefaultStackPosition == 0) $asm.puts "fistl -4(#{sp.x86Operand(:ptr)})" @@ -1119,7 +1116,7 @@ class Instruction $asm.puts "test#{x86Suffix(:int)} #{operands[1].x86Operand(:int)}, #{operands[1].x86Operand(:int)}" $asm.puts "je #{operands[2].asmLabel}" $asm.puts "fild#{x86Suffix(:int)} #{getSizeString(:int)}#{offsetRegister(-4, sp.x86Operand(:ptr))}" - $asm.puts "fucomip #{@@floatingPointCompareImplicitOperand}#{operands[0].x87Operand(1)}" + $asm.puts "fucomip #{floatingPointCompareImplicitOperand}#{operands[0].x87Operand(1)}" $asm.puts "jp #{operands[2].asmLabel}" $asm.puts "jne #{operands[2].asmLabel}" else diff --git a/Source/JavaScriptCore/shell/CMakeLists.txt b/Source/JavaScriptCore/shell/CMakeLists.txt index 633ce4233..27d81336f 100644 --- a/Source/JavaScriptCore/shell/CMakeLists.txt +++ b/Source/JavaScriptCore/shell/CMakeLists.txt @@ -37,7 +37,7 @@ if (SHOULD_INSTALL_JS_SHELL) install(TARGETS jsc DESTINATION "${EXEC_INSTALL_DIR}") endif () -if (WIN32) +if (TARGET jscLib) add_dependencies(jsc jscLib) endif () |