RevisionLog20000台

r20996 | floitsch@google.com | 2013-04-06 04:43:16 +0900 (土, 06 4月 2013) | 6 lines
Remove Expect from core library.
testの追加。class Expectのかな。

r20981 | regis@google.com | 2013-04-06 01:46:53 +0900 (土, 06 4月 2013) | 2 lines
Support UseDartApi vm test on ARM.
これも結構でかいパッチですね。下記を実装したっぽい。
ParallelMoveResolver
BinarySmiOp()
PolymorphicInstanceCall
GenerateOptimizeFunctionStub()

r20948 | asiva@google.com | 2013-04-05 14:19:36 +0900 (金, 05 4月 2013) | 7 lines
  • Create an all static TypedDataView class which uses implicit field offset
values to get direct access to the fields of a typed data view object.
  • Added a verification step after class finalization to ensure that the
implicit field offsets in TypedDataView match the actual values in the dart instance.
TypedDataViewクラスを追加
作成されただけで、まだ外部のメソッドからbindされていない?

r20945 | johnmccutchan@google.com | 2013-04-05 08:23:30 +0900 (金, 05 4月 2013) | 3 lines
Flow graph SIMD changes
UnboxedFloat32x4とUnboxedUint32x4も、representationに追加
上記において、parallel moveのemitにおいて、movupsを使用する。すばらしい。

r20938 | regis@google.com | 2013-04-05 05:24:49 +0900 (金, 05 4月 2013) | 6 lines
Prevent expensive and unnecessary error formatting in the case a bound check is
postponed to run time (issue 9106).
Eliminate bound check at compile time in some cases.
Fix bound checking of mutually referencing bounds.
Added test.
finalizerでtype parameterのbound check

r20936 | tball@google.com | 2013-04-05 03:48:24 +0900 (金, 05 4月 2013) | 3 lines
Updated VM stacktrace support (20898) with platform-
independent version of strndup.
kVmStatusInterrrupt
callbackを登録する処理と、reqを飛ばしてcallbackを呼び出す処理に分かれる。

GetStatusみたいな外部割り込みには、
MonitorLockerを使用する。

r20932 | zra@google.com | 2013-04-05 02:55:06 +0900 (金, 05 4月 2013) | 2 lines
Implements type checking in MIPS needed for FindCodeObject test.
Mips版の、LoadClassId, LoadClassById, LoadClass
ARM版の20623に相当する。

r20924 | zra@google.com | 2013-04-05 01:56:00 +0900 (金, 05 4月 2013) | 8 lines
Fixes a bug in MIPS simulator runtime call handling.
Also:
  • Fixes a bug in the MIPS SimulatorDebugger that
causes a crash if the pc is an illegal address
  • Reenables the FindCodeObject test on MIPS when
checking is off
mips simulatorの改善

r20921 | srdjan@google.com | 2013-04-05 01:13:50 +0900 (金, 05 4月 2013) | 3 lines
Fix checked mode crash when clearing reaching type of a value.
When replacing uses we clear type information that is set by a previous type propagation
(e.g. by CheckSmi).
This led to unexpected behavior:
value guarded by a CheckSmi but not Smi.
Adding another type propagation pass before code generation.
ApplyClassIds()において、
loadのresult_cidがdynamicCidでない場合、setReachingType(NULL)

r20914 | fschneider@google.com | 2013-04-04 21:42:17 +0900 (木, 04 4月 2013) | 25 lines
Use range analysis to improve constant propagation.

This CL runs a second round of constant propagation after range
analysis to eliminate additional unreachable code. Range analysis
is changed to mark branches as constant if the constraints they
generate are unsatisfiable.

The second pass of constant propagation only visits branches and
removes unreachable code, but does not do full constant propagation.

This proves useful when inlining array view operations where the
following pattern occurs:

for (i = 0; i < length; i++) {
if (i < 0 | | i >= length) {
   throw 123;
 }
 foo();
}
In this example the if-statement will be eliminated completely.
Also, fix a bug in range analyis where constraints of already
constrained values were missing.
RangeAnalysisの後に、ConstantPropagationを追加

RangeAnalysisにおいて、 true/false successorを設定する。
上記情報を参照して、InferRange()
set_constant_target()で飛び先を一意に指定する。

ConstantPropagationにvisitBranchを追加
true/falseにおいて、constant_targetを参照し、SetReachable()を設定する。
successorへの伝搬を、RangeAnalysisの結果を元に制御する。

上記の組み合わせで、到達しないブロックが判明し、
後続のパスで削除するか、ConstantPropagatorでbranchが書き換えられるはず。


r20902 | srdjan@google.com | 2013-04-04 07:34:02 +0900 (木, 04 4月 2013) | 2 lines
Fix issue 9644: object stores become large pieces of code if heap tracing is turned on;
jumps around the the store must not use near labels.
jumpの際に、kNearJumpを指定しないように修正。

r20895 | zra@google.com | 2013-04-04 06:43:52 +0900 (木, 04 4月 2013) | 5 lines
Implements optional parameter handling in MIPS vm.
  • Deocdes ic data and argument descriptor.
  • Removes SUB instruction from assembler and disassembler.
mipsのArgumentDescriptorの実装

CopyParameters()
PositionalArgumentsの後に、OptionalNamedArguments
おそらくARM版とほぼ同じ。
r20399を参照かな。ARMから2週間遅れくらい?

PushArgumentInstrの実装

r20890 | regis@google.com | 2013-04-04 05:17:14 +0900 (木, 04 4月 2013) | 11 lines
Support FrameLookup vm test on ARM, requiring among other things:
Maintain a separate top_exit_frame_info for simulated frames and use it to
verify that longjumps are safe.
Make sure unwinding of scopes works in the presence of a simulator.
Support inline allocation of objects.
Support checking of inline cache and instance calls.
Support subtype test cache.
Support (some) equality checks.
Support for (some) conditional branches.
Support for pool pointer setup in stubs.

LoadFromOffset()

引数のuses_ppってなんだ、、
PPは、R10で、Caches object pool pointerらしい。

intermediate_language_arm.ccも実装が進んでいる
AssertBooleanInstrを実装。
TrueとFalseと比較して、どっちでも無い場合CallRuntime

CompareInstrの実装は複雑だ。。
Locationで、Mintはin*2 tmp*1 out*1
Doubleで、in*2 out*1なので、Doubleのほうが少ない。。
Smiも、in*2 out*1

基本的な構造はia32を引き継ぎつつ、asmを置換か。

GenerateAllocationStubForClass()
FLAG_inline_alloc

これは内部用のallocatorだっけか。
基本はcopy gc向けにtopとendのチェック。
内部用なので、既にsizeは分かっていると。

GenerateNArgsheckInlineCacheStub()
todo

GenerateOneArgCheckInlineCacheStub()
todo


r20885 | srdjan@google.com | 2013-04-04 04:42:29 +0900 (木, 04 4月 2013) | 3 lines
Mark CallLeafRuntimeStubCode as failing on Mips/Mac OS X.
Added some cleanups.
Mac OS X.でsimmips clashらしい。

r20871 | srdjan@google.com | 2013-04-04 01:22:24 +0900 (木, 04 4月 2013) | 2 lines
Fix issue 9608: When replacing call with assert assignable, transfer call's deopt_id to the new node.
assert追加。

r20828 | iposva@google.com | 2013-04-03 07:45:18 +0900 (水, 03 4月 2013) | 2 lines
  • Remember objects (not addresses) in the old generation containing new pointers.
StoreIntoObject()が、object != EAXの際に、1命令削減。

StoreBufferUpdateVisitorにおいて、
old_objを保存しておくようにしたと。
修正前は、StoreBufferのscanが必要/不要フラグだけだった。

代わりに、scavengerのstorebufferを走査する際に最内側ループからifがなくなった。。
if で判定して、duplicate++っていう修正前のコードが問題で、
修正後はduplicateを排除した。

r20816 | hausner@google.com | 2013-04-03 05:41:29 +0900 (水, 03 4月 2013) | 10 lines
Add text location in debugger event
  • Adding token number in text location data. Line number will be
removed when the editor knows how to convert a token number to its line number.
  • "location" field in stack frames is now optional. If it is not present, there
is no corresponding textual location for the code location.
  • Add location info of "paused" and "interrupted" events.
Stack trace will go away in these events.
Dart_ActivationFrameGetLocation()
locationとtokenposを取得できるようになったと。。

r20813 | zra@google.com | 2013-04-03 05:24:55 +0900 (水, 03 4月 2013) | 2 lines
Adds native/leaf runtime call stub and redirection on MIPS.
TargetAddress()やSetTargetAddress()
16bitごとに分けて格納か。

GenerateCallNativeCFunctionStub()
BranchPatchable()
label addressをやっぱり16bitごとに扱うと。

r20794 | zra@google.com | 2013-04-03 01:40:14 +0900 (水, 03 4月 2013) | 2 lines
Third codegen test passing for simulated MIPS.
GenerateCallRuntimeStub
GenerateCallStaticFunctionStub

r20783 | srdjan@google.com | 2013-04-03 00:30:14 +0900 (水, 03 4月 2013) | 2 lines
Optimizes 'as' operation in similar way as 'instanceof':
collect type feedback in unoptimized mode and try to convert
it to a simple classcheck in optimized code.
collect type feedbackは、InstanceCallInstr()で行っているのか。
ReplaceWithTypeCast()
asがtrueに確定なら、除去。
そうでないなら、assertAssignableInstrを挿入か。

r20770 | kasperl@google.com | 2013-04-02 20:51:36 +0900 (火, 02 4月 2013) | 9 lines
Add a new implementation of HashMap that uses JS objects for its (multiple) hash tables.
I'll start refactoring the implementation to make it a bit more
maintainable, but I wanted to get your first impressions.
R=erikcorry@google.com,lrn@google.com,srdjan@google.com
lib/collection_patch.dart:patch class Hashmap<K, V>

r20760 | asiva@google.com | 2013-04-02 09:01:15 +0900 (火, 02 4月 2013) | 2 lines
First step for fixing Issue 9416.
isolateのsticky errorの修正?

r20744 | srdjan@google.com | 2013-04-02 04:45:47 +0900 (火, 02 4月 2013) | 2 lines
When optimizing instanceof allow also for raw types (List, ..).
TypeArgumentsが!is_raw_typeの場合に限り、return Bool::null()を返す。
今回から、hasTypeArguments() && !type_arguments.IsNull() && !IsRaw()
に限り、Bool::null()

r20734 | zra@google.com | 2013-04-02 02:02:44 +0900 (火, 02 4月 2013) | 2 lines
First two codegen tests passing on SIMMIPS
Mips向け
LoadObject()の場合、
Smiはobject.raw()だけど、
InVMHeap()の場合、lowとhiに分けてrdにloadする。
どちらでもない場合、object poolから参照する。LoadWordFromPoolOffset()

EnterDartFrame()

r20701 | asiva@google.com | 2013-03-30 09:07:13 +0900 (土, 30 3月 2013) | 4 lines
  • The callback_error_ handle was never being setup.
  • Remove some unnecessary DARTSCOPE calls when true/false/null Dart_Handles are created.

r20680 | asiva@google.com | 2013-03-30 03:33:54 +0900 (土, 30 3月 2013) | 2 lines
Remove support for 'dart:scalarlist' in the Dart VM.

r20623 | regis@google.com | 2013-03-29 02:41:35 +0900 (金, 29 3月 2013) | 2 lines
Support checked mode for VM tests on ARM.
LoadClassId()
ClassIdTagBit == 16, ClassIdTagSize == 16
 tags_offset() + ClassIdTagBit / BitsPerTByte
LoadClassById()
ldr result, isolate_offset + class_table_offset + table_offset
 ldr result, class_id, LSL, 2
LoadClass()
LoadClassIdして、LoadClassById

flow_graph_compiler_arm.ccに、eliminate_type_checks
GenerateInstantiatedTypeNoArgumentsTest()
GenerateInlineInstanceof()
voidの場合、null
 if TypeCheckAsClassEquality()
   Smiの場合、is_instance_lbl
   Smi以外の場合、CompareClassId() is_instance_lbl
 if IsInstantiated()
   HasTypeArguments()
   NoArgumentsTest()
 GenerateSubtype1TestCacheLookup()
 GenerateUninstantiatedTypeTest()

GenerateAssertAssignable()


r20595 | asiva@google.com | 2013-03-28 08:15:27 +0900 (木, 28 3月 2013) | 4 lines
More preparation for removal of dart:scalarlist
  • remove the intrinsification of scalarlist functions
  • changed class Ids to TypedData class Ids
intrinsifierから一通り削除。

r20576 | regis@google.com | 2013-03-28 05:42:02 +0900 (木, 28 3月 2013) | 3 lines
Fix an F-bounded quantification bug (issue 9291).
Add regression test.
F-bounded quantification対応
class A <T extends I<T>>

こういうtype parameterの解決は、class_finalizerで行う。
ResolveTypeのタイミングで、後回しにする。
一時的にpassし、cycleが解決されるまでループ。

r20565 | vegorov@google.com | 2013-03-28 02:13:58 +0900 (木, 28 3月 2013) | 7 lines
On x64 use 32bit idiv when possible instead of 64bit one.
64bit idiv requires twice as much cycles and has 2-3 times higher latency.
R=srdjan@google.com
Intrinsifer::Integer_modulo()
x64において、
operandがどっちも32bitに収まるなら、idivl
そうでないなら、idivq

truncDivide()も同様
32bit idivl
64bit idivq

x64において、32bitを扱う場合、movsxdを使用する。


r20563 | johnmccutchan@google.com | 2013-03-28 02:06:41 +0900 (木, 28 3月 2013) | 3 lines
Really remove SIMD types from dart:scalarlist. Fixes build.
ByteArrayベースのsimd128系を削除。

r20559 | johnmccutchan@google.com | 2013-03-27 23:44:15 +0900 (水, 27 3月 2013) | 3 lines
Review changes
20526のrecommit

r20550 | srdjan@google.com | 2013-03-27 08:41:27 +0900 (水, 27 3月 2013) | 3 lines
Improve code for !identical(a, b):
"x = (a === b); y = (x !== true)" => "y = (a !== b)".
instcombine風な畳み込み。
どういうケースでこういうケースが出現するのだろうか。branch?

r20549 | srdjan@google.com | 2013-03-27 08:04:48 +0900 (水, 27 3月 2013) | 2 lines
Disable optimization in r20548 to make bots green again.
r20548 | srdjan@google.com | 2013-03-27 07:02:09 +0900 (水, 27 3月 2013) | 2 lines
When attempting to to inline a field getter we use the incoming cid.
That type may differ between value()->Type() and value->definition()->Type()
if the definition is a load field with a guarded cid.
Therefore, if value's type is dynamic we check definition's type as well.
即戻してるけど、
== typeの場合にNULL設定するってどういうこった。。
NULLにして、伝搬先の型を一度resetして、再度推論させたいのか。

r20547 | asiva@google.com | 2013-03-27 07:01:31 +0900 (水, 27 3月 2013) | 2 lines
More cleanup in preparation for removing support for dart:scalarlist in the VM.
scalarlistからtypeddataに置き替え

r20545 | regis@google.com | 2013-03-27 06:26:03 +0900 (水, 27 3月 2013) | 3 lines
Fix issue 9442.
Add regression test.
error checkのassertを追加

r20539 | zra@google.com | 2013-03-27 05:27:31 +0900 (水, 27 3月 2013) | 2 lines
Simplifies MIPS LoadWordFromPoolOffset
simplifier

r20532 | asiva@google.com | 2013-03-27 03:46:44 +0900 (水, 27 3月 2013) | 3 lines
Fix some of the scalarlist tests to use TypedData VM classes.
This is in preparation for removing dart:scalarlist support from the VM.
scalarlistが終了したお。。

r20527 | zra@google.com | 2013-03-27 02:50:43 +0900 (水, 27 3月 2013) | 2 lines
Adds Stop to MIPS. Starts on MIPS call patcher.
CallPatternに、IcData()を追加

LoadWordFromPoolOffset()
CanHoldでない場合、low hiに分けて扱うと。
AddObject()
poolに登録済みかシーケンシャルサーチして、なければ末尾に追加すると。
AddExternalLabel()

labelはすべてarrayに貯められると。
この辺は普通のassemblerだから。。


r20526 | johnmccutchan@google.com | 2013-03-27 02:40:25 +0900 (水, 27 3月 2013) | 3 lines
Revert 12534006
r20522 | johnmccutchan@google.com | 2013-03-27 01:50:26 +0900 (水, 27 3月 2013) | 3 lines
Port SIMD types from dart:scalarlist to dart:typeddata.
TypedDataにsimd128を追加。scale=16
Float32x4Arrayのみかな。
って即revertか

r20500 | regis@google.com | 2013-03-26 08:50:41 +0900 (火, 26 3月 2013) | 3 lines
Change the order of loading ic_data and arguments descriptor prior to an
instance call on ARM.
R5 -> R4だったのが、R4 -> R5になったのか
本当に順番を入れ替えただけですね。。

r20496 | tball@google.com | 2013-03-26 07:26:37 +0900 (火, 26 3月 2013) | 2 lines
Rollback stacktrace change.
r20494 | tball@google.com | 2013-03-26 07:16:40 +0900 (火, 26 3月 2013) | 2 lines
Added VM support for isolate stacktrace status.
isolateにstacktraceを出力させる、しかもjsonで。
GetStatus()か
なんだっけ、、portから接続して取得する機能をjson風にしたってことか。

r20493 | regis@google.com | 2013-03-26 07:14:17 +0900 (火, 26 3月 2013) | 3 lines
Update function subtyping rules to latest spec (issue 9057).
Update language tests and status files (and filed co19 issue 392).
function subtypingってのは、引数の個数が少ない場合に、
optional parametersとfixed parametersとの関係上、
少ない場合にどの関数がマッチすべきかの条件を変更した。

r20483 | regis@google.com | 2013-03-26 05:29:47 +0900 (火, 26 3月 2013) | 5 lines
Do not use object pool for VM heap objects on ARM.
Update decoding of call pattern accordingly.
Add missing store barrier when storing object pool in instructions object.
Work with GrowableObjectArray in old heap space when assembling object pool.
ARMでは、x86みたいにObject Poolは使わないと。。
ってわけでもないけど、Null True Falseを使わなくなっただけかな。。
やっぱりIsNull()は、Object Poolではなく、Immediateを使うと。

set_object_pool()の際に、StorePointer()でstore barrier

DecodeLoadObjectも面白い。
0xe59だったばあい、DecodeLoadWordFromPool()
そうでない場合、DecodeLoadWordImmediate()

object_poolは、今はArrayだけど、将来はGrowableObjectArrayにして、Old領域に確保するよと。


r20482 | asiva@google.com | 2013-03-26 05:18:44 +0900 (火, 26 3月 2013) | 3 lines
Handle TypedDataView objects in Dart_TypedDataAcquireData and
Dart_TypedDataReleaseData
TypedDataViewを追加。
いつものmacroによる文字列連結

r20472 | hausner@google.com | 2013-03-26 04:05:21 +0900 (火, 26 3月 2013) | 4 lines
Fix fingerprint mismatches
TBR=iposva
r20466 | hausner@google.com | 2013-03-26 03:11:08 +0900 (火, 26 3月 2013) | 7 lines
Remove legacy syntax support for library import
Remove legacy syntax for #import, #library and #source
Update test programs
Recalc fingerprints of inlined functions that were apparently
affected by the change of library name from "dart:io" to dart.io.
old syntaxを修正するだけで、
このfingerprintsの修正は、、
どっかにfingerprints書き換えるマクロがあるのだろうか。。

r20450 | tball@google.com | 2013-03-26 01:21:58 +0900 (火, 26 3月 2013) | 3 lines
Added EXPECT_TRUE macro,
updated debugger unit tests to use it for API calls that return True.
vm/unit_test.hの修正

r20426 | asiva@google.com | 2013-03-23 08:29:34 +0900 (土, 23 3月 2013) | 3 lines
Fix 9347, always send ExternalTypedData objects as TypedData objects when
sending them across isolates.
マクロ作って囲った。。

r20423 | asiva@google.com | 2013-03-23 07:43:46 +0900 (土, 23 3月 2013) | 4 lines
  • Canonicalize types, type_arguments only when the object is marked as being from the core libraries.
  • adjust the snapshot write buffer growth policy
  • turn off the heap growth rate adjustments when reading from a snapshot.
heapに、GrowthControlState()を追加。
NoHeapGrowthControlScope()クラスを新規追加。

snapshot messageの際は、type canonicalするように変更
snapshotのkNumInitialReferences = 4 --> 64に変更。


r20419 | zra@google.com | 2013-03-23 06:37:10 +0900 (土, 23 3月 2013) | 2 lines
Adds branch instructions and labels to the MIPS simulator, assembler, disassembler.
branch系の命令を一通り実装。
mipsの場合、delay slotもあるので、微妙に命令が分かれている。
simulator側にも実装。

r20399 | regis@google.com | 2013-03-23 03:30:35 +0900 (土, 23 3月 2013) | 5 lines
Implement optional parameter handling in ARM vm.
Enable FindCodeObject test on ARM (production mode only for now).
Make sure the object pool is allocated in the old space.
Some more code cleanup on IA32 and X64 (use named constants).
ARM向け
CompileGraph()から呼ばれる、
CopyParameters() R4:arguments descriptor array
CompareObject()
EmitInstanceCall()
PushArgumentInstr StoreLocalInstrを実装。

CopyParameters()
関数のbodyを取得して、
R4からDescriptorの個数を取得し、チェック。wrangの場合jump
positional parametersを
ArgumentDescriptorから、FPに1個ずつコピーする。

その後、optional named parametersをコピーする。
これらはすべてlocal variableに格納されている。
同様に、FPへコピー。
named parametersは、この段階で位置が決まる。
順番は、CompareTo()の返値のindex。abcでソートのはず。

もしくは、optinal positional parametersをコピーする。

r20396 | asiva@google.com | 2013-03-23 03:14:37 +0900 (土, 23 3月 2013) | 2 lines
Implement creation of ByteData objects using the Dart API.
以下をAPIに追加
GetByteDataConstructor()
NewByteData()
上記のExternal版

Symbolに、
ByteData
ByteDataDot -> "ByteData."
ByteDataDotView -> "ByteData.view"
ByteDataView

Dotってなんだっけ?


r20394 | zra@google.com | 2013-03-23 03:11:05 +0900 (土, 23 3月 2013) | 13 lines
Drops into Simulator Debugger only in a session that is already interactive.
This change backs out an earlier change to the disassemblers that
made them return false if an instruction couldn't be decoded.
This was used in the simulator debuggers for arm and mips to avoid
executing an instruction that couldn't be decoded.
Instead, now when an unknown instruction is encountered in the simulator,
if the simulator is running interactively, we drop into
the debugger, and otherwise die. We detect that a simulator is
running interactively by setting a flag if we enter the debugger
for a user set break point.
bool型からvoid型へ
これ、emulator向けの修正を戻したのか。

r20389 | srdjan@google.com | 2013-03-23 02:08:19 +0900 (土, 23 3月 2013) | 2 lines
Allow recursive inlining.
オプション inline_recursive=true
を追加して制御を1文変更しただけ。

r20388 | hausner@google.com | 2013-03-23 02:06:42 +0900 (土, 23 3月 2013) | 6 lines
Support initialized mixin fields across scripts
Add capability to set parser to read tokens from different
scripts and token positions. This is used when the initializer
expression of a field resides in a different script.
parser系のはずだけど、objectにTokenStreamなんてもんが定義されていたのか。
vm/datastreamってなんぞ。。

r20387 | asiva@google.com | 2013-03-23 02:04:08 +0900 (土, 23 3月 2013) | 2 lines
Limit handle scope to the loop in order to avoid creation of large number of handles
when finalizing classes of a large application.
FinalizeClass()に、HANDLESCOPE(Isalte::current)
handleの操作はまだよくわからん。。

r20382 | vegorov@google.com | 2013-03-23 00:20:37 +0900 (土, 23 3月 2013) | 6 lines
Update stack map computation to match the way XMM registers are spilled on the slow path.
R=fschneider@google.com
FpuRegisterSpillSlotっていうので置き換えただけ。
= FpuRegisterSize / kWordSize

r20380 | whesse@google.com | 2013-03-22 23:53:25 +0900 (金, 22 3月 2013) | 5 lines
dart:io | Fix error in deserializing of native port messages.
BUG=dartbug.com/9369
AddBackRef()ってのを追加した。

r20400 | vegorov@google.com | 2013-03-23 03:32:17 +0900 (土, 23 3月 2013) | 9 lines
Revert "Compute local variable liveness before translation to SSA."
Attaching environments to branches on strict comparisons breaks pattern matching in the optimizer
and regresses performance.
This reverts commit r20377.
TBR=kmillikin@google.com
r20377 | vegorov@google.com | 2013-03-22 21:33:42 +0900 (金, 22 3月 2013) | 8 lines
Compute local variable liveness before translation to SSA.
Use it to remove dead values from deoptimization environments.
R=kmillikin@google.com
SSALivenessAnalysisクラスを追加
個々の処理を集約した。
また、ComputeSSAで計算できるように、
FlowGraphにLivenessAnalysisを追加。定義箇所を移動したのかな。


r20374 | vegorov@google.com | 2013-03-22 20:44:38 +0900 (金, 22 3月 2013) | 10 lines
Register allocation tweaks:
  • Improve heuristic detecting interference on the back-edge.
Any value live_in for the loop header can introduce interfering moves
 at the back edge due to control flow resolution connecting split siblings.
 Apply adjustments based on this heuristic at the latest point when allocating a free register;
  • Don't allocate a register for constants that have no constrained uses.
R=fschneider@google.com
flow_graph_allocator
HasOnlyUnconstrainedUses()
で判定し、場合によってはレジスタ(constant)側を畳み込む。outのlocationはno_location。


r20373 | vegorov@google.com | 2013-03-22 20:28:13 +0900 (金, 22 3月 2013) | 5 lines
Use shorter write-barrier filtering sequence when value is known to be non-smi.
R=iposva@google.com
StoreIntoObjectFilterNoSmi()を新規追加

StoreIntoObjectにおいて、
can value be smiの場合、
StoreIntoObjectFilter
smiでない場合、StoreIntoObjectFilterNoSmi()を呼び出す

can_value_be_smiは、最近追加した、fieldのtype feedbackを参照して判定する。
type feedbackの型がdynamicの場合に、return true


r20366 | aprelev@gmail.com | 2013-03-22 12:31:14 +0900 (金, 22 3月 2013) | 5 lines
Added support for redirecting factories in dart api.
BUG=dartbug.com/6958
redirect factory?
factory関数で、redirectするファクトリを=で定義する。

r20349 | srdjan@google.com | 2013-03-22 05:57:45 +0900 (金, 22 3月 2013) | 2 lines
Fix crash caused by eliminating goto-s in unoptimized code. Added asserts
is_Optimized()の場合にかぎり、compactBlock()

r20339 | asiva@google.com | 2013-03-22 03:47:49 +0900 (金, 22 3月 2013) | 2 lines
Write the magic number 0xf5f5dcdc into a script snapshot file and use this to distinguish
whether a script snapshot or a regular script file is being passed on the command line
(removed the --use-script-snapshot option).
jr
jalr
movnなどの、EmitRTypeがspecialなものを追加。
なにが違うのか。レジスタをhi lowに分ける命令?
というか、複数のレジスタを暗黙的に使用する命令かな?

r20321 | zra@google.com | 2013-03-22 00:50:31 +0900 (金, 22 3月 2013) | 2 lines
Adds MIPS SPECIAL instructions to simulator, assembler, debugger.

r20315 | fschneider@google.com | 2013-03-21 22:34:11 +0900 (木, 21 3月 2013) | 4 lines
Fail with fatal error instead of segmentation fault if virtual memory allocation fails.
BUG=dart:1754, dart:7995
mmapのreserveに失敗した、
memoryを確保できなかったばあい、FATALを投げる。

r20299 | srdjan@google.com | 2013-03-21 08:26:07 +0900 (木, 21 3月 2013) | 2 lines
Add asserts to catch missing deoptimization info early.
いろいろとassertを追加。

r20287 | johnmccutchan@google.com | 2013-03-21 05:29:00 +0900 (木, 21 3月 2013) | 3 lines
SIMD plumbing
Float32x4 stackslot等
また、unboxedfloat32x4と、unboxedint32x4を、location型に加えたので、適時boxing unboxingがはいらなくなる。
deoptimizeのmatrializeにてを加えている。deoptimizeの際の退避処理
rawに、xyzwに加えた。配列の0123と同じだけど。。

runtime/platformに、simd128型をstructで宣言している。
read/write関数を宣言している。
これは、big littleを切り替えるためかな。


r20279 | hausner@google.com | 2013-03-21 02:04:28 +0900 (木, 21 3月 2013) | 4 lines
Properly handle cascades in top-level functions
Fix for bug 8530
parser .periodとcascadeをわけた?


r20277 | asiva@google.com | 2013-03-21 00:41:29 +0900 (木, 21 3月 2013) | 2 lines
Remove redundant Dart_LoadEmbeddedScript as it doesn't seem to be used
in the VM and hopefully dartium can start using Dart_Script always.
LoadEmbeddedScriptを削除し、LoadScriptに共通化。
デフォルトで引数、location = 0,0

r20254 | srdjan@google.com | 2013-03-20 07:43:03 +0900 (水, 20 3月 2013) | 2 lines
Improve code (less code, slightly faster) for polymorphic calls,
by loading the argument descriptor only once instead of once for each call.
GenerateStaticCallから、GenerateDartCallに変更


r20248 | asiva@google.com | 2013-03-20 06:32:35 +0900 (水, 20 3月 2013) | 2 lines
Translate raw strings to regular strings during source code generation.
This should hopefully avoid issues with deciding when to escape special characters and when not to.
escapeに\\と$を追加しているのを、関数にまとめた
is_rawっていうフラグがなくなった。


r20235 | vegorov@google.com | 2013-03-20 05:15:10 +0900 (水, 20 3月 2013) | 5 lines
Collect type feedback for fields.

code_generatorに、
UpdateFieldCid()を追加。
loadしたvalueのclazz().id()を保存するぽい。
保存先は、vm/objectのField vm/raw_objectのRawFieldクラス
保存できるidは、1個だけ。 raw_ptr()->guarded_cid_に保存。
stub越しに呼び出すのだと思う。
RawFieldには、guarded_cid_とis_nulable_メンバを追加。
guardfieldのcidは1つだけだが、nullの可能性もあるため、is_nullableとguard_fieldに分けている。
2つ以上が与えられた場合、dynamicとする。

GuardField命令を新規追加。
builderでは、assignablevalueに対して、GuardFieldとStoreInstanceFieldを生成する。
GuardFieldはCanonicalize()でcidと等しければreturn null

optimizerでは、
guarded_cid != dynamicの場合、GuardFieldを挿入する。

parser
finalは、Nullableでない。

compilerでは、
compile後、field.RegisterDependentCode()で、依存を設定している。
依存をWeakPropertyにArrayの形で持たせる。これはOld領域に格納
依存関係は、Field 1-1 WeakProperty 1-* Code
こういう複雑なコードになっているのは、
Fieldがillegalになった際に、
inline展開を含めて,このfieldからxx型を前提にgetFieldしている
複数のCodeをdeoptimizeする必要があるから。

肝は、object.ccの、
UpdateCid()
RegisterDependentCode()
IsDependentCode()

特にUpdateCid()は、RUNTIME_ENTRYのUpdateFieldCid()から呼び出される。
  1. // Update global type feedback recorded for a field recording the assignment
  2. // of the given value.
  3. // Arg0: Field object;
  4. // Arg1: Value that is being stored.
これは、GuardFieldInstr::Emitに呼び出しを埋め込む。

上記をまとめると、
LoadField系に型情報がつくので、推論が捗る。
また、runtimeでsmi nullable notdynamic dynamicの判定が行いやすくなる効果もあるのかな?


r20211 | fschneider@google.com | 2013-03-20 00:54:28 +0900 (水, 20 3月 2013) | 2 lines
A CL that only removes dead code from the VM compiler.
jit compilerのリファクタリング。

r20204 | fschneider@google.com | 2013-03-19 22:29:47 +0900 (火, 19 3月 2013) | 2 lines
Optimize smi multiply by 2 using shl by 1.
Smiの*2を、shift 1でEmitするように修正。
全部emitでやるのか。。そのうちinstcombineみたいなのが追加されるのかもね。

r20200 | fschneider@google.com | 2013-03-19 21:35:57 +0900 (火, 19 3月 2013) | 4 lines
Fix ARM and MIPS build after my last commit.
TBR=vegorov@google.com
20198向けのskeltonを追加。

r20198 | fschneider@google.com | 2013-03-19 21:06:23 +0900 (火, 19 3月 2013) | 31 lines
Replace scalarlist optimizations and split external array loads into two IL instructions.

This CL removes optimized access for scalarlist, and only the new TypedData classes
are optimized. I changed the runtime libraries core and math to use typedData
instead of scalarlist (Uint16List is used in StringBuffer, Uint32List by Math.random).

Instead of using LoadIndexed for internal and external arrays,
split external loads into a load of the backing store and a load
of the element.

v3 <- LoadIndexed(v1, index)

becomes

v2 <- LoadUntagged(v1, ExternalTypedData::data_offset)
v3 <- LoadIndexed(v2, index);

For this I introduce two new representations in the IL:

kUntagged (for values that hold a untagged pointer) and

kNoRepresentation (for instructions accept any input
representation)

Deoptimization does not need to know about kUntagged
since these values can never occur in the environment.

Also with this change:

fix COMPILE_ASSERT and use it in one place.

Cleanup IL printer output of deopt ids.

enum Representationを追加。
Representationにおうじて、Allocatorではlocationの付け替えを行う。

RECOGNIZED_LISTから、ByteArrayBase系をすべて削除。
すべてTypedListに置き替え。
TryInlineByteArraySetIndexedを削除。

LoadUntagged命令を新規追加
Externalの場合、LoadUntaggedを挿入している。。
ia32ではmovl(this, offset)するだけ。

この修正からscalarlistが激遅になるので、順次typeddataに置き替えないといけない。


r20167 | hausner@google.com | 2013-03-19 02:34:16 +0900 (火, 19 3月 2013) | 10 lines
Revise duplicate interface check

Move check for duplicate interfaces from parser to class finalizer.
The parser only compared interfaces by name, which did not work
properly for qualified (imported) names. Now the check happens in the
class finalizer after types are finalized.

Sadly, our test harness does not appear to know how to handle multitests that import libraries.
ParseInterfaceList()に置換。
Parserで、2重ループで冗長なインターフェースを検知するのをやめ。
AddInterface IfUniqeメソッドで何度もforを回すような処理を削除。

Parserでは、interfaceの登録のみ行う。
冗長なinterfaceはfinalizerでerrorを返す。ここはクラスごとに1重ループのみ


r20084 | hausner@google.com | 2013-03-16 00:59:24 +0900 (土, 16 3月 2013) | 12 lines
Mixins with Generics
This change adds support for generics to mixins.
It's not a particularly elegant implementation,
so I expect to change how it works internally in later checkins.

Also, there is still one aspect of the implementation that is incorrect.
In the case of typedef, the newly introduced name is not yet an alias for the mixin application.
Instead, the MA is a superclass of the typedef name.
That will need to be fixed in a later checkin. I don't want to make this change bigger.
class MixinAppTypeを追加。Raw版もある。
super_typeとmixin_types[]を保持。
parserでsuper_typeは解決するのかな。
mixin_application_typeの配列も含めて、parserでMixinAppTypeを作成する。
interfacesは、parserではpending

finalizerでは、CloneTypeParameters()
superとmixin classesからtype parameterをかき集める。
TypedArguments cloned_type_paramsに全部一緒くたに突っ込む。
順番は、1. super 2. mixin types
superのみ、Backtick()を名称にconcatする
mixinのtype parameterは、そのまま取り込む。
withで指定した際のtype parameterは、同じであると判断すると。


r20078 | asiva@google.com | 2013-03-15 22:33:11 +0900 (金, 15 3月 2013) | 2 lines
Add the native intrinsic TypedData_setRange to optimize the setRange call
when the destination and source of setRange are of the same typeddata type.
static void TypedData::Copy()を追加。
memmove

typeddata.dartにおいて、_setRangeはTypedData_setRangeを呼び出す。
typeddataなので、setRangeの際に、同じ型か判定する。

r20048 | regis@google.com | 2013-03-15 06:33:03 +0900 (金, 15 3月 2013) | 4 lines
Make allocation of Dart parameters and local variables architecture independent.
Enable a couple more vm tests on ARM.
Fix function usage counter access on ARM.
Dart stack frame layout
以下のように抽象化。
int param_frame_index = (num_params == function.num_fixed_parameters()) ?
                      (kLastParamSlotIndex + num_params - 1) : kFirstLocalSlotIndex;

in ia32 and x64
LastParamSlotIndex = 2
FirstLocalSlotIndex = -2
in arm
LastParamSlotIndex = 3
FirstLocalSlotIndex = -2

parameter i will be at fp[LastParamSlotIndex + num_params - 1 - i]
local variable j will be at fp[FirstLocalSlotIndex - j]

r20043 | zra@google.com | 2013-03-15 03:56:07 +0900 (金, 15 3月 2013) | 2 lines
Fixes a build warning about a format string.
%d -> %"Pd"

r20036 | fschneider@google.com | 2013-03-15 02:13:44 +0900 (金, 15 3月 2013) | 12 lines
Fix bug in optimized byte array views on tranferable backing stores.
This affects views when using scalarlist: The code generated
did not take the receiver class into account correctly,
so it only works for internal byte arrays.
For now, I just disable optimization for external backing stores.
The optimization will be added again for TypedDataViews in a future CL.
TEST=tests/standalone/byte_array_view_optimized_test.dart
r20024 | fschneider@google.com | 2013-03-14 23:09:38 +0900 (木, 14 3月 2013) | 6 lines
Revert: Support TypedData getters/setters in the optimizer.
because this CL was not complete and broken.
r20018 | fschneider@google.com | 2013-03-14 22:07:54 +0900 (木, 14 3月 2013) | 6 lines
Support TypedData getters/setters in the optimizer.
The optimizer now handles _TypedList which replaces _ByteArrayBase
and functions on TypedList getX/setX where X = Int8, Uint8, Int16, etc. are optimized.
MethodRecognizerにおいて、
ByteArrayBaseを削除して、TypedListに置換。???

r20025 | asiva@google.com | 2013-03-14 23:12:36 +0900 (木, 14 3月 2013) | 2 lines
Fix source generation for strings that have \$ in them.
stringの中に、$がうまっている? $の場合はescape


r20002 | fschneider@google.com | 2013-03-14 19:39:20 +0900 (木, 14 3月 2013) | 2 lines
Optimize TypedData in the same way as ScalarList.
MethodRecognizer TypedDataLength
TypedDataには、Externalもいる。
scalarlistと同様に、typeddataも最適化中。caseを差し込むだけ。

  • 最終更新:2013-04-06 21:58:27

このWIKIを編集するにはパスワード入力が必要です

認証パスワード