<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>153456</bug_id>
          
          <creation_ts>2016-01-25 15:22:01 -0800</creation_ts>
          <short_desc>[GTK][EFL] FTL with B3 does not build</short_desc>
          <delta_ts>2016-01-26 03:56:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1158545</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-01-25 15:22:01 -0800</bug_when>
    <thetext>Manually change FTL_USES_B3 to 1 in DFGCommon.h. Then:


[201/5346] Building CXX object Source/...criptCore.dir/bytecode/CodeBlock.cpp.o
FAILED: /usr/lib64/ccache/clang++   -DBUILDING_GTK__=1 -DBUILDING_JavaScriptCore -DBUILDING_WITH_CMAKE=1 -DDATA_DIR=\&quot;share\&quot; -DGETTEXT_PACKAGE=\&quot;WebKit2GTK-4.0\&quot; -DHAVE_CONFIG_H=1 -DJavaScriptCore_EXPORTS -DLIBDIR=\&quot;/home/mcatanzaro/src/jhbuild/install/lib\&quot; -DSTATICALLY_LINKED_WITH_WTF -DUSER_AGENT_GTK_MAJOR_VERSION=\&quot;602\&quot; -DUSER_AGENT_GTK_MINOR_VERSION=\&quot;1\&quot; -DWEBKITGTK_API_VERSION_STRING=\&quot;4.0\&quot; -I. -I../../Source/JavaScriptCore -I../../Source/JavaScriptCore/.. -I../../Source/JavaScriptCore/API -I../../Source/JavaScriptCore/ForwardingHeaders -I../../Source/JavaScriptCore/assembler -I../../Source/JavaScriptCore/b3 -I../../Source/JavaScriptCore/b3/air -I../../Source/JavaScriptCore/bindings -I../../Source/JavaScriptCore/builtins -I../../Source/JavaScriptCore/bytecode -I../../Source/JavaScriptCore/bytecompiler -I../../Source/JavaScriptCore/dfg -I../../Source/JavaScriptCore/disassembler -I../../Source/JavaScriptCore/disassembler/udis86 -I../../Source/JavaScriptCore/ftl -I../../Source/JavaScriptCore/heap -I../../Source/JavaScriptCore/debugger -I../../Source/JavaScriptCore/inspector -I../../Source/JavaScriptCore/inspector/agents -I../../Source/JavaScriptCore/inspector/augmentable -I../../Source/JavaScriptCore/inspector/remote -I../../Source/JavaScriptCore/interpreter -I../../Source/JavaScriptCore/jit -I../../Source/JavaScriptCore/llint -I../../Source/JavaScriptCore/llvm -I../../Source/JavaScriptCore/parser -I../../Source/JavaScriptCore/profiler -I../../Source/JavaScriptCore/replay -I../../Source/JavaScriptCore/runtime -I../../Source/JavaScriptCore/tools -I../../Source/JavaScriptCore/wasm -I../../Source/JavaScriptCore/yarr -IDerivedSources -IDerivedSources/ForwardingHeaders -IDerivedSources/JavaScriptCore -IDerivedSources/JavaScriptCore/inspector -I../../Source/WTF -isystem /home/mcatanzaro/src/jhbuild/install/include/glib-2.0 -isystem /home/mcatanzaro/src/jhbuild/install/lib/glib-2.0/include -std=c++11 -fcolor-diagnostics -gsplit-dwarf -Qunused-arguments -g -fPIC   -Wall -Wextra -Wcast-align -Wformat-security -Wmissing-format-attribute -Wpointer-arith -Wundef -Wwrite-strings -Wno-parentheses-equality -MMD -MT Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/bytecode/CodeBlock.cpp.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/bytecode/CodeBlock.cpp.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/bytecode/CodeBlock.cpp.o -c ../../Source/JavaScriptCore/bytecode/CodeBlock.cpp
In file included from ../../Source/JavaScriptCore/bytecode/CodeBlock.cpp:79:
In file included from ../../Source/JavaScriptCore/ftl/FTLJITCode.h:35:
../../Source/JavaScriptCore/ftl/FTLOSRExit.h:176:12: error: no member named &apos;ValueRep&apos; in namespace &apos;JSC::B3&apos;; did you mean &apos;DFG::ValueRep&apos;?
    Vector&lt;B3::ValueRep&gt; m_valueReps;
           ^~~~~~~~~~~~
           DFG::ValueRep
../../Source/JavaScriptCore/dfg/DFGNodeType.h:367:565: note: &apos;DFG::ValueRep&apos; declared here
    JSConstant, DoubleConstant, Int52Constant, Identity, ToThis, CreateThis, GetCallee, GetArgumentCount, GetLocal, SetLocal, PutStack, KillStack, GetStack, MovHint, ZombieHint, ExitOK, Phantom, Check, Upsilon, Phi, Flush, PhantomLocal, LoopHint, ExtractOSREntryLocal, CheckTierUpInLoop, CheckTierUpAndOSREnter, CheckTierUpWithNestedTriggerAndOSREnter, CheckTierUpAtReturn, GetLocalUnlinked, SetArgument, InvalidationPoint, BitAnd, BitOr, BitXor, BitLShift, BitRShift, BitURShift, ValueToInt32, UInt32ToNumber, BooleanToNumber, DoubleAsInt32, DoubleRep, Int52Rep, ValueRep, FiatInt52, ArithAdd, ArithClz32, ArithSub, ArithNegate, ArithMul, ArithIMul, ArithDiv, ArithMod, ArithAbs, ArithMin, ArithMax, ArithFRound, ArithPow, ArithRandom, ArithRound, ArithSqrt, ArithSin, ArithCos, ArithLog, ValueAdd, StrCat, GetByVal, GetMyArgumentByVal, LoadVarargs, ForwardVarargs, PutByValDirect, PutByVal, PutByValAlias, GetById, GetByIdFlush, PutById, PutByIdFlush, PutByIdDirect, PutGetterById, PutSetterById, PutGetterSetterById, PutGetterByVal, PutSetterByVal, CheckStructure, GetExecutable, PutStructure, AllocatePropertyStorage, ReallocatePropertyStorage, GetButterfly, GetButterflyReadOnly, CheckArray, Arrayify, ArrayifyToStructure, GetIndexedPropertyStorage, ConstantStoragePointer, GetGetter, GetSetter, GetByOffset, GetGetterSetterByOffset, MultiGetByOffset, PutByOffset, MultiPutByOffset, GetArrayLength, GetTypedArrayByteOffset, GetScope, SkipScope, GetClosureVar, PutClosureVar, GetGlobalVar, GetGlobalLexicalVariable, PutGlobalVariable, NotifyWrite, VarInjectionWatchpoint, CheckCell, CheckNotEmpty, CheckBadCell, CheckInBounds, CheckIdent, CheckTypeInfoFlags, ArrayPush, ArrayPop, RegExpExec, RegExpTest, StringCharCodeAt, StringCharAt, StringFromCharCode, CompareLess, CompareLessEq, CompareGreater, CompareGreaterEq, CompareEq, CompareStrictEq, Call, Construct, CallVarargs, CallForwardVarargs, ConstructVarargs, ConstructForwardVarargs, TailCallInlinedCaller, TailCallVarargsInlinedCaller, TailCallForwardVarargsInlinedCaller, NewObject, NewArray, NewArrayWithSize, NewArrayBuffer, NewTypedArray, NewRegexp, GetRestLength, CopyRest, PhantomNewObject, PutHint, CheckStructureImmediate, MaterializeNewObject, PhantomNewFunction, PhantomNewGeneratorFunction, PhantomCreateActivation, MaterializeCreateActivation, Breakpoint, ProfileWillCall, ProfileDidCall, OverridesHasInstance, InstanceOf, InstanceOfCustom, IsUndefined, IsBoolean, IsNumber, IsString, IsObject, IsObjectOrNull, IsFunction, TypeOf, LogicalNot, ToPrimitive, ToString, CallStringConstructor, NewStringObject, MakeRope, In, ProfileType, ProfileControlFlow, CreateActivation, CreateDirectArguments, PhantomDirectArguments, CreateScopedArguments, CreateClonedArguments, PhantomClonedArguments, GetFromArguments, PutToArguments, NewFunction, NewArrowFunction, NewGeneratorFunction, Throw, ThrowReferenceError, Jump, Branch, Switch, Return, TailCall, TailCallVarargs, TailCallForwardVarargs, Unreachable, CountExecution, ForceOSRExit, BottomValue, CheckWatchdogTimer, StoreBarrier, GetEnumerableLength, HasIndexedProperty, HasStructureProperty, HasGenericProperty, GetDirectPname, GetPropertyEnumerator, GetEnumeratorStructurePname, GetEnumeratorGenericPname, ToIndexString,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ^
In file included from ../../Source/JavaScriptCore/bytecode/CodeBlock.cpp:79:
In file included from ../../Source/JavaScriptCore/ftl/FTLJITCode.h:35:
../../Source/JavaScriptCore/ftl/FTLOSRExit.h:176:12: error: template argument for template type parameter must be a type
    Vector&lt;B3::ValueRep&gt; m_valueReps;
           ^~~~~~~~~~~~
../../Source/WTF/wtf/Forward.h:37:19: note: template parameter is declared here
template&lt;typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity&gt; class Vector;
                  ^
In file included from ../../Source/JavaScriptCore/bytecode/CodeBlock.cpp:79:
In file included from ../../Source/JavaScriptCore/ftl/FTLJITCode.h:35:
../../Source/JavaScriptCore/ftl/FTLOSRExit.h:193:22: error: cannot initialize object parameter of type &apos;JSC::DFG::OSRExitBase&apos; with an expression of type &apos;JSC::FTL::OSRExit&apos;
        OSRExitBase::considerAddingAsFrequentExitSite(profiledCodeBlock, ExitFromFTL);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../Source/JavaScriptCore/bytecode/CodeBlock.cpp:79:
../../Source/JavaScriptCore/ftl/FTLJITCode.h:72:53: error: no member named &apos;OpaqueByproducts&apos; in namespace &apos;JSC::B3&apos;
    void initializeB3Byproducts(std::unique_ptr&lt;B3::OpaqueByproducts&gt;);
                                                ~~~~^
../../Source/JavaScriptCore/ftl/FTLJITCode.h:111:25: error: no member named &apos;OpaqueByproducts&apos; in namespace &apos;JSC::B3&apos;
    std::unique_ptr&lt;B3::OpaqueByproducts&gt; m_b3Byproducts;
                    ~~~~^
5 errors generated.
[201/5346] Building CXX object Source/...bytecode/LazyOperandValueProfile.cpp.o
ninja: build stopped: subcommand failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158676</commentid>
    <comment_count>1</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-01-25 19:26:12 -0800</bug_when>
    <thetext>It looks like EFL port has same build error. This fix may support EFL port as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158783</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-01-26 03:47:51 -0800</bug_when>
    <thetext>To enable B3 JIT, you need to 
- set ENABLE_B3_JIT to 1 in Platform.h
- set FTL_USES_B3 to 1 in DFGCommon.h</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>