RevisionLog22000台

r22982 | kmillikin@google.com | 2013-05-22 15:21:57 +0900 (水, 22 5月 2013) | 10 lines
Remove the IC data array from the isolate.
Thread it as an argument rather than storing it in a global variable.
This means the programmer does not have to implement a shadow stack to save and
restore the data array,and there is no special handling needed for GC.
R=fschneider@google.com
isolateがic_data_arrayを管理してたのをやめて、GetICData()に置換したと。。global variable.
GetICData自体はzonehandleで管理する。
修正後はic_data_arrayをGCの対象外にしている。 これがやりたかった?

isolateごとに分割して綺麗なICDataにすることないよねと?
compileの最初にic_data_arrayを取得し、builderには引数経由で渡す。

r22981 | kmillikin@google.com | 2013-05-22 15:21:03 +0900 (水, 22 5月 2013) | 9 lines
Remove an unnecessary setter.
A field of the CompilerDeoptInfo had a setter that was always and only
called immediately after construction. Instead, set it in the constructor.
R=fschneider@google.com
CompilerDeoptInfoのConstructor引数にEnvironmentを追加して、setterを削除。

r22974 | srdjan@google.com | 2013-05-22 09:06:18 +0900 (水, 22 5月 2013) | 3 lines
Fix broken Mac build.
%d -> %"Pd"

r22972 | hausner@google.com | 2013-05-22 08:07:22 +0900 (水, 22 5月 2013) | 8 lines
Make VM debugger stop at every safe point
Debugger front-end can decide to ignore some steps and only halt
when the next line is reached.
R=iposva@google.com
last_bpt_lineっていう変数で制御するのをやめた。

r22967 | regis@google.com | 2013-05-22 07:07:55 +0900 (水, 22 5月 2013) | 5 lines
Implement backtracing and toggling of execution tracing in ARM simulator.
R=zra@google.com
stack_frameを改造して、pc_もiterateするようにしたと。
それ以前は、sp + SavedPcSlotFromSp * wordsize = pcで計算してた。

r22943 | fschneider@google.com | 2013-05-22 00:15:47 +0900 (水, 22 5月 2013) | 17 lines
Refactor the IL for object allocation with type arguments.
Two parts:

1. Change AllocateObjectWithBoundsCheck to a normal call that takes
 four arguments on the stack using PushArgument IL instructions.
  Before inputs were in registers and the instruction pushed them itself
  before the runtime call. This make the code more compact and simplifies
  the flow graph builder.

2. Simplify instructions for building constructor type arguments for another
 special case to simplify the instruction pattern and generate smaller
  code for that case.

R=srdjan@google.com
call_argumentsのnull caseを除去して処理をsimpleに。
AllocateObjectWithBoundsCheckのEmitで、pushするのをすべて削除。
直接GenerateCallRuntimeする。すべてNodeに引数を埋め込んでいる。
stub側に処理が展開されているため、pushするコードをstub側に共通化してコードサイズを減らしている
ということのはず。


r22931 | fschneider@google.com | 2013-05-21 20:09:34 +0900 (火, 21 5月 2013) | 8 lines
Further improve and simplify IL for building constructor type arguments.
Generate constants in the IL directly if possible and avoid temporary
local store/load completely in some cases.
R=kmillikin@google.com
type argumentsのshare系の処理。先月修正されてたとこかな。

機種依存で!use_insantiator_type_args
機種非依存部でExtractConstructorTypeArgumentsInstr()を生成するように代替


r22924 | kmillikin@google.com | 2013-05-21 18:34:50 +0900 (火, 21 5月 2013) | 11 lines
A few simple cleanups.

Remove BlockEntryInstr::PrepareEntry and use EmitNativeCode to emit the

native code.

Use Array::element_offset in a few places.

Comment and identifier fixes.

R=fschneider@google.com
PrepareEntryのEmitを削除し、
代わりにJoinEntryInstrとTargetEntryInstrのEmitNativeCodeに置換。


r22914 | asiva@google.com | 2013-05-21 10:02:28 +0900 (火, 21 5月 2013) | 8 lines
  • Some of the pre registered classes like Int, Double etc. were not being
marked as being prefinalized. Mark them as pre finalized.
  • Replaced the check (cls.functions() != Object::empty_array().raw()) as
indicating it is a pre-registered class.
R=regis@google.com
snapshotせずにcoreを読み込む場合に、set_is_prefinalized()するようにした。
state_bitsのkPreFinalizedを立てると。

r22912 | srdjan@google.com | 2013-05-21 08:59:36 +0900 (火, 21 5月 2013) | 5 lines
Intrinsify random nextState, improve perfromance significantly.
R=zra@google.com
64bit値を参照して遅かったnextState()をintrinsicに変換。
_nextState()をvmで実行すれば高速だが、jsではそうではないはず。

intrinsifer.hに定義を追加
_Random, _nextState() として追加している。これだけでintrinsiferに追加されるのだと思う。


r22904 | iposva@google.com | 2013-05-21 06:01:31 +0900 (火, 21 5月 2013) | 7 lines
  • Add a GetClassId() to Object, so that we do not have to
create a temporary class handle only to get at an object's
class id, which is stored in the object header.
R=asiva@google.com
GetClassId()
HeapになければSmi型、そうでないならGetClassId()を返す。
冗長なClass::Handleを削除するのが目的なのかな。
ObjectStoreへの参照がダイレクトに返るはず。

r22893 | asiva@google.com | 2013-05-21 01:02:30 +0900 (火, 21 5月 2013) | 5 lines
Add a call to CheckIsolateState in all paths of Dart_GetField and Dart_SetField.
R=ager@chromium.org
APIのget/setを叩く度に、
CheckIsolateState()でIsErrorをチェックすると。。

r22889 | asiva@google.com | 2013-05-20 14:15:39 +0900 (月, 20 5月 2013) | 6 lines
Use handles to save the object being read before calling StorePointer to make sure we are GC safe.
R=iposva@google.com
StorePointerの引数をArray::Handleしたものに変更。
リークしてたとか?


r22881 | srdjan@google.com | 2013-05-18 08:45:08 +0900 (土, 18 5月 2013) | 5 lines
Cleanups: addressed your comments from https://codereview.chromium.org/14962008/
R=iposva@google.com
Mintっていう用語から、Int64に置き換わりつつ?
内部はMintだけど、APIレイヤーとかはInt64って呼ぶっぽい。


r22857 | hausner@google.com | 2013-05-18 02:08:09 +0900 (土, 18 5月 2013) | 8 lines
Make breakpoints on == fire reliably
Add breakpoints in the path taken if one of the operands
in a == b is null.
R=asiva@google.com
RuntimeEntry BreakpointEqualNullHandlerを追加
debugger SignalBpReached()

PcDescriptorにkEqualNullを追加 Stub for comparison with null.
IsSafePoint()に追加

EqualNullでBreakpointを設定するってどういうことなんだろうか。
nullpoint exceptionを発生せずに、自動的にbreakさせるってことなのか。
もしくは、nullのときにnoSuchMethod Exceptionのときか。

可能な限りdeoptさせずにdebugする方向にもっていくのかな。


r22818 | zra@google.com | 2013-05-17 06:18:04 +0900 (金, 17 5月 2013) | 5 lines
Impelemnts some FPU arithmetic function for the MIPS simulator, assembler, disassembler.
R=regis@google.com
mipsの実装。

r22816 | srdjan@google.com | 2013-05-17 05:49:06 +0900 (金, 17 5月 2013) | 5 lines
Fix issue 5275: The VM must always generate the most compact form of an integer (Smi, Mint or Bigint).
Hide methods that can be used to bypass that assumption and require the use of Integer::NewXXX
which is guaranteed to return the most compact integer form.
R=asiva@google.com
RawMint(int64_t)
Smi::NewからInteger::Newに置換


r22810 | iposva@google.com | 2013-05-17 04:37:14 +0900 (金, 17 5月 2013) | 4 lines
  • Create a local scope so that the GC can collect the external typed data.
testコード。


r22806 | iposva@google.com | 2013-05-17 03:33:30 +0900 (金, 17 5月 2013) | 6 lines
Fix dartbug.com/10674:
  • Make sure that Dart_NewExternalTypedData returns a local handle.
R=asiva@google.com
NewExternalTypedData()
Handle() を作って、Newしてかえす。

Handle(isolate, New(data, length))
Handle.AddFinalizer(peer, callback)
return Api::NewHandle(Isolate, result.raw());

Handleを確保して、WeakReferenceで参照された状態を作って、Peerとcallbackを設定。
中身のrawだけ返すと。


r22804 | srdjan@google.com | 2013-05-17 03:06:18 +0900 (金, 17 5月 2013) | 5 lines
Fix build breakage of simmips on Mac OS X: binary constants are nto C++ standard, but GCC specific.
R=zra@google.com
mips向けの修正で、constants_mips.h


r22799 | hausner@google.com | 2013-05-17 00:44:05 +0900 (金, 17 5月 2013) | 8 lines
Allow breakpoints on one-liner functions
Fixes issue 10234. This is also the first step for setting
reliable breakpoints on a == b expressions.
R=srdjan@google.com
debuggerの修正
ResolveBreakpointPos()を追加。
IsSafePoint()っていう関数が作られている。
PcDescriptor::kIcCall kFuncCall kClosureCall kReturn
Dart VMは上記4つしかないのか。

r22763 | zra@google.com | 2013-05-16 08:51:17 +0900 (木, 16 5月 2013) | 5 lines
Implements int to double conversion instructions for MIPS simulator, assembler, disassembler.
R=regis@google.com
cvtdw cvtdlを追加。


r22760 | srdjan@google.com | 2013-05-16 07:20:02 +0900 (木, 16 5月 2013) | 5 lines
Fix crash when running Richards with --inlining-depth-threshold=30 --inlining-size-threshold=10000:
IfThenElseInstr may end up with both inputs being constant.
R=vegorov@google.com
left rightがConstantである場合、NE_STRICTもしくはNEの場合に、Emit時に評価。
movl if_true or if_false


r22752 | zra@google.com | 2013-05-16 03:37:47 +0900 (木, 16 5月 2013) | 5 lines
Implements FPU compare and branching for MIPS simulator, assembler, disassembler.
R=regis@google.com
mips向けの修正
GenerateGetStackPointerStubを実装。
FPU向けの命令を実装。
FpuBranchってなんだろ。。

r22744 | srdjan@google.com | 2013-05-16 00:37:14 +0900 (木, 16 5月 2013) | 5 lines
Fix failure in co19 test (tests/co19/src/LibTest/math/pow_A18_t01.dart),
where pow(1.0, NAN) returns 1.0 instead of NAN (replicate with --optimization-counter-threshold=5).
R=fschneider@google.com
kDoublePow、comisd movpasを生成する。

r22737 | fschneider@google.com | 2013-05-15 22:42:34 +0900 (水, 15 5月 2013) | 8 lines
Cleanup and avoid unnecessary code when building type arguments.
The code now uses only one temporary local instead of two.
It affect only unoptimized code since those temporaries are eliminated when translating into SSA.
R=kmillikin@google.com
type argumentsの共通処理をリファクタリング
処理順番を変更。type argumentsをLoadLocalやExtractConstructorに変更する処理。


r22733 | kmillikin@google.com | 2013-05-15 21:10:16 +0900 (水, 15 5月 2013) | 11 lines
Polymorphic inlining - prevent hoisting the last class check.

Do not check the receiver directly, check an (immovable) redefinition of the receiver.
This prevents hoisting the class check out of a loop when the receiver is loop-invariant.

Hoisting such a check can lead to excessive deoptimization.
R=vegorov@google.com
BUG=dart:10634
receiverからredefinitionに変更したのかな。バグ対


r22719 | regis@google.com | 2013-05-15 08:23:54 +0900 (水, 15 5月 2013) | 5 lines
Make deoptimization architecture dependent (it depends on the frame layout).
R=srdjan@google.com, zra@google.com
ret addrがframeに積むのではなく、
PCをframeをつむように修正(表現を修正) 抽象化した表現に変更し、
結果、全アーキテクチャでDeoptを呼び出した際に、TOSにPcMarkerがくるはず。

CreateDeoptInfo()を各アーキテクチャ依存で定義するように変更した。

CreateDeoptInfoは、
(1) EmitMaterializations //unboxed objects
(2) MarkFrameStart() //real frame start
(3) AddPcMarker() //callee PC marker
(4) AddCallerFp()
(5) AddReturnAddress()
(6) EmitMaterializationArguments()
(7) environment(arguments) stack copy
(8) AddPcMarker()
(9) AddCallerFp()
(10) Loop Envrironment
(11) - AddReturnAddress()
(12) - arguments stack copy
(13) - local variable and descriptor stack copy
(14) - AddPcMarker()
(15) - AddCallerFp()
(16) AddCallerPc() //for outermost environments
(17) Arguments stack copy //for outermost environments

ARM Dart Frame Layout
             |                    | <- TOS
Callee frame | ... |
             | saved PP           |    (PP of current frame)
              | saved FP           |    (FP of current frame)
              | saved LR           |    (PC of current frame)
              | callee's PC marker |
              +--------------------+
Current frame | ... | <- SP of current frame
             | first local        |
              | caller's PP        |
              | caller's FP        | <- FP of current frame
              | caller's LR        |    (PC of caller frame)
              | PC marker          |    (current frame's code entry + offset)
              +--------------------+
Caller frame | last parameter | <- SP of caller frame
             |  ...               |


IA32 Dart Frame Layout
             |                    | <- TOS
Callee frame | ... |
             | saved EBP          |    (EBP of current frame)
              | saved PC           |    (PC of current frame)
              +--------------------+
Current frame | ... | <- ESP of current frame
             | first local        |
              | PC marker          |    (current frame's code entry + offset)
              | caller's EBP       | <- EBP of current frame
              | caller's ret addr  |    (PC of caller frame)
              +--------------------+
Caller frame | last parameter | <- ESP of caller frame
             |  ...               |


X64 Dart Frame Layout
             |                    | <- TOS
Callee frame | ... |
             | saved RBP          |    (RBP of current frame)
              | saved PC           |    (PC of current frame)
              +--------------------+
Current frame | ... | <- RSP of current frame
             | first local        |
              | PC marker          |    (current frame's code entry + offset)
              | caller's RBP       | <- RBP of current frame
              | caller's ret addr  |    (PC of caller frame)
              +--------------------+
Caller frame | last parameter | <- RSP of caller frame
             |  ...               |



r22705 | iposva@google.com | 2013-05-15 05:33:04 +0900 (水, 15 5月 2013) | 9 lines
  • Correctly handle negative constant indices when constant propagation has not eliminated range checks.
  • Add test to verify the optimizer does not allow negative constant indices
when eliminating array bounds checks.
R=srdjan@google.com
FlowGraphOptimizerでeliminate bound checksを行っていたが、
その評価をCheckArrayBoundInstr::Emit時に行うようにした。削除可能なのは、lengthもindexもconstantに限る。

r22701 | srdjan@google.com | 2013-05-15 04:50:20 +0900 (水, 15 5月 2013) | 3 lines
Fix assert failures in checked mode: Redundant CheckArrayBoundInstr is not eliminated.
消されると。

r22698 | iposva@google.com | 2013-05-15 03:39:44 +0900 (水, 15 5月 2013) | 8 lines
  • Canonicalize array bounds checks to avoid deopting when comparing two constants.
  • Add named locations for index and length to make using locs less confusing.
R=srdjan@google.com
armとmips版のCheckArrayBoundInstrを実装。ついでにCanonicalize

r22695 | srdjan@google.com | 2013-05-15 03:16:44 +0900 (水, 15 5月 2013) | 5 lines
Added Object._cid getter, optimized it.
Added to (some) classes a static final _clCid.
Use those to test for exact type in VM's libraries.
R=iposva@google.com
get:_cidを高速化? bootstrap_natives.hについか。
InlineObjectCid()するだけ。

Library内で、charCodes is! xxx && charCodes is! yyy
みたいなケースを高速化する。code._cidで1回だけ読んで、 !=で比較すると。。
is演算子がボトルネックになりうるケースは、_cidを呼び出す。
基本的には、lib内で複数のクラスに継承、実装される可能性のある
親クラスがcidを組込みで持つときだけ効果があるのかな。


r22683 | johnmccutchan@google.com | 2013-05-15 00:52:40 +0900 (水, 15 5月 2013) | 5 lines
Unbox phis with Float32x4 or Uint32x4 type
R=vegorov@google.com
phiのpromotionに、kFloat32x4とkUint32x4を追加。

r22665 | vegorov@google.com | 2013-05-14 19:28:31 +0900 (火, 14 5月 2013) | 6 lines
Basic support for LICM of fully invariant loads.
R=fschneider@google.com
IsLoopInvariantLoadは、同じexpr_idかどうかで判定する。

MarkLoopInvariantLoads()
LoopHeaderにおいてLoop内のexpr_idを走査して全Add、再走査してRemoveAll()して残ったのが冗長なLoads


r22655 | srdjan@google.com | 2013-05-14 08:19:20 +0900 (火, 14 5月 2013) | 5 lines
Fix crash with --no-use-cha:
the optimizer expects a concrete type for array creation,
not dynamic as is the result because we cannot determine without CHA
if a class is guaranteed to have no sublcasses and has not been implemented.
Regardless of use_cha, always rely on known information for internal classes
that are not subtype or implemented by other clases.
R=asiva@google.com, vegorov@google.com
use-chaを使用する場合、privateなクラスであるとわかっている場合、
chaを無効化するような修正を加えた。
IsKnownPrivateの判定結果はどんな感じなのだろうか。
Core Collection TypedData MathはPrivateClass

r22649 | johnmccutchan@google.com | 2013-05-14 05:22:06 +0900 (火, 14 5月 2013) | 5 lines
Inline Uint32x4 operations
R=srdjan@google.com
select
flagXYZW系のinline

以下のIRを追加
Uint32x4BoolConstructor
Uint32x4GetFlag
Uint32x4Select
Uint32x4SetFlag
Uint32x4ToFloat32x4
BinaryUint32x4Op

TryInlineUint32x4Method()に集約されているはず。

BinaryUint32x4Op用のemitできると。
andps orps xorpsなどなど
mask and movups

SelectInstrは、
movpas notps andps andps orps


r22621 | fschneider@google.com | 2013-05-13 21:41:02 +0900 (月, 13 5月 2013) | 5 lines
Revert r22620 because of dart2js test failures.
TBR=kmillikin@google.com
test failed, set_is_optimization(false)

r22620 | fschneider@google.com | 2013-05-13 21:09:14 +0900 (月, 13 5月 2013) | 10 lines
Enable optimizing try-finally.
Everything needed is already in place by my previous CL
This just removes the early bailout in the parser.
R=kmillikin@google.com

r22615 | fschneider@google.com | 2013-05-13 19:33:24 +0900 (月, 13 5月 2013) | 32 lines
Optimize functions containing try-catch.
This is a first step towards fully optimizing try-catch-finally.

At a catch entry, all local variables and parameters are expected at a fixed stack location.
There is a list of initial definitions at the catch entry block,
similar to the initial definitions at graph entry.

Inside every try-block there is a special prologue code before each call (instruction that may throw)
inside the try-block. This prologue is similar to a parallel move instruction:
It moves all locals+parameters to the locations expected by the catch-entry block.
The stack frame is extended with the corresponding number of fixed slots right below the normal spill slots.

Every function containing try-catch has additional compiler-generated local variables to pass the context,
the exception and the stack trace.

Variable liveness analysis is adapted to treat locals inside try{} blocks specially:
Every call has an implicit LoadLocal of every local variable.
This CL uses a safe approximiation of liveness which can be optimized further.

Current restrictions which are planned for future CLs:

No inlining inside try-blocks.

No inlining of functions containing try-catch.

No try-finally yet.


R=kmillikin@google.com
TryCatchAnalyzer::Optimize()を追加した。
intelの場合オプション optimize-try-catch=true

IRにMayThrow()っていう仮想関数を追加した。
キモはEmitTrySync()かな?

tryの中では、live_inやkillの制御がネガティブに倒されている。
またRegAllocのCatchEntryでは、killとlive_inをAllにリセットする。
その結果、Try-CatchにおけるStackの固定割付きを解析しやすくする。

tryの後にcatchが複数 + finalyのケースを想定し、
Tryブロック内の暗黙のLoadLocalを最適化する機会を提供したい。
そのために、Try-CatchをEntryPointとみなすのかな?


r22600 | srdjan@google.com | 2013-05-11 06:33:14 +0900 (土, 11 5月 2013) | 6 lines
A load static of an initialized static final field can be converted to its value,
as long as it is in old space or Smi, and can therefore be a literal node.
Add special objects to mark non_constant and unknown_constant in constant propagator
so that there is no confusion with sentinels used in the graph.
R=asiva@google.com
object.hに用意
unknown_constant non_constant

VisitLoadStaticField()において、
isFinal -> IsSmi | | isOld の場合、そのままの値のpropagate
finalでない場合、non_constantを返す。

上記条件においては、non_constantと判定できるはず。ConstantPropagatorに影響あるはず。

r22596 | hausner@google.com | 2013-05-11 06:06:04 +0900 (土, 11 5月 2013) | 9 lines
Implement breakpoint for closure calls
Introduce a new PcDescriptor kind to distinguish closure calls from other runtime calls.
The debugger can patch these calls to set a breakpoint. When stepping into a closure call,
the debugger must fish out the closure object from the stack, find the function and set breakpoints in it.
Arm and Mips breakpoint stubs are not implemented yet.
ia32 and x64 stubs tested by hand. Automated test to follow.
R=srdjan@google.com
CodeGenerator RuntimeEntryに、BreakpointClosureHelperを追加、
code_patcherの処理追加
ClosureCallに対して、code patcherで行うらしい
また、getArgDescなどのケアも存在する。

GenerateBreakpoint
EnterFrame
pushl
callruntime(BreakpointClosureHelper)
popl
LeaveFrame
jmp

ClosureCallの場合、PatchStaticCallを使って飛び先を切り替える、helperを呼び出す


r22528 | srdjan@google.com | 2013-05-09 05:03:33 +0900 (木, 09 5月 2013) | 5 lines
Inline _OneByteString._setAt.
The key knowledge is that _setAt is an internal method that has to be called
with correct arguments, therefore no checks are needed.
R=fschneider@google.com, zra@google.com
OneByteString setAt()をintrinsicsとは別に、recognizerに追加した。
optimizerで、StoreIndexedInstrに置換する。


r22523 | asiva@google.com | 2013-05-09 03:56:38 +0900 (木, 09 5月 2013) | 7 lines
Remove print_bootstrap flag as it is not needed anymore considering that we
load core libraries directly from the sources and do not concatenate all the
files into a single script file.
R=regis@google.com
オプション print_bootstrapを削除したらしい。。
ソースコードを復元して出力する必要はないよね。。


r22514 | asiva@google.com | 2013-05-09 01:42:46 +0900 (木, 09 5月 2013) | 13 lines
Final step towards loading core library scripts directly from the sources
  • Modify bin.gypi to ensure that the io library and patch files are read
directly from the sources. Remove the source buffer generation step in
 the gypi files for all the io library and patch files.
  • Restructure the code a bit to eliminate some code duplication.
  • Delete runtime/tools/concat_library.py
R=ager@google.com, sgjesse@google.com
bin/builtin.ccを修正しているのかな。
binの下のunreachableを実装しているのかな。


r22505 | podivilov@google.com | 2013-05-08 22:00:09 +0900 (水, 08 5月 2013) | 5 lines
Fix Clank+Dart compilation.
R=iposva@google.com
runtime_configurations_android.gypiを新規追加


r22488 | asiva@google.com | 2013-05-08 09:44:50 +0900 (水, 08 5月 2013) | 5 lines
Minor cleanup.
R=srdjan@google.com
whileをforに置換

r22485 | vegorov@google.com | 2013-05-08 08:40:42 +0900 (水, 08 5月 2013) | 29 lines
Implement a variation of scalar replacement for non-escaping allocations.
AllocationSinking pass discovers non-escaping allocations
that have no input uses other than uses in the stores into its own fields.
Every environment use of such allocation is replaced by a state snapshot
(MaterializeObject instruction) that describes the state of each initialized field in the object.
State snapshots are computed through an additional round of load-forwarding.

Once snapshots are computed allocations are removed from the graph.
MaterializeObject instructions are not compiled into native code
but produce deoptimization instructions instead that
describe how object should be materialized at deoptimization.
Deoptimization instructions now follow the following format:

[mat obj #1]...[mat obj #N][ret addr][... mat arguments ...][... real frames ...]

  • the prefix describes each object to materialize on deopt via kMaterializeObject instruction;
  • actual values that are needed for materialization are emited as a part of bottom-most stack frame.
This is done to simplify implementation:
 they need to be discoverable by a GC during materialization phase.
 At the end of deoptimization they will be removed from the stack;
  • normal stack slots can refer to materialized objects via kMaterializedObjectRef instruction.
Additionally this change contains fixes in load-forwarding
 that are needed to guarantee that all artificial LoadField instructions inserted
 during AllocationSinking are correctly replaced with actual values.
 Limitations of the current implementation:
  • can't eliminate allocations that flow into phis but otherwise don't actually escape;
  • can't sink allocations out of loops;
  • allocation with type arguments are not handled.

R=regis@google.com, srdjan@google.com, zra@google.com
optimizerの修正
AllocationSinkingの追加。
escapeしないallocateを、MaterializeObjectInstrに置換する。
その後Allocateを削除する。
条件は、allocate後にsingle usesのみ。
簡易escape解析.Tracerなどの計算で一時オブジェクトを作るケースで重宝する。

MaterializeObjectInstrを追加。
最適化用のIRっぽい。AllocationSinking pass.で削除される。
EmitMaterializations()は空。

loadとのaliasの修正。load eliminationが捗るはず。
side effectの判定を調整し、independentの条件がいろいろ追加。

上記に合わせて、deoptinfoの修正。
allocateされなくなるため、deoptinfoの修正や
各deoptごとに情報を保持する必要がある。

CodeGeneratorのdeoptimizeのmaterializeに修正?
class DeferredObjectRef


r22471 | zra@google.com | 2013-05-08 03:21:18 +0900 (水, 08 5月 2013) | 9 lines
Fixes for integer division on ARM hardware so that assembler tests pass.
Now, all VM tests that pass on SIMARM, pass on ARM.
Also, more assertions in the ARM disassembler and simulator to
make sure that condition codes aren't used with bkpt.
R=regis@google.com
CPUFeaturesで判定。
integer_division_supported = idiva

r22470 | regis@google.com | 2013-05-08 03:06:21 +0900 (水, 08 5月 2013) | 6 lines
Remove stack_frame_<arch>.cc files.
The architecture specific information is in stack_frame_<arch>.h files.
R=srdjan@google.com
stack_frame.hに変換。

r22458 | kmillikin@google.com | 2013-05-07 21:50:37 +0900 (火, 07 5月 2013) | 9 lines
Use the constant pool for all constants, not just null.
Remove constants from the instruction stream in optimized code at SSA construction time.
Modify the range analysis pass to analyze values in the constant pool.
R=fschneider@google.com
FlowGraphOptimizerからFlowGraphに変更?
FlowGraphに統一して、GetConstant()でpool登録、取得。
ConstantはFlowGraphで管理するけど、コンパイルのたびにFlowGraphを作り直すのは変わらないのかな。


r22452 | iposva@google.com | 2013-05-07 16:59:03 +0900 (火, 07 5月 2013) | 4 lines
Fix dartbug.com/10415:
  • Append 'on "$os_$arch"' to the version string on the VM.
OS::Name()を追加して、Version::String()でconcat


r22436 | asiva@google.com | 2013-05-07 03:16:25 +0900 (火, 07 5月 2013) | 11 lines
Third step towards loading core library scripts directly from the sources
  • Read the patch source files using the source mapping array generated for
patch files instead of relying on a generated buffer containing the sources.
  • Modify the gyp files to ensure that all patch libraries are read directly
from the sources. Remove the source buffer generation step in the gypi
 files for all patch files.
R=hausner@google.com, iposva@google.com
LoadPatchFiles()
よくわからん。。

r22434 | kmillikin@google.com | 2013-05-07 02:22:18 +0900 (火, 07 5月 2013) | 13 lines
Initial support for polymorphic inlining.
Consider each polymorphic variant separately for inlining in frequency
order. Share inlined bodies for shared targets.

Insert an SSA redefinition of the receiver in each inlined variant to
prevent hoisting. Hoisting code specialized to the receiver (e.g.,
direct access to internal fields of typed data arrays) out of the
inlined body is not safe.
R=fschneider@google.com, srdjan@google.com
SortICDataByCount()でソートするのかな。
InheritDeoptTargetなんてものがあるのか。
これでdeoptinfoを調整しないと落ちるのかな。

以下のIRを追加
RedefinitionInstr
これはEmitでunreachableなのか。
RemoveRedefinitions()ってのでRangeAnalysisの前に綺麗にする。
これは既存のIRをwrapして、何かするのか。IRのspillみたいなものんか

LoadClassIdInstr
これはSmiTag用の特殊パスを用意した、LoadClassId

本家の処理はInlinerにある
class PolymorphicInliner
PolymorphicInstanceCallをPolymorphicInlinerでinline()

TryInlining()でRedefinitionInstr()を生成し、calleeのargumentsをwrapするのか。

Inline()
-> TryInlining()
 -> BuildDecisionGraph()
LoadClassIdInstrを生成して、StrictCompareの生成、

CheckInlineDuplicate()ってのがあって、複数targetの重複をチェックする。。
基底クラスの同じメソッドを呼び出す場合かな。

オプション制御はないらしい。


r22432 | asiva@google.com | 2013-05-07 02:07:34 +0900 (火, 07 5月 2013) | 5 lines
Fix for issue 10395, call noSuchMethod if a method is not found when using the Dart C API.
R=srdjan@google.com
dart_api_implの修正
Errorの代わりに、InvokeNoSuchMethodを投げるようにした。

r22415 | kustermann@google.com | 2013-05-06 23:49:21 +0900 (月, 06 5月 2013) | 15 lines
Fixed bug in vm/benchmark_test.h
The Benchmark objects were marked as 'const', but Benchmark::CreateIsolate
writes to 'Benchmark::isolate_'. This was not discovered so far, since GCC
places the global Benchmark objects into a read-write section.

It turns out that clang is able to create the const Benchmark objects at
compile time and puts them into a read-only section of the ELF file (it probably
inlines the constructor).
Thus, at runtime Benchmark::CreateIsolate tries to write to a read-only address
and crashes with a SEGV.
R=iposva@google.com
const抜いた

r22399 | srdjan@google.com | 2013-05-04 08:48:10 +0900 (土, 04 5月 2013) | 5 lines
Improve performance of String.fromCharCodes by implementing it in Dart.
Add tow internal natives to Dart in order to be able to allocate and fill a String.
Next step is to implement String.concatAll in Dart as well
and to inline String._setAt operation (currently intrinsified).
R=asiva@google.com
intrinsicsにOneByteStringのsetAtとallocateを追加。
setAtは、ia32 asm 6命令くらい。
allocateはtryAllocateを呼び出す。

lib/string_patch.dartでは、createFromCharCodes()において、
上記の組込み関数を呼び出す。
s = allocate()
for(int i=0; i<charCodes.length;i++)
s.setAt(i, charCodes[i])


r22394 | regis@google.com | 2013-05-04 06:42:16 +0900 (土, 04 5月 2013) | 6 lines
Introduce architecture specific headers describing Dart stack frames.
The actual cleanup will follow in another cl.
R=asiva@google.com

r22393 | iposva@google.com | 2013-05-04 05:59:42 +0900 (土, 04 5月 2013) | 8 lines
  • Remember the fact that an object has been added to the
store buffer by a bit in the header.
  • This bit can be used to filter out redundant additions
into the store buffer making the dedup sets not needed.
  • Remove the need for a HashSet when remembering old to
new references.

GCで参照、操作するheaderに、rememberedbitを追加した。
この前freeを削除してwatchを移動したところ。
IsRemembered() SetRememberedBit()
UpdateStoreBufferの際には、RememberedBit()を参照して、すでにrememberedbitが立っているかチェックする。
重複したupdate処理は不要であるため、重複している場合省略する。
rememberedbitを立てるタイミングは、上記のチェックが終わった直後、GenerateUpdateStoreBufferStub()
以前は、とりあえずupdateを行い、updateの中で重複チェックをしていた。

また、old gcでも操作する。
oldでmarkAndPushされた際には、RememberedBitをclear
MarkObjectの際には、mark中のobjectがNewObjectかつOldObjectからの枝だった場合、
起点となっているOldObjectのRememberedSetを立てて、GC対象に追加する。

StoreBufferでは、deduplicationsetを使わないように修正。
StoreBufferBlockはシーケンシャルリストだったが、StoreBufferもリストに変更?
その結果、StoreBufferのContains()が、blockとbufferを二重にforループで走査してる。。


r22386 | regis@google.com | 2013-05-04 03:39:40 +0900 (土, 04 5月 2013) | 11 lines
Cleanup deoptimization code to make it architecture independent (in progress).
Implement some optimizing code on ARM in order to debug the above cleanup using
inline_stack_frame_test (still skipped in the vm status file).

This is not quite working yet, because CompilerDeoptInfo::CreateDeoptInfo
makes assumptions about the stack layout that are not valid for ARM or MIPS.
This will be cleaned up in a following cl.
R=srdjan@google.com, zra@google.com
機種依存コードを整理。
おそらくPcSlotIndexFromSp = -1かな。
deopt infoの各種indexが定数のままだったので、
各アーキテクチャごとに定義。
ARMの場合、退避されているframeの要素が多いらしい。

  1. /* ARM Dart Frame Layout
  2. | | <- TOS
  3. Callee frame | ... |
  4. | current LR | (PC of current frame)
  5. | PC Marker | (callee's frame code entry)
  6. +-------------------+
  7. Current frame | ... | <- SP of current frame
  8. | first local |
  9. | caller's PP |
  10. | caller's FP | <- FP of current frame
  11. | caller's LR | (PC of caller frame)
  12. | PC Marker | (current frame's code entry)
  13. +-------------------+
  14. Caller frame | last parameter |
  15. | ... |
  16. */

  1. /* X64 Dart Frame Layout
  2. | | <- TOS
  3. Callee frame | ... |
  4. | current ret addr | (PC of current frame)
  5. +-------------------+
  6. Current frame | ... | <- RSP of current frame
  7. | first local |
  8. | PC Marker | (current frame's code entry)
  9. | caller's RBP | <- RBP of current frame
  10. | caller's ret addr | (PC of caller frame)
  11. +-------------------+
  12. Caller frame | last parameter |
  13. | ... |
  14. */

  1. /* IA32 Dart Frame Layout
  2. | | <- TOS
  3. Callee frame | ... |
  4. | current ret addr | (PC of current frame)
  5. +-------------------+
  6. Current frame | ... | <- ESP of current frame
  7. | first local |
  8. | PC Marker | (current frame's code entry)
  9. | caller's EBP | <- EBP of current frame
  10. | caller's ret addr | (PC of caller frame)
  11. +-------------------+
  12. Caller frame | last parameter |
  13. | ... |
  14. */


r22396 | asiva@google.com | 2013-05-04 07:50:26 +0900 (土, 04 5月 2013) | 5 lines
Resubmit 22380 after fixing the windows build.
R=hausner@google.com
r22382 | asiva@google.com | 2013-05-04 03:26:34 +0900 (土, 04 5月 2013) | 3 lines
Revert 22380 to investigate windows build break.
r22380 | asiva@google.com | 2013-05-04 03:12:24 +0900 (土, 04 5月 2013) | 22 lines
Second step towards loading core library scripts directly from the sources
  • Modify the library source generator to generate a source mapping array
The generated array is of the following format:
 const char* dart::Bootstrap::corelib_source_paths_[] = {
   "dart:core", "/workspace1/dart-all/dart/sdk/lib/core/core.dart", 

  "bool.dart", "/workspace1/dart-all/dart/sdk/lib/core/bool.dart", 
   ...
   ...
 };

  • Read the source file using the source mapping array instead of relying on
a generated buffer containing the sources

  • Modify the gyp files to ensure that all libraries are read directly
from the sources. This CL does not change the patch part yet.
 Remove the source concatentation step in the gypi files for all the core
 libraries.

R=hausner@google.com, iposva@google.com
vmからdartのソースコードを読み込んでbootstrapする部分の修正。makeと一緒に。
gypiも一緒に。
dart vmのbuildシステムは正直よくわからない。。

r22345 | asiva@google.com | 2013-05-03 08:10:53 +0900 (金, 03 5月 2013) | 7 lines
Potentially fix the crash reported in Issue 10385
  • Fix use of a tagged pointer
  • Fix a memory leak
R=srdjan@google.com
heap profierの修正?
data[0]を使わないように修正とk.

r22344 | zra@google.com | 2013-05-03 07:58:52 +0900 (金, 03 5月 2013) | 7 lines
Allows "Hello, world!" to run on ARM hardware.
Also, enables more vm tests on SIMMIPS.
R=regis@google.com
ちょっとした修正だけど、
GenerateGetStackPointerを追加したのかな

r22340 | vegorov@google.com | 2013-05-03 06:20:49 +0900 (金, 03 5月 2013) | 13 lines
Improve load forwarding:
  • stores/loads that access different fields can't alias each other;
  • if result of the AllocateObject does not escape then stores/loads to it does not alias stores/loads to other objects.

Other:
  • rename LoadFieldInstr's value to instance to better convey meaning and match StoreInstanceFieldInstr;
  • slightly bump inlining_size_threshold;
  • canonicalize UnboxDouble(BoxDouble(v)) and BoxDouble(UnboxDouble(v)) patterns;
R=srdjan@google.com
canonicalizeパスの実行を1回追加した。
propagateとallocateの間に1回追加。
boxdouble unboxdoubleのcanonicalizeを追加。

loadInstanceFieldに、load->setfieldを挿入ってどういうこった。。

ssaにaliasを導入して、load-store-loadの別名管理を行って、
load側のaliasの判定を強化。


r22331 | zra@google.com | 2013-05-03 02:53:34 +0900 (金, 03 5月 2013) | 12 lines
On MIPS, keeps Object::null() in a register.
On MIPS, we have a lot of registers, and we don't use very many of them.
This change removes the second temporary register TMP2, and instead
dedicates a register to holding Object::null(), which is used frequently
for comparisons, etc..
Also, uses branch delay slot when leaving a dart frame and returning.
R=regis@google.com
mipsの修正かな。
TMP2 T9が削除。かわりにNULL REG = T8を導入かな。

r22313 | iposva@google.com | 2013-05-02 20:40:23 +0900 (木, 02 5月 2013) | 6 lines
  • Fixed some old-style casts.
  • Remove TODO as it is not feasible to ever enable.
R=kustermann@google.com
old-style castは、VMのC++をさす。static_cast reintepreter_castへ置換かな。

r22285 | regis@google.com | 2013-05-02 06:33:08 +0900 (木, 02 5月 2013) | 6 lines
Fix ARM memory addressing mode 3 in assembler.
Update assembler test.
R=zra@google.com
arm assemblerの修正
immediateのサポート追加?

r22278 | hausner@google.com | 2013-05-02 05:46:48 +0900 (木, 02 5月 2013) | 9 lines
BREAKING CHANGE: enforce part of directive
For historical reasons, the VM is currently too lenient when parsing library parts.
Files that get loaded through a 'part' directive must start with a 'part of libraryname;' clause.
The VM so far has not reported an error if the clause is missing.
This change enforces the grammar as the Spec mandates it.
Library parts that do not start with 'part of' will no longer compile.
R=srdjan@google.com
part ofの導入?
内部ではparserのみ修正。かな。

r22277 | johnmccutchan@google.com | 2013-05-02 05:40:24 +0900 (木, 02 5月 2013) | 6 lines
Inline remaining Float32x4 operations.
R=srdjan@google.com
いっぱい追加
negate clamp with toUint32x4
Float32x4ZeroArgInstrt
Float32x4ClampInstr
Float32x4WithInstr
Float32x4ToUint32x4Instr
Recognizerのパターンマッチが整理されて、
TryInlineFloat32x4Methodにまとめられた。

ZeroArgは、内部にkindを持っていて、
negateps absps

clanpは、minps maxpsをemit

with系がemitされた際には、unboxされたoutput registerが出力されるのか。

r22268 | hausner@google.com | 2013-05-02 03:34:48 +0900 (木, 02 5月 2013) | 8 lines
Loosen aggressive assert in debugger stack trace code
A closure may be called from native code.
In that case we will not find a saved context variable in the dart frame 'below' the closure.
R=asiva@google.com
correct stack trace errorの追加かな。

r22262 | zra@google.com | 2013-05-02 01:56:31 +0900 (木, 02 5月 2013) | 7 lines
On MIPS, uses more branch delay slots.
Also, tries to reorganize loops to look like what gcc produces.
R=regis@google.com
mips向けの修正
量が多くて把握しきれないが、
LeaveStubFrameAndReturnってのが追加なのかな。


r22213 | hausner@google.com | 2013-05-01 08:03:30 +0900 (水, 01 5月 2013) | 6 lines
Instrument debugger to track down stack trace problems
  • Print caller and callee if an expected saved current context is not found.
  • Make removing a non-existing breakpoint a no-op.
print-verboseの場合に、
StackTraceErrorを出力すると。

r22212 | srdjan@google.com | 2013-05-01 07:59:40 +0900 (水, 01 5月 2013) | 5 lines
Fix missing pc descriptor for NoSuchMethodExceptions
when calling closures with wrong number of arguments.
R=regis@google.com
AddCurrentDescriptorを呼び出す処理を追加

r22209 | srdjan@google.com | 2013-05-01 07:05:14 +0900 (水, 01 5月 2013) | 44 lines
Fix error reporting when calling static methods and closures withh mismatched arguments.
Closures BEFORE:

      • -
Unhandled exception:
Class '(dynamic, dynamic, dynamic) => dynamic' has no instance method 'call'.

NoSuchMethodError : method not found: 'call'
Receiver: Closure: (dynamic, dynamic, dynamic, dynamic) => dynamic from Function 'foo':.
Arguments: [2]

Closures NOW:
      • -
Closure call with mismatched arguments: function 'A.foo'

NoSuchMethodError: incorrect number of arguments passed to method named 'A.foo'
Receiver: Closure: (dynamic, dynamic, dynamic, dynamic) => dynamic from Function 'foo':.
Tried calling: A.foo(2)
Found: A.foo(a, b, c)

Statics BEFORE:
      • -
Unhandled exception:
No top-level method 'foo' declared.

NoSuchMethodError : method not found: 'foo'
Receiver: Type: class '::'
Arguments: []

Statics NOW:
      • -
Unhandled exception:
No top-level method 'foo' with matching arguments declared.

NoSuchMethodError: incorrect number of arguments passed to method named 'foo'
Receiver: top-level
Tried calling: foo(...)
Found: foo(a, b, c)

R=regis@google.com

r22196 | hausner@google.com | 2013-05-01 04:46:07 +0900 (水, 01 5月 2013) | 5 lines
Another fix for debugging stack traces and captured variables.
R=asiva@google.com
captured varの場合、local varible descritprを介して行う。
contextをたどりながら、対象のdescriptorを探すと。

r22185 | johnmccutchan@google.com | 2013-05-01 02:26:42 +0900 (水, 01 5月 2013) | 5 lines
Inline Float32x4 min,max,sqrt,reciprocal,reciprocalSqrt, and scale
R=srdjan@google.com
上記が組み込み関数になったのだ。
MinMaxInstr
minps maxps

ScaleInstr
shufps mulps

SqrtInstr
sqrtps
Reciprocal
reciprocol sqrt

reciprocolは
1/xの近似値を求める演算っぽい。divよりメリットがあるらしい。


r22181 | iposva@google.com | 2013-05-01 00:05:45 +0900 (水, 01 5月 2013) | 8 lines
  • Remove kFreeBit, as it is not needed any longer
except during snapshotting.
  • Move the kWatchBit into the available space as its
use does not overlap with snapshotting.
R=vegorov@google.com
objec headerのfree bitを削除?
freeのところには、watchedが移動した。
どっちもgcで使うビットで、free bitはsweepの際のfree listの管理につかっていたのかな。
watchedはold gcで使い続けるらしい.
mark bitだけで足りるため、freeは削除と。

r22180 | vegorov@google.com | 2013-04-30 23:25:16 +0900 (火, 30 4月 2013) | 9 lines
Track side-effect free paths in the graph to allow CSE and LICM for instructions
that depend on some side-effects.
Right now only a single side-effect is important for CSE/LICM purposes: externalization.
But abstractions are in place to introduce others if needed.
R=fschneider@google.com
EffectSetクラスを作成。no-effect externalizationがある
BlockEffectクラスを作成。
修正が大規模すぐる。。
副作用の有無の処理じたいは変わっていないはず。


r22167 | fschneider@google.com | 2013-04-30 17:20:48 +0900 (火, 30 4月 2013) | 5 lines
Fix compiler warning about bool conversion.
R=iposva@google.com, srdjan@google.com
return nullを削除。

r22159 | zra@google.com | 2013-04-30 09:35:09 +0900 (火, 30 4月 2013) | 8 lines
Uses slt and sltu for signed vs. unsigned comparison by the MIPS assembler.
Previously, the sequence subu/b{gt,le,...}z was used, which fails to
distinguish between signed and unsigned comparison.
R=regis@google.com
mispの場合、unsignedless signedless などを導入しているらしい。

r22155 | regis@google.com | 2013-04-30 08:39:46 +0900 (火, 30 4月 2013) | 11 lines
Further improve type optimization reusing the type argument vector of the
instantiator of generic objects (fixes issue 10149).
This optimization considers the generic type argument vector of the instance
being allocated as well as the generic type argument vector of the compile
time type of the instantiator.
If the instance vector is a prefix of the instantiator vector,
the instantiator vector can be shared by the new instance.
R=srdjan@google.com
canShareInstantiatorTypeArguments()
デフォルトfalseで、falseの場合、shareしないと。

r22154 | asiva@google.com | 2013-04-30 07:00:18 +0900 (火, 30 4月 2013) | 8 lines
First step towards loading the core library scripts directly from the sources
instead of concatenating all the scripts and linking them into the executable.
  • Refactor the bootstrap script loading and compilation part to use a
custom bootstrap library tag handler
R=iposva@google.com
load scriptの処理が、objectとobject_storeに集約されたのかな。
bootstrapまわりは綺麗にリファクタリングされた。重複コードが色々と取り除かれた。

r22144 | johnmccutchan@google.com | 2013-04-30 04:17:38 +0900 (火, 30 4月 2013) | 5 lines
Inline Float32x4 comparison.
R=srdjan@google.com
comp[eq gt gte lt lte ne]
IRを追加。
BoxUint32x4Instr
UnboxUint32x4Instr
Float32x4ComparisonInstr

unboxはfloat32x4のcheckとdeoptをセットして、movups
boxはTryAllocateして、movups

r22132 | zra@google.com | 2013-04-30 02:52:09 +0900 (火, 30 4月 2013) | 5 lines
Enables API tests on MIPS
R=regis@google.com
mips向け
deoptimize系追加

r22124 | vegorov@google.com | 2013-04-30 00:51:15 +0900 (火, 30 4月 2013) | 6 lines
Ensure that safepoints are assigned to the live ranges of constants.
R=fschneider@google.com
BUG=dart:10272
AssignSafePoints()の位置を変更。
constant用のパスを通ってもsafepointsは成立すると。

r22110 | vegorov@google.com | 2013-04-29 19:49:58 +0900 (月, 29 4月 2013) | 6 lines
Align code by 32 bytes to reduce benchmark flakiness on Intel CPUs.
R=iposva@google.com
win linuxのalignを、ia32/x64の場合16から32へ変更。

r22096 | srdjan@google.com | 2013-04-27 09:04:21 +0900 (土, 27 4月 2013) | 5 lines
Move negative length checks from Dart into the native.
R=asiva@google.com
negative length check時に例外を投げる処理を追加。
した結果、fingerprintが変更された。

r22088 | srdjan@google.com | 2013-04-27 06:20:49 +0900 (土, 27 4月 2013) | 3 lines
Fix recognition of factories (for setting result cid) and add them to checks.
RECOGNIZED_LIST_FACTORYは.hへ移動。
symbols.hでも参照する必要があるため?

r22081 | vegorov@google.com | 2013-04-27 03:52:58 +0900 (土, 27 4月 2013) | 6 lines
Fix bad copy&paste in InvokeMathCFunctionInstr::AttributesEqual.
TBR=srdjan@google.com
fix

r22078 | vegorov@google.com | 2013-04-27 03:10:59 +0900 (土, 27 4月 2013) | 8 lines
Cleanup implementation of SmiToDouble to use unboxed double result.
Allow CSE to eliminate redundant SmiToDouble, DoubleToDouble, InvokeMathCFunction instructions.
R=srdjan@google.com
SmiToDoubleの値は、constantの場合oldに領域確保か。
emitの際は、cvtsi2sdを呼び出すだけ。???
SmiToDoubleInstrは、smiの値からunboxed doubleに変換する命令になりましたよと。
たしかに、doubleにboxingしてもすぐにunboxするし、無駄なのかも。

r22077 | asiva@google.com | 2013-04-27 03:01:43 +0900 (土, 27 4月 2013) | 5 lines
Fix some minor nits:
  • Float32x4 and Uint32x4 were using the wrong script (corelib script).
  • Uint32x4 was not being registered.
冗長な宣言だった?

r22070 | hausner@google.com | 2013-04-27 00:27:00 +0900 (土, 27 4月 2013) | 5 lines
Fix context-allocated variables in stack traces
The debugger did not properly use saved contexts when collecting a stack trace.
debuggerの機能。
以前修正したsaved contextの処理を綺麗にしたような。。

r22064 | iposva@google.com | 2013-04-26 15:57:29 +0900 (金, 26 4月 2013) | 7 lines
  • Disassociate old page size from new allocatable size.
  • Have a different cutoff for large page allocations
and default old page size.
  • Do not align old pages to old page size.
  • Do not track used space during marking.
sweepはちゃんと読んでないから。。
上記のコメントの元修正されているのかよくわからん。。

r22062 | regis@google.com | 2013-04-26 09:04:13 +0900 (金, 26 4月 2013) | 10 lines
Improve type optimization reusing the type argument vector of the instantiator of generic objects:
Do not require anymore that the vector be of the same length. A longer vector
with a compatible prefix is acceptable. This saves a class id check and length check.
We still require that the uninstantiated type argument vector be the identity
vector, i.e. consisting only of type parameters with consecutive indices
starting at zero. We will relax this requirement in a later change.
type_argumentsのlengthが変わった?よくわからん。。
type_argumentsはgenericsで使用する型引数に相当する。
type_argumentsのlengthは固定だが、reuseできるように、length() >= xに変更したと。
インデックスの並びでidentityチェックを行い、長さは固定ではない。
という感じに制限を緩めて再利用していくらしい。

r22055 | johnmccutchan@google.com | 2013-04-26 07:03:05 +0900 (金, 26 4月 2013) | 3 lines
Inline Float32x4 constructors
以下をIRにして高速化。
Constructor
zero
splat

r22042 | zra@google.com | 2013-04-26 03:03:15 +0900 (金, 26 4月 2013) | 9 lines
Adds support for debugger API on MIPS.

Enable debugger api tests on MIPS.
Enable isolate tests on MIPS.
Enable code descriptors tests on MIPS.
Enable snapshot tests on MIPS.
Enable heap tests on MIPS.
mips実装。

r22032 | smok@google.com | 2013-04-25 23:22:30 +0900 (木, 25 4月 2013) | 3 lines
Put everything in runtime/bin into '::dart::bin' namespace.
namespaceの変更らしい。
dart::bin::xx

  • 最終更新:2013-05-24 03:27:10

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

認証パスワード