New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Porting to cygwin #1010

Closed
wants to merge 633 commits into
base: swift-2.2-branch
from

Conversation

Projects
None yet
@tinysun212
Contributor

tinysun212 commented Jan 18, 2016

I made several changes set for cygwin64 port.

The standard library can be used and It is possible to compile and run or interpret a simple hello swift source, but REPL, swift-build and swift-lldb does not work.

Some of these would bad result in other platforms (ex. OS X, Linux) because I didn't check, but I think it would easily fixed.

@@ -21,7 +21,7 @@
namespace swift {
/// The DWARF version emitted by the Swift compiler.
const unsigned DWARFVersion = 3;
const unsigned DWARFVersion = 4;

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Why was this required? /cc @adrian-prantl

This comment has been minimized.

@tinysun212

tinysun212 Jan 19, 2016

Contributor

My dev environment was cygwin 64bit 2.3.1, and clang version was 3.5.2.
The dwarf version 4 is used as default and the linker displayed errors when
compiled with dwarf version 3.


$ clang++ hello.cpp -gdwarf-3
/tmp/hello-c8fc34.o:(.debug_info+0x16): relocation truncated to fit:
R_X86_64_32 against `.debug_line'
collect2: error: ld returned 1 exit status
clang: error: linker (via gcc) command failed with exit code 1 (use -v to

see invocation)

So swiftc -c -g must generate in dwarf ver 4.

Is this should be changed to like this?


#if CYGWIN
const unsigned DWARFVersion = 4;
#else
const unsigned DWARFVersion = 3;

#fi

2016-01-19 9:10 GMT+09:00 Dmitri Gribenko notifications@github.com:

In include/swift/Basic/Dwarf.h
#1010 (comment):

@@ -21,7 +21,7 @@

namespace swift {
/// The DWARF version emitted by the Swift compiler.

  • const unsigned DWARFVersion = 3;
  • const unsigned DWARFVersion = 4;

Why was this required? /cc @adrian-prantl
https://github.com/adrian-prantl


Reply to this email directly or view it on GitHub
https://github.com/apple/swift/pull/1010/files#r50059136.

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

I see. Let's see what @adrian-prantl says, possibly this change would need to be scoped to Cygwin.

This comment has been minimized.

@adrian-prantl

adrian-prantl Jan 19, 2016

Member

Upgrading the emitted DWARF version has to be done very carefully, because there are many different DWARF consumers besides the debugger that all need to be tested for compatibility and upgraded. There is work underway to move the Darwin default for both clang and swiftc to DWARF 4, but the qualification process is not yet complete.

The best solution is to implement -gdwarf-3 / -gdwarf-4 / -gdwarf-5 driver options that translate to -dwarf-version= frontend options analogous to the clang driver and make the default depend on the target platform.

@@ -101,6 +101,8 @@ std::pair<bool, bool> LangOptions::setTarget(llvm::Triple triple) {
addTargetConfigOption("os", "Linux");
else if (triple.isOSFreeBSD())
addTargetConfigOption("os", "FreeBSD");
else if (triple.isOSWindows())
addTargetConfigOption("os", "Windows");

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

For this, please add tests like test/BuildConfigurations/x64LinuxTarget.swift for every new supported triple.

This comment has been minimized.

@tinysun212

tinysun212 Jan 20, 2016

Contributor

I added x64WindowsTarget.swift in later commit.

@@ -1112,6 +1112,7 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job,
Twine("@") + OutputInfo.getPrimaryOutputFilename()));
}
#if !defined(__CYGWIN__)

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

We don't use #if in the compiler. Please create a separate toolchain class for Cygwin, if it requires customization, or create customization parameters in the GenericUnix constructor.

@@ -1881,6 +1881,9 @@ llvm::Constant *IRGenModule::emitProtocolConformances() {
case llvm::Triple::ELF:
sectionName = ".swift2_protocol_conformances";
break;
case llvm::Triple::COFF: // for cygwin

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please drop the comment. This code will automatically get activated in more cases than just Cygwin, so it is misleading.

@@ -693,6 +693,7 @@ void IRGenModule::emitAutolinkInfo() {
}
break;
}
case llvm::Triple::COFF: // for cygwin

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please drop the comment, too.

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Is the section name .swift1_autolink_entries too long for COFF? How does autolinking work?

This comment has been minimized.

@tinysun212

tinysun212 Jan 19, 2016

Contributor

The cygwin tool chain covers the long section names and generates long section name contained binaries. The COFF format has a separated string table for names longer than 8, but the table is dropped when loaded to system memory. At run-time, the long name section is exist in memory but can not be identified.

Without 'swift2_protocol_conformances', print("Hello") didn't work, so I had to modify it.
But I don't know that how 'swift1_autolink_entries' works and didn't touch it.

I think that If it must be accessed at run-time, it also has to have a shorter name.
But I hope keep it unchanged now and resolve it in another commit later.

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

The autolinking section is used by the swift-autolink-extract to enable autolinking of the dependent libraries.

@@ -12,6 +12,8 @@ if(CXX_SUPPORTS_EXIT_TIME_DESTRUCTORS_WARNING)
list(APPEND SWIFT_CORE_CXX_FLAGS "-Wexit-time-destructors")
endif()
list(APPEND SWIFT_CORE_CXX_FLAGS "-mcmodel=large")

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please scope this option to Cygwin.

@@ -165,6 +165,13 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
${BSD_LIBRARIES})
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN")
execute_process( COMMAND "cygpath" "-u" "$ENV{SYSTEMROOT}"

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please drop the space before COMMAND.

@@ -28,6 +28,8 @@ public func print(
separator: String = " ",
terminator: String = "\n"
) {
// Adhoc fix for 'crash at hook(output.left)' in cygwin
let _playgroundPrintHook : ((String)->Void)? = {_ in () }

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

This would break playgrounds on OS X. Please use #if to scope the workaround to Cygwin, file an issue in the bugtracker to implement a proper fix, and reference it here.

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Also, the Cygwin workaround would be:

let _playgroundPrintHook: ((String)->Void)? = nil

... it is cheaper and more obvious.

@@ -0,0 +1,131 @@
#include <stdint.h>

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please add a license header, and run clang-format over the file.

return nullptr;
}
namespace std {

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Defining entities in namespace std is undefined behavior, please don't do it.

@@ -31,8 +31,10 @@ static_assert(std::is_same<swift_once_t, dispatch_once_t>::value,
// The compiler generates the swift_once_t values as word-sized zero-initialized
// variables, so we want to make sure swift_once_t isn't larger than the
// platform word or the function below might overwrite something it shouldn't.
#if !defined(__CYGWIN__)

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Is this failing on Cygwin? Why? This is an important check.

This comment has been minimized.

@tinysun212

tinysun212 Jan 19, 2016

Contributor

In cygwin 64bit v2.3.1, clang v3.5.2, the sizeof(std::once_flag) is 16 and sizeof(void*) is 8.

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Well, then you need to keep the assertion and adjust swift::swift_once -- otherwise the initialization won't be correct.

const char *dlpi_name;
};
int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void *data),

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please don't export symbols with names other than *swift_* from the runtime. I understand that you need a shim layer to make existing code work with WinAPI. Let's create one without creating extra exports.

@@ -29,12 +35,14 @@
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <xlocale.h>
//#include <xlocale.h>

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

This will break OS X.

#if defined(__CYGWIN__)
#include <stdio.h>
typedef void *locale_t;
#define uselocale(x) nullptr

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Setting the locale to C is an important part of the Swift's floating point parsing semantics, to ensure that numbers are parsed the same way regardless of the locale. Please don't drop it.

LeftString, LeftLength,
RightString, RightLength);
(const UChar *)LeftString, LeftLength,
(const UChar *)RightString, RightLength);

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Why were changes required here? What is UChar on Windows?

This comment has been minimized.

@tinysun212

tinysun212 Jan 19, 2016

Contributor

Without casting, compile error occurred.

In cygwin 64bit, I could get the definition with clang++ -E.
typedef wchar_t UChar;
and by simple code, sizeof(UChar) was 2.

I found where it defined.

/usr/include/unicode/umachine.h

/**
 * \var UChar
 * Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t),
 * or wchar_t if that is 16 bits wide; always assumed to be unsigned.
 * If neither is available, then define UChar to be uint16_t.
 *
 * This makes the definition of UChar platform-dependent
 * but allows direct string type compatibility with platforms with
 * 16-bit wchar_t types.
 *
 * @stable ICU 4.4
 */
#if defined(UCHAR_TYPE)
    typedef UCHAR_TYPE UChar;
/* Not #elif U_HAVE_CHAR16_T -- because that is type-incompatible with pre-C++11 callers
    typedef char16_t UChar;  */
#elif U_SIZEOF_WCHAR_T==2
    typedef wchar_t UChar;
#elif defined(__CHAR16_TYPE__)
    typedef __CHAR16_TYPE__ UChar;
#else
    typedef uint16_t UChar;
#endif

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

I see. This is complicated. Could you check that casting uint16_t * to wchar_t * is valid from the strict aliasing perspective? We don't want miscompiles. Otherwise, I'm OK with the change.

This comment has been minimized.

@tinysun212

tinysun212 Jan 19, 2016

Contributor

If I understand you correctly, this is helpful.

#include <stdint.h>
#include <stdio.h>

int main()
{
        uint16_t u16_var = 1234;
        wchar_t  *wc_var = (wchar_t *)&u16_var;
        printf("%p\n", wc_var);

        return 0;
}

$ clang++ wchar_test.cpp -fstrict-aliasing -Wall
// no error, no warning

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Thank you for checking, but this does not prove that the cast is correct. In fact, clang does not warn on this code on OS X, where sizeof(wchar_t) == 4, even if I dereference the pointer with printf("%d\n", *wc_var);.

My interpretation of N4431 3.10/10 is that dereferencing that pointer would be a violation of strict aliasing. @rjmccall?

@@ -763,6 +766,12 @@ case "$(uname -s -m)" in
"freebsd-x86_64"
)
;;
CYGWIN_NT-10.0\ x86_64)

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Indentation is off on this line.

@@ -849,6 +858,12 @@ case "$(uname -s -m)" in
)
;;
CYGWIN_NT-10.0\ x86_64)

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Indentation is off on this line.

@gribozavr

This comment has been minimized.

Collaborator

gribozavr commented Jan 19, 2016

@tinysun212 Thank you for your work! I have left a few comments, unfortunately some of issues are showstoppers. I would be happy to discuss possible solutions.

<< "; Invalidated: "
<< (AggBuilderMap.isInvalidated(_N)? "yes" : "no") << "\n");
<< (AggBuilderMap.isInvalidated(_work)? "yes" : "no") << "\n");

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

You can submit this part as a separate pull request if you like, I'll merge it immediately. Not using reserved names is obvious goodness.

HANDLE proc_handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE, proc_id);
if (NULL == proc_handle)
return 0;

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please crash the program with swift::fatalError if any required system call fails. The program definitely won't run correctly if we can't read conformance tables, so there is no point in continuing.

if (NULL == proc_handle)
return 0;
int last_ret = 0;

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please follow the LLVM coding style in variable names (here and everywhere).

HMODULE modules[1024];
DWORD used_size;
if (EnumProcessModules(proc_handle, modules, sizeof(modules), &used_size))

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

Please crash the program with swift::fatalError if this fails. Please also implement the retry loop as described in MSDN docs to find the proper size of the modules array.

{
char mod_name[MAX_PATH];
if (GetModuleFileNameExA(proc_handle, modules[i], mod_name,

This comment has been minimized.

@gribozavr

gribozavr Jan 19, 2016

Collaborator

What are the conditions under which this call can fail? If those are obscure system failure cases, let's crash with swift::fatalError instead.

@@ -340,7 +380,7 @@ static void _initializeCallbacksToInspectDylib() {
// Dyld will invoke this on our behalf for all images that have already
// been loaded.
_dyld_register_func_for_add_image(_addImageProtocolConformances);
#elif defined(__ELF__)
#elif defined(__ELF__) || defined(__CYGWIN__)

This comment has been minimized.

@lhoward

lhoward Jan 19, 2016

Contributor

If this would work on Win32 as well then checking for WIN32 might be better.

This comment has been minimized.

@tinysun212

tinysun212 Jan 19, 2016

Contributor

Do you mean like this ?

|| defined(__WIN32__)
return 0;
}
_addImageProtocolConformancesBlock(conformances, conformancesSize);

This comment has been minimized.

@lhoward

lhoward Jan 19, 2016

Contributor

Also current master needs similar code in MetadataLookup.cpp.

bitjammer and others added some commits Jan 22, 2016

SILGen: Minimal workaround for multiple-emission bug with Clang-impor…
…ter-synthesized properties on enums.

If you extend a C/ObjC enum type to conform to ErrorType, then the synthesized _code getter ends up registered as an external decl, but appears to already get synthesized due to @slavapestov's changes. I'm not sure whether this is reliable enough that we can simply stop registering the external decls, so just to keep the build from crashing, insert a check in emitExternalDecls that we didn't already emit the decl and skip emission. Low-risk workaround for rdar://problem/24287125.
@slavapestov

This comment has been minimized.

Member

slavapestov commented on 8da10e3 Jan 22, 2016

Thanks for reducing the test case. Should be an easy fix.

lattner added some commits Jan 22, 2016

Fix <rdar://problem/24267414> QoI: error: cannot convert value of typ…
…e 'Int' to specified type 'Int'

When a contextual conversion has a matching type, don't diagnose it as a
conversion error, the problem is due to something else (in this case, an
unresolved archetype somewhere else in the expression).

Before:
t.swift:6:17: error: cannot convert value of type 'Int' to specified type 'Int'
After:
t.swift:6:17: error: generic parameter 'T' could not be inferred

This should still be a bit better to provide information about where the T
archetype came from, but at least now it isn't completely wrong diagnostic.
Improve diagnostics for unbound archetypes coming from a type, to ind…
…icate

information about where the archetype was defined.  Before:

t.swift:6:17: error: generic parameter 'T' could not be inferred
var a : Int = A.foo()
                ^

After:

t.swift:6:17: error: generic parameter 'T' could not be inferred
var a : Int = A.foo()
                ^
t.swift:2:8: note: 'T' declared as parameter to type 'A'
struct A<T> {
       ^

trentxintong and others added some commits Jan 26, 2016

Add in some throttle logic for RLE. This is mostly intended for funct…
…ions that are way too large to process.

I do not see compilation time difference in stdlib -O nor any change in # of redundant loads eliminated.

I am more looking at compilation time and precision in stdlibunittest.

=== Before Throttle Logic ===

compilation time stdlibunit -O:
Running Time    Self (ms)               Symbol Name
27016.0ms   26.4%       0.0                 swift::runSILOptimizationPasses(swift::SILModule&)
26885.0ms   26.2%       0.0                  swift::SILPassManager::runOneIteration()
22355.0ms   21.8%       15.0                  swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>)
21416.0ms   20.9%       42.0                   swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*)
5662.0ms    5.5%        10.0                    (anonymous namespace)::ARCSequenceOpts::run()
3916.0ms    3.8%        58.0                    (anonymous namespace)::RedundantLoadElimination::run()
2707.0ms    2.6%        3.0                     (anonymous namespace)::SILCombine::run()
2248.0ms    2.1%        5.0                     (anonymous namespace)::SimplifyCFGPass::run()
1974.0ms    1.9%        121.0                   (anonymous namespace)::SILCSE::run()
1592.0ms    1.5%        30.0                    (anonymous namespace)::DeadStoreElimination::run()
746.0ms    0.7% 170.0                   (anonymous namespace)::DCE::run()

=== After Throttle Logic ===

compilation time stdlibunit -O:
Running Time    Self (ms)               Symbol Name
25735.0ms   25.4%       0.0                 swift::runSILOptimizationPasses(swift::SILModule&)
25611.0ms   25.3%       0.0                  swift::SILPassManager::runOneIteration()
21260.0ms   21.0%       21.0                  swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>)
20340.0ms   20.1%       43.0                   swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*)
5319.0ms    5.2%        8.0                     (anonymous namespace)::ARCSequenceOpts::run()
3265.0ms    3.2%        58.0                    (anonymous namespace)::RedundantLoadElimination::run()
2661.0ms    2.6%        1.0                     (anonymous namespace)::SILCombine::run()
2185.0ms    2.1%        5.0                     (anonymous namespace)::SimplifyCFGPass::run()
1847.0ms    1.8%        105.0                   (anonymous namespace)::SILCSE::run()
1499.0ms    1.4%        21.0                    (anonymous namespace)::DeadStoreElimination::run()
708.0ms    0.7% 150.0                   (anonymous namespace)::DCE::run()
498.0ms    0.4% 7.0                     (anonymous namespace)::SILCodeMotion::run()
370.0ms    0.3% 0.0                     (anonymous namespace)::StackPromotion::run()
Optimize how most derived type is computed in the new projection path…
… Instead of walking the

entire projection path to find the most derived type, we cache it and invalidate when the projectionpath is
append'ed to.

stdlib -O

=== Before ===
Running Time        Self (ms)               Symbol Name
25741.0ms   37.3%   0.0                 swift::runSILOptimizationPasses(swift::SILModule&)
25523.0ms   37.0%   0.0                  swift::SILPassManager::runOneIteration()
20654.0ms   29.9%   36.0                  swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>)
19663.0ms   28.5%   87.0                   swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*)
3279.0ms    4.7%    5.0                     (anonymous namespace)::SimplifyCFGPass::run()
3205.0ms    4.6%    11.0                    (anonymous namespace)::ARCSequenceOpts::run()
2550.0ms    3.7%    7.0                     (anonymous namespace)::SILCombine::run()
2177.0ms    3.1%    42.0                    (anonymous namespace)::RedundantLoadElimination::run()
2151.0ms    3.1%    115.0                   (anonymous namespace)::SILCSE::run()
1255.0ms    1.8%    18.0                    (anonymous namespace)::GenericSpecializer::run()
1080.0ms    1.5%    49.0                    (anonymous namespace)::DeadStoreElimination::run()
926.0ms    1.3%     189.0                   (anonymous namespace)::DCE::run()
488.0ms    0.7%     3.0                     (anonymous namespace)::SILCodeMotion::run()

=== After ===
Running Time        Self (ms)               Symbol Name
24065.0ms   36.8%   0.0                 swift::runSILOptimizationPasses(swift::SILModule&)
23865.0ms   36.5%   0.0                  swift::SILPassManager::runOneIteration()
19245.0ms   29.4%   42.0                  swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>)
18273.0ms   27.9%   65.0                   swift::SILPassManager::runPassesOnFunction(llvm::ArrayRef<swift::SILFunctionTransform*>, swift::SILFunction*)
3096.0ms    4.7%    10.0                    (anonymous namespace)::ARCSequenceOpts::run()
3081.0ms    4.7%    9.0                     (anonymous namespace)::SimplifyCFGPass::run()
2381.0ms    3.6%    8.0                     (anonymous namespace)::SILCombine::run()
1990.0ms    3.0%    128.0                   (anonymous namespace)::SILCSE::run()
1828.0ms    2.8%    65.0                    (anonymous namespace)::RedundantLoadElimination::run()
1200.0ms    1.8%    10.0                    (anonymous namespace)::GenericSpecializer::run()
918.0ms    1.4%     58.0                    (anonymous namespace)::DeadStoreElimination::run()
867.0ms    1.3%     140.0                   (anonymous namespace)::DCE::run()
479.0ms    0.7%     11.0                    (anonymous namespace)::SILCodeMotion::run()
294.0ms    0.4%     1.0                     (anonymous namespace)::ConstantPropagation::run()
[SR-510] Make closure as enum raw value parses as normal
enum raw value is parsed as a normal expression using `parseExpr()`. However,
for a closure, the parser expects a local context that doesn't exist for raw
values.

We create a temporary context to ensure the closure gets parsed as normal.
As a consequence, `parseExpr()` returns normally for closure and correct
diagnosis for raw value gets issued.
@trentxintong

This comment has been minimized.

Contributor

trentxintong commented on 546471a Jan 26, 2016

We are getting rid of more redundant loads. I am going to update with some performance # here soon.

This comment has been minimized.

Contributor

trentxintong replied Jan 26, 2016

Ran PerfTestSuite 3X with and without the port to new projection. Only listing benchmarks with +-5% difference.

'#' of RLE rose to 6620 from 6247

BenchLangCallingCFunction , 237 , 211 , -26 , -11.0% , 1.12x
DictionaryHashableStruct , 1570 , 1498 , -72 , -4.6% , 1.05x
JSONHelperDeserialize , 3089 , 3286 , +197 , +6.4% , 0.94x (!)
LuhnAlgoEager , 2200 , 2083 , -117 , -5.3% , 1.06x
LuhnAlgoLazy , 2180 , 2081 , -99 , -4.5% , 1.05x

This comment has been minimized.

Member

jrose-apple replied Jan 26, 2016

I'm guessing those numbers are actually KB, not MB? ;-)

This comment has been minimized.

Contributor

trentxintong replied Jan 26, 2016

This is what is reported by Instruments, so i guess they are MBs. These are total memory allocated (not necessarily persistent, i..e maybe reclaim'ed).

trentxintong and others added some commits Jan 26, 2016

Merge pull request #987 from dduan/SR-510-3
[SR-510] Diagnose closures used as enum raw values.
fix <rdar://24314506> QoI: Fix-it for dictionary initializer on requi…
…red class var suggests [] instead of [:]

a simple apparent typo or thinko
Merge pull request #1100 from tanadeau/sr-615
[SR-615][Compiler] Don't error when lexing UTF-8 BOM
fix 28239-swift-declcontext-lookupqualified.swift, module lookup can …
…be done

without access control now by diagnostics.
Merge pull request #1101 from sryze/master
Fix small typos in build-script help
IRGen: Refactor away MetadataAccessStrategy::Direct, NFC
This is a preliminary refactoring toward emitting generic metadata
instantiation accessors. This will let us stop exporting metadata
template symbols and reference accessors from conformance tables
instead. The latter is required to enable conformances where the
conforming type is resilient.
Merge pull request #1102 from practicalswift/typo-fixes-20160126
[gardening] Fix recently introduced typo: "polymorhpic" → "polymorphic"
Add -strip-field-names and -strip-field-metadata IRGen options
This controls emission of field metadata for reflection, providing
the default decision. We might want to explore finer-grained
control per type, likely as a source code annotation.

  -strip-field-names
    Strip field names from nominal type metadata.

  -strip-field-metadata
    Strip all field metadata for nominal types. This also implies
    -strip-field-names.

NFC yet.
IRGen: Add getAddrOfFieldNames helper
This is used to emit relative references to field names for
reflection.

@tinysun212 tinysun212 force-pushed the tinysun212:porting-to-cygwin branch from 766c5cd to 6dfd69f Jan 26, 2016

@tinysun212

This comment has been minimized.

Contributor

tinysun212 commented Jan 27, 2016

I recreated same PR on master branch an hour ago. I think this PR must be removed.

@gribozavr

This comment has been minimized.

Collaborator

gribozavr commented Jan 27, 2016

Closing this PR in favor of #1108.

@gribozavr gribozavr closed this Jan 27, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment