                         slot              : true
                         setSlot           : true
                 
-                        invokeClosure     : true
+                        invokeClosure     : false
                         makeClosure       : true
                         makeAnonClosure   : true
                         createArgScratchArea : true

                obj

        visitArrayExpression: (n) ->
                obj = @createCall @ejs_runtime.array_new, [consts.int32(0), consts.false()], "arrtmp", !@ejs_runtime.array_new.doesNotThrow
                i = 0;
                for el in n.elements
                        val = @visit el

                rv.setAlignment 8
                rv

        loadCachedEjsValue: (name, init) ->
                alloca_name = "#{name}_alloca"
                load_name = "#{name}_load"

                if @currentFunction[alloca_name]
                        alloca = @currentFunction[alloca_name]
                else
                        alloca = @createAlloca(@currentFunction, types.EjsValue, alloca_name)
                        @currentFunction[alloca_name] = alloca
                        @doInsideBBlock(@currentFunction.entry_bb, () -> init(alloca))

                ir.createLoad(alloca, load_name)

        loadBoolEjsValue: (n) ->
                rv = @loadCachedEjsValue n, (alloca) =>
                        alloca_as_int64 = ir.createBitCast(alloca, types.int64.pointerTo(), "alloca_as_pointer")
                        if @options.target_pointer_size is 64
                                ir.createStore(consts.int64_lowhi(0xfff98000,  if n then 0x00000001 else 0x000000000), alloca_as_int64)
                        else
                                ir.createStore(consts.int64_lowhi(0xffffff83,  if n then 0x00000001 else 0x000000000), alloca_as_int64)
                rv._ejs_returns_ejsval_bool = true
                rv

        loadDoubleEjsValue:    (n) -> @loadCachedEjsValue("num_#{n}", (alloca) => @storeDouble(alloca, n))
        loadNullEjsValue:      ()  -> @loadCachedEjsValue("null",     (alloca) => @storeNull(alloca))
        loadUndefinedEjsValue: ()  -> @loadCachedEjsValue("undef",    (alloca) => @storeUndefined(alloca))

        storeUndefined: (alloca, name) ->
                alloca_as_int64 = ir.createBitCast alloca, types.int64.pointerTo(), "alloca_as_pointer"
