Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
bfa9bbcd
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bfa9bbcd
编写于
3月 23, 2015
作者:
W
Wonseok Chae
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1483 from wschae/memory
Do not allocate too much for Guid stream
上级
4b56f40e
07beb551
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
33 addition
and
2 deletion
+33
-2
src/Compilers/CSharp/Test/Emit/Emit/EditAndContinue/EditAndContinueTests.cs
...rp/Test/Emit/Emit/EditAndContinue/EditAndContinueTests.cs
+31
-0
src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs
...Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs
+2
-2
未找到文件。
src/Compilers/CSharp/Test/Emit/Emit/EditAndContinue/EditAndContinueTests.cs
浏览文件 @
bfa9bbcd
...
...
@@ -5946,5 +5946,36 @@ public class C
CheckNames
(
new
[]
{
reader0
,
reader1
},
reader1
.
GetTypeDefNames
(),
"<>o__0#1"
);
CheckNames
(
new
[]
{
reader0
,
reader1
,
reader2
},
reader2
.
GetTypeDefNames
(),
"<>o__0#2"
);
}
[
WorkItem
(
918650
)]
[
Fact
]
public
void
OutofMemoryDuringEditAndContinue
()
{
var
source
=
@"class C
{{
static int F() {{ return {0}; }}
}}"
;
var
compilation0
=
CreateCompilationWithMscorlib
(
String
.
Format
(
source
,
1
),
options
:
TestOptions
.
DebugDll
);
var
bytes0
=
compilation0
.
EmitToArray
();
var
md0
=
ModuleMetadata
.
CreateFromImage
(
bytes0
);
var
generation0
=
EmitBaseline
.
CreateInitialBaseline
(
md0
,
EmptyLocalsProvider
);
var
method0
=
compilation0
.
GetMember
<
MethodSymbol
>(
"C.F"
);
for
(
int
i
=
2
;
i
<=
50
;
i
++)
{
var
compilation1
=
compilation0
.
WithSource
(
String
.
Format
(
source
,
i
));
var
method1
=
compilation1
.
GetMember
<
MethodSymbol
>(
"C.F"
);
var
diff1
=
compilation1
.
EmitDifference
(
generation0
,
ImmutableArray
.
Create
(
new
SemanticEdit
(
SemanticEditKind
.
Update
,
method0
,
method1
)));
compilation0
=
compilation1
;
method0
=
method1
;
generation0
=
diff1
.
NextGeneration
;
}
}
}
}
src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs
浏览文件 @
bfa9bbcd
...
...
@@ -166,8 +166,8 @@ internal EmitBaseline GetDelta(EmitBaseline baseline, Compilation compilation, G
stringStreamLengthAdded
:
metadataSizes
.
HeapSizes
[(
int
)
HeapIndex
.
String
]
+
_previousGeneration
.
StringStreamLengthAdded
,
// UserString stream is concatenated aligned.
userStringStreamLengthAdded
:
metadataSizes
.
GetAlignedHeapSize
(
HeapIndex
.
UserString
)
+
_previousGeneration
.
UserStringStreamLengthAdded
,
// Guid stream
is always aligned (the size if a multiple of 16 = sizeof(Guid))
guidStreamLengthAdded
:
metadataSizes
.
HeapSizes
[(
int
)
HeapIndex
.
Guid
]
+
_previousGeneration
.
GuidStreamLengthAdded
,
// Guid stream
accumulates on the GUID heap unlike other heaps, so the previous generations are already included.
guidStreamLengthAdded
:
metadataSizes
.
HeapSizes
[(
int
)
HeapIndex
.
Guid
],
anonymousTypeMap
:
((
IPEDeltaAssemblyBuilder
)
moduleBuilder
).
GetAnonymousTypeMap
(),
synthesizedMembers
:
synthesizedMembers
,
addedOrChangedMethods
:
AddRange
(
addedOrChangedMethodsByIndex
,
_previousGeneration
.
AddedOrChangedMethods
,
replace
:
true
),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录