RevisionLog19000台

r19998 | asiva@google.com | 2013-03-14 19:18:00 +0900 (木, 14 3月 2013) | 2 lines
Remove Dart_GetScriptSource as it is not used anywhere.
DEPRECATEDがついていたんか。

r19996 | asiva@google.com | 2013-03-14 18:47:46 +0900 (木, 14 3月 2013) | 4 lines
Add a command line option to generate source code for a script
(apparently this would be useful for pretty printing the output of dart2dart)
Dart_GenerateScriptSource()を新規追加。
dart2dartで使う??? minifyから復元したソースを参照させるってことかな。

mainのオプションに、--print-sourceを追加。
を使用すると、参照されているすべてのソースコードを表示させると。

r19961 | zra@google.com | 2013-03-14 04:00:53 +0900 (木, 14 3月 2013) | 2 lines
Fix build.
int -> bool

r19958 | zra@google.com | 2013-03-14 03:43:16 +0900 (木, 14 3月 2013) | 8 lines
Copies Simulator Debugger from ARM to MIPS.
Also includes changes to keep it from aborting unexpectedly.
Among other things, I changed the Disassembler::Disassemble to return false
when the underlying decoder can't decode an instruction. Then,
the MIPS SimulatorDebugger will refuse to step or cont on an instruction
that the Disassembler can't decode.
DecodeInstruction()の引数を変更
Disassemble系の返値をboolに変更した。

mips simulatorの改造
armからの移植かな。
SimulatorDebugger
と、Simulatorにunimplだった機能を実装。
decodeでfailureがわかるようになった。


r19954 | vegorov@google.com | 2013-03-14 03:28:07 +0900 (木, 14 3月 2013) | 6 lines
Run type propagation after LICM to ensure correct reaching types for hoisted values.
R=fschneider@google.com
LICMの後に走るらしい。

r19932 | asiva@google.com | 2013-03-13 23:16:13 +0900 (水, 13 3月 2013) | 2 lines
Added check that the object being stored as a return value
in the NativeArguments array is a Dart instance.
SET_NATIVE_RETVALマクロ
IsDartInstance()のチェックがはいるようになった。

r19918 | fschneider@google.com | 2013-03-13 19:06:34 +0900 (水, 13 3月 2013) | 2 lines
Remove some assertion code in the GC from the release build.
assert用のflagをifdef DEBUGに移動。

r19917 | kmillikin@google.com | 2013-03-13 19:06:14 +0900 (水, 13 3月 2013) | 8 lines
Remove virtual functions on class InliningContext.
There is only one implementation of InliningContext, so there is no need for
virtual dispatch.
R=fschneider@google.com
ValueInlineContextをInlineContextに置換?
ReplaceCallがvirtualでなくなったと?

r19894 | tball@google.com | 2013-03-13 05:42:36 +0900 (水, 13 3月 2013) | 2 lines
Disable stack context when its frame is for optimized code.
optimizeしていない場合に限り、GetSavedContext()でctxを復元する。
optimizedの場合、ctx_がnullであるため、
debuggerのContextLevel()において、
ctx_.IsNullの場合unknownを返す。

r19864 | fschneider@google.com | 2013-03-12 22:51:32 +0900 (火, 12 3月 2013) | 11 lines
Add a new, separate block entry instruction for catch-blocks.
This is a preparation CL for supporting try-catch in optimized code. Until
now, we used normal TargetEntryInstr for catch blocks.
This meant carrying around handler_types_ and catch_try_index_ for blocks
that are not catch blocks which is not needed.
For now, CatchBlockEntry behaves the same as TargetBlockEntry except for
the additional members needed for catch blocks.
CatchBlockEntryInstr : public BlockEntryInstrを新規追加。
TargetEntryInstrからtry catch系の機能を削除し、
try catchはCatchBlockEntryInstrに移動。


r19848 | asiva@google.com | 2013-03-12 19:57:48 +0900 (火, 12 3月 2013) | 3 lines
  • Use dart:typedata types in the Dart API calls.
  • Change the dart/io code to not use dart:scalarlist
scalarlistからtypeddataに交代。

r19827 | regis@google.com | 2013-03-12 08:15:48 +0900 (火, 12 3月 2013) | 2 lines
Decode ic data and arguments descriptor passed in calls on ARM.
LoadWordFromPoolOffset()で処理の共通化
immが小さければOffsetのまま使用できるし、そうでなければlo hiに分けて参照する。

PatchInstanceCallAt()
GetInstanceCallAt()

CallPatternがRawICDataとArgumentDescriptorを持つ。

CallPattern::ArgumentDescriptor()と、CallPattern::IcData()
どちらも object_poolから取得。indexは固定。-1だったら初期値かな?


r19819 | zra@google.com | 2013-03-12 05:50:50 +0900 (火, 12 3月 2013) | 7 lines
Adds MIPS instructions to simulator, assembler, disassembler
ins - bitfield insert
ext - bitfield extract
l{b,bu,h,hu,w} - load byte, unsigned byte, etc.
s{b,h,w} - store byte, halfword, word
instructionにも追加されたし、Simulatorに追加。

r19810 | floitsch@google.com | 2013-03-12 03:54:37 +0900 (火, 12 3月 2013) | 5 lines
ceil/floor/truncate/round return integers.
int型になった。。

r19789 | fschneider@google.com | 2013-03-11 22:03:46 +0900 (月, 11 3月 2013) | 4 lines
Remove unused context-level from LoadLocal/StoreLocal IL instructions.
This is left-over code that is not used anymore.
LoadLocal/StoreLocalクラスから、context_levelフィールドを削除。

r19781 | fschneider@google.com | 2013-03-11 21:16:54 +0900 (月, 11 3月 2013) | 2 lines
Inline ByteArray setters like setUint8 in the optimizer.
ByteArrayのsetterが非常に速くなった。
RECOGNIZED_LISTにsetterも追加されて、10倍高速になった。大体普通のList使うのと同等。

r19756 | floitsch@google.com | 2013-03-09 12:19:07 +0900 (土, 09 3月 2013) | 5 lines
Revert "Remove Expect from core library."
This reverts commit 19755.
r19755 | floitsch@google.com | 2013-03-09 11:40:37 +0900 (土, 09 3月 2013) | 3 lines
Remove Expect from core library.
import expectを削除。

r19752 | asiva@google.com | 2013-03-09 09:05:57 +0900 (土, 09 3月 2013) | 2 lines
Add the allocator intrinsics for dart:typeddata implementation.
typeddataの_newマクロを作成
速攻でarmに入れてるのは、clientだからかな。
intrinsiferに、TYPEDDATAのINTRINSIC_LISTを追加している。

r19730 | zra@google.com | 2013-03-09 06:47:03 +0900 (土, 09 3月 2013) | 2 lines
Adds a few MIPS arithmetic instructions to the simulator, assembler, disassembler
assembler_mips.hに追加。 主に算術命令
simulator_mipsも追加。
add i|iu|u|
and_ i
clo clz div divu lui mfhi mflo sll LoadImmediate


r19724 | regis@google.com | 2013-03-09 06:16:46 +0900 (土, 09 3月 2013) | 5 lines
Implement leaf runtime call stub on ARM and corresponding call redirection
in ARM simulator.
Implement jump patching on ARM.
Add missing ICache flush calls.
BranchPatchable()
IPを16bitずつmovしたあと、
bx(IP)

SwapCode()
swapしたあと、ICacheをflush

JumpPatternクラスの実装
TargetAddress()
SetTargetAddress()
どちらも16bitずつアドレスをlo hiに分けて参照、設定している。


target addressを書き換えた際に、
CPU::FlushICache()
が新規に挿入されているけど、どういうこった。
しかも、x86 x64 armに。
実装されているのはarmのみ。おそらく、mipsも行うのだろう。
syscall(__ARM_NR_cacheflush, start, start + size, 0);
キャッシュラインを書き戻し、かつ、キャッシュラインを無効化する ???
host=armの場合のみ必要みたいだけど。

mipsにcode pattern等のskeltonを追加。

r19711 | vegorov@google.com | 2013-03-09 04:09:48 +0900 (土, 09 3月 2013) | 20 lines
Add pass to remove empty blocks and recompute fall-through targets.
This allows to cleanup the following code patterns:
1) chains of jumps:

jxx block_a
...
block_a:
jmp block_b

2) jumps over jumps

jxx block_b
block_a:
jmp block_c
 block_b:
 ...
CompactBlock()
CompactBlocks()
jump labelをBlockInfoに集約して、labelを操作しやすくした。
また、fallthroughに対応して、EmitBranchの際に無駄なjumpを出力しないようになった。

r19708 | asiva@google.com | 2013-03-09 03:40:05 +0900 (土, 09 3月 2013) | 2 lines
Add the typed data classes to the do not extend list.
typeddataの生成時、
macroで、DO_NOT_EXTEND_TYPED_DATA_CLASSESを宣言。

r19704 | regis@google.com | 2013-03-09 03:22:14 +0900 (土, 09 3月 2013) | 3 lines
Implement native call stub on ARM and native call redirection in ARM simulator.
Pass PatchStaticCall test.
NativeCallInstrを実装。
GenerateCallNativeCFunctionStub()を実装。

simarm
cc/Dart2JSCompileAll: Skip
cc/FrameLookup: Skip
cc/IcDataAccess: Skip
cc/UseDartApi: Skip


r19690 | floitsch@google.com | 2013-03-08 22:07:18 +0900 (金, 08 3月 2013) | 3 lines
Remove deprecated StringBuffer.add, addAll and addCharCode.
addからwriteに変わった。
IOSinkのapi修正が原因かな?

r19682 | kmillikin@google.com | 2013-03-08 20:14:08 +0900 (金, 08 3月 2013) | 14 lines
Implement a branch optimization pass.

Branch optimization pushes some branches that test the value of a phi
to the predecessor blocks. This can avoid materializing a boolean
object solely for the purposes of branching on its boolean value.

The optimization is performed after inlinining which creates
opportunities, and before constant propagation, because it exposes
opportunities for unreachable code elimination.
R=vegorov@google.com
BranchSimplifierの追加。
Match()
ToJoinEntry()
CloneConstant()
CloneBranch()

Canonicalize()とConstantPropagatorの間に実行する。

Branch(Comparison(kind, Phi, Constant))
上記において、comparisonとbranchを、phiのpredecessorにcloneする。
その際に、phiの値を、predecessorの各々の値に変換する。
特定ケースの、phiの値の上方への伝搬みたいなもん?

p = phi(a,b)
comparison kind, p, c
branch comparison

上記をパターンマッチして、
a= b=
\  /
 p = phi(a,b)
 cmp(p,c)
 branch --> goto loopexit
 |
 b --> backedge

以下に変換
a=...
c=...
cmp(a,c)
branch loopexit, b

b=...
c=...
cmp(b,c)
branch loopexit, b


r19679 | lrn@google.com | 2013-03-08 19:21:52 +0900 (金, 08 3月 2013) | 3 lines
Change VM's string-buffer patch to use a Uin16Array as backing buffer.
StringBuffer_createStringFromUint16Array()
bootstrapnativesに追加。

r19669 | iposva@google.com | 2013-03-08 16:25:19 +0900 (金, 08 3月 2013) | 2 lines
  • Allow the use of branch delay slots.
mipsにdelay_slot()用のmacroを追加。
jr(RA)
delay_slot()->ori(V0, xxx
と直感的に書けるようになった

r19661 | srdjan@google.com | 2013-03-08 08:09:47 +0900 (金, 08 3月 2013) | 2 lines
The complete fix for issue 8919.
r19657 | srdjan@google.com | 2013-03-08 06:59:02 +0900 (金, 08 3月 2013) | 2 lines
Fix crash in issue 8919. The test still fails.
flow_graph_builder
result_is_neededでない場合も、sored valueを保存する。
と見せかけて、result_is_neededの場合も、、
LoadLocalNodeを生成する???


r19656 | asiva@google.com | 2013-03-08 06:50:33 +0900 (金, 08 3月 2013) | 2 lines
Implement 'dart:typeddata' directly in the VM instead of using 'dart:scalarlist'
typeddataをvm内部に定義。変更前は、scalarlistで代替していた。

r19652 | tball@google.com | 2013-03-08 06:00:22 +0900 (金, 08 3月 2013) | 6 lines
Stop handling VM messages if the isolate has an uncaught (sticky)
exception from the previous message. The Dartium engineers requested
it because they were seeing confusing stack traces.
BUG: 7515
sticky_error()を返す際に、一度clearしてから返す。
変更前は、stickyが立ったままだった。

r19606 | iposva@google.com | 2013-03-07 20:04:27 +0900 (木, 07 3月 2013) | 4 lines
  • Add a skeleton MIPS assembler, disassembler and simulator.
  • Remove unused fields and methods from ARM simulator.
  • Remove unused 5th parameter from Simulator::Call.
上述の通り
mips対応進んでます。

r19575 | regis@google.com | 2013-03-07 04:03:03 +0900 (木, 07 3月 2013) | 2 lines
Fix build.
0初期化。

r19571 | regis@google.com | 2013-03-07 03:49:38 +0900 (木, 07 3月 2013) | 4 lines
Clean up ARM assembly code loading and storing from/to a large offset.
Make use of vldm and vstm ARM instructions.
Implement ARM stub printing stop message.
CanHoldLoad/StoreOffset()でtrue caseとfalse caseで処理を分ける。
falseの場合、hi loに分けてoffsetを作る必要がある。
immediateを使える場合と、hi loから作るパスとを明確に分けた。

r19519 | regis@google.com | 2013-03-06 07:04:23 +0900 (水, 06 3月 2013) | 7 lines
Complete implementation of bounds checking in the vm,
by introducing a vm object BoundedType that represents a type
that could not be checked against an upper bound at compile time.
A BoundedType is verified at run time when used,
typically when it (and/or its bound) gets instantiated.
This fixes issues 7075 and 7625.
Added one test.
class BoundedType : public AbstractType
を新規追加。snapshotにも追加。
rawには、type_, bound_, type_parameter_が定義されている。
runtime(classfinalizer)でtype parameterのboundをcheckする
ClassFinalizer::CheckTypeArgumentBounds()

TypeParameterにCheckBound()ってのが追加されて、
subtypeやsupertypeやらで何度もCheckされるのを回避するため、各TypeParameterはis_checkedを持つと。
TypeおよびTypeParameterは、Runtimeには直接作用しないけど、
ParserおよびFinalizerで、エラーは投げますよということか。

IsBounded()でこんなにHandle()使っていいのか。。ループの中で生成してますよ。
謎だけど、 HeapProfilerでBoundedTypeを参照している。。

r19511 | zra@google.com | 2013-03-06 04:53:43 +0900 (水, 06 3月 2013) | 2 lines
Adds muls, sdiv, udiv instructions to ARM simulator, assembler, disassembler
muls, sdiv, udivを追加。
mulsはsets condition flags.

r19439 | zra@google.com | 2013-03-05 10:03:22 +0900 (火, 05 3月 2013) | 8 lines
Adds mrc instruction to arm simulator, assembler, disassembler.
This instruction will be used to query an arm processor to
determine whether it supports the sdiv and udiv instructions.

Also adds a flag --sim_has_int_div to the arm simulator,
which changes the result of the mrc instruction so we can test both ways.
CPUFeaturesに、interger_division_supported_追加。
mrc命令でfeaturesを確認するらしい。

r19434 | regis@google.com | 2013-03-05 09:04:32 +0900 (火, 05 3月 2013) | 3 lines
Remove the barely used macro assemblers after merging their contents to the base assemblers.
macro_assemblerから、各assemblerに処理を統合した。
assembler_macros_xxは全部削除。。macro系の重い処理を今後追加する予定ないんでしょうかね。

r19429 | hausner@google.com | 2013-03-05 07:28:55 +0900 (火, 05 3月 2013) | 8 lines
Fix for loop variable capturing
We had a bug in the capturing of for loop variables that only manifested
itself if another variable outside the loop was captured as well.
Fix for issue 8207 and 8698.
parserの修正。
全部10になる理由がよくわからない。。
int i;
for (i=0; //i=5
for (int i=0; //i=1.2.3.4.5
では結果が異なる。

r19427 | asiva@google.com | 2013-03-05 07:11:45 +0900 (火, 05 3月 2013) | 2 lines
First step towards implementing dart:typeddata library.
TypedDataのload処理追加.bootstrap

r19422 | srdjan@google.com | 2013-03-05 06:38:35 +0900 (火, 05 3月 2013) | 2 lines
Recognize more list factories. Recognizing list factories (Array, Bytearrays, etc)
allows the type and range to be determined.
Add byte array factories to the list of recognzied factories and intrinsify them early.
If not intrinisified they may be inlined and not recognized.
Keeping the recognition at API level is more stable as internal implementation may change.
ListFactory系がRECOGNIZED_LISTに追加。ScalarList系はほぼすべて。
一通りIntrinsiferに追加。FixedLengthArrayの判定を入れて、type propagatorの対象になる。

r19405 | regis@google.com | 2013-03-05 03:08:38 +0900 (火, 05 3月 2013) | 8 lines
Second codegen test passing on ARM (simulated).
This required support on ARM for:
  • compilation of static calls
  • patching of static calls
  • stub to call into runtime
  • redirection support for calls from simulator to host runtime
  • stack frame iteration
CallRuntimeFrameのEnter/Leaveを実装。
vtsmdやvldmdがあれば一発。
合わせてFlowGraphCompilerから上記をEmitする。

get/patchStaticCallを実装。
RuntimeEntry::Call()は、BranchLink(label)

stubには、以下を追加。
GenerateCallStaticFunctionStub()
R0とR4をpush
callruntime
R0とR4をpop
ldr(R0, FieldAddress(R0, Code::instructions_offset())); //飛び先を取得。
AddImmediate(R0, R0, Instructions::HeaderSize() - kHeapObjectTag); //heapのtagをadd
bx(R0);

GenerateCallToRuntimeStub()
R0にisolateをload
isolateのtop_exit_frame_info_offset()をSPに保存。
isolateのtop_context_offsetをctxに保存
blx R5の前に、R0-R3に、native argumentsを設定する。
blx R5

blx前後のctxの退避方法がよくわからん。
mov(CTX, ShifterOperand(R0)); //R0がExitFrameInfo
mov(CTX, ShifterOperand(R2)); //R2が復元済みExitFrameInfo


armのcpuの使い方
const RegList kAbiArgumentCpuRegs =
   (1 << R0) | (1 << R1) | (1 << R2) | (1 << R3);

const RegList kAbiPreservedCpuRegs =
   (1 << R4) | (1 << R5) | (1 << R6) | (1 << R7) | (1 << R8) | (1 << R9) | (1 << R10);


r19404 | zra@google.com | 2013-03-05 02:45:38 +0900 (火, 05 3月 2013) | 2 lines
Adds vstm, vldm to ARM simulator, assembler, disassembler
arm命令のvldms vstms vldmd vstmdを追加。

r19390 | vegorov@google.com | 2013-03-04 23:55:33 +0900 (月, 04 3月 2013) | 9 lines
In LoadOptimizer::EmitPhis check for environment uses of phis.
Previously we checked for input uses only. This caused some phis
to be not emitted if they had only environment uses. The bug was masked
by an elimination pass done before the register allocation.
R=kmillikin@google.com
input_use_list() != NULL --> HasUses
HasUsesには、env_use_listもカウントされるので、env_use_listの参照もチェックすることにしたと。

r19322 | vegorov@google.com | 2013-03-02 01:31:26 +0900 (土, 02 3月 2013) | 21 lines
CompileType::ToNullableCid must check whether type is implemented

This should be done in addition to checking whether type
has subclasses as subtyping relation is defined in terms of interfaces.

Otherwise type propagation infers that result of a mint
operation has a kIntegerCid because IntType has no subclasses.

It is only appropriate to not take subinterfaces into
account when inferring cid of the receiver.

No regression test included because currently it is not possible
to write one: fact that we inferred kIntegerCid for result
of mint operations is not observable and for other IR
instructions nullability prevents us from infering
anything but kDynamicCid.
R=kmillikin@google.com
nullableの処理がよくわからないな。。
dartにはnull point exceptionが実状無くて、
nosuch methoderrorになるんだよね。。
抽象クラスとして推論すべきか?ということ?
dartのinterfaceと、vmのimplとの関係がよくわからないな。
基本的に抽象クラスとして推論するけど、
implされたクラスの確認をどうするかとうこと?

変更前は曖昧な場合、全部dynamicにしていた。
変更後はFromAbstractType(type, kNonNullable)となっている。。
FromAbstractType(type, kNullable)を設定することもあるが、、


r19297 | floitsch@google.com | 2013-03-01 21:14:45 +0900 (金, 01 3月 2013) | 3 lines
Remove deprecated IllegalJSRegExpException class.
IllegalJSRegExceptionを削除し、
普通の例外として投げるようになった。

r19282 | fschneider@google.com | 2013-03-01 18:03:45 +0900 (金, 01 3月 2013) | 11 lines
Fix null-termination bug in Stacktrace::ToCString.
Under certain conditions Stacktrace::ToCString can return a not null-terminated string.
This is the case when ToCStringInternal is invoked with a stacktrace of length 0.
BUG=dart:8850
TEST=tests/language/stacktrace_test.dart
\nを挿入

r19272 | asiva@google.com | 2013-03-01 12:00:52 +0900 (金, 01 3月 2013) | 19 lines
Fix stack frame index numbers for full stack traces
It used to be:
#0 getCurrentStackTrace (file:///tmp/junk.dart:3:5)
#0 func1 (file:///tmp/junk.dart:10:29)
#1 func2 (file:///tmp/junk.dart:14:8)
#2 func3 (file:///tmp/junk.dart:18:8)
#3 func4 (file:///tmp/junk.dart:22:8)
#4 main (file:///tmp/junk.dart:26:8)
(Notice the two #0 frames on top).

Now it will print this as:
#0 getCurrentStackTrace (file:///tmp/junk.dart:3:5)
#1 func1 (file:///tmp/junk.dart:10:29)
#2 func2 (file:///tmp/junk.dart:14:8)
#3 func3 (file:///tmp/junk.dart:18:8)
#4 func4 (file:///tmp/junk.dart:22:8)
#5 main (file:///tmp/junk.dart:26:8)
frame_index + 1

r19267 | srdjan@google.com | 2013-03-01 08:31:10 +0900 (金, 01 3月 2013) | 2 lines
Do not inline List factory if a non-constant argument is passed
in order to prevent non-optimal code being generated.
This is a temporary fix until we have found a better solution
(maybe introduce a high-performance ? operator once its definition settles).
Listの?opがオーバーヘッドなのだろうか
ListかつNonConstantの場合、inline展開しない。
Listは冒頭で、size nが与えられているかどうかで分岐しているのだが、そこが気になるのだろう。
それがinline展開されるのが気になる?
何らかの改善はあるのだと思う。
optional parameterなconstructorクラスは多いが、ListのみVM側に実装して特別に高速化しているため、
パフォーマンス上気になるのだと思う。

r19258 | hausner@google.com | 2013-03-01 06:17:47 +0900 (金, 01 3月 2013) | 6 lines
Libraries: update VM to current spec
  • Exports allowed in script files
  • library name is optional
  • delete meaningless test, file co19 bugs
parserの修正。 修正箇所は3箇所なんだけど、
これがdelete meaninglessに対応した修正なのかわからん。

r19256 | srdjan@google.com | 2013-03-01 05:54:15 +0900 (金, 01 3月 2013) | 2 lines
Fix factory name to result cid mapping, run type propagation once more after constant propagation.
type propagationが1回増えた。
FactoryRecognizerなるものを新規追加して
ListのFactoryに応じて、Array, GrowableObjectArray, WithDataの型情報を取得している。
コードの整理もあるけど、WithDataに新規対応したのかな。

r19255 | tball@google.com | 2013-03-01 05:45:37 +0900 (金, 01 3月 2013) | 4 lines
Fixed debugger stacktrace generation that failed a VM assertion.
Added LocalVarDescriptors.ToCString(),
which is just used when debugging debugger issues, and is not referenced by any public APIs.
vm/object.c::LocalVarDescriptors::ToCString
LocalVarDescriptorは、optimizedの際には動作しない。
最適化前でないと、正しいframeのoffsetが 入手不可能なのだと思う。
この点は将来改善されるのだろうか。
JVMのdebuggerはインタプリタモードでデバッグさせるし似たようなものか。
たしかbreakするまでJITコンパイルされたコードが走るけど、breakしたらインタプリタに戻るんだっけかな。

r19232 | fschneider@google.com | 2013-02-28 23:30:37 +0900 (木, 28 2月 2013) | 4 lines
Use enum instead of bool parameter in IL instructions to indicate if a store barrier is needed.
R=vegorov@google.com
StoreBarrierTypeとして、NoStoreBarrierとEmitStoreBarrierを追加。

r19206 | kmillikin@google.com | 2013-02-28 17:25:58 +0900 (木, 28 2月 2013) | 13 lines
Remove dead phis as soon as they are discovered.

Previously we removed dead phis late, in the register allocator.
This change removes them as soon as
they are discovered to be dead and packs the phi array to squeeze out NULLs.
This speeds iteration but doesn't save space because the phi array is zone-allocated.
The PhiIterator is used everywhere to iterate phis except a few places
that need to know the phi index
(e.g., SSA construction, phi elimination).
R=vegorov@google.com
MarkLivePhiではなく、RemoveDeadPhis()に変更。
phi == NULlみたいな処理は置き替えられた。

r19182 | srdjan@google.com | 2013-02-28 07:58:59 +0900 (木, 28 2月 2013) | 2 lines
Intrinsify OnebyteString's hashcode. Next step is to inline it.
Intrinsifierに、OneByteString_getHashCode()を追加。
get:hashCode
class StringHasherの処理をasmにinlineしたのだと思う。
以下の処理をasmで書き直した。
OneByteとTwoByteなどの処理で、処理を切り分けていたが、
intrinsicsにすれば、dart_patchクラスから、Hashを呼び出すだけでOKになるはず。
OneByteStringなので、

for (intptr_t i = 0; i < len; i++) {
hasher.Add(* OneByteString::CharAddr(str, i + begin_index));
}
return hasher.Finalize(String::kHashBits);

void Add(int32_t ch) {
hash_ += ch;
 hash_ += hash_ << 10;
 hash_ ^= hash_ >> 6;
}
Finalize(bits) {
hash_ += hash_ << 3;
hash_ ^= hash_ >> 11;
hash_ += hash_ << 15;
hash_ = hash_ & ((static_cast<intptr_t>(1) << bits) - 1);
ASSERT(hash_ <= static_cast<uint32_t>(kMaxInt32));
return hash_ == 0 ? 1 : hash_;
}


r19179 | asiva@google.com | 2013-02-28 07:47:06 +0900 (木, 28 2月 2013) | 10 lines
Add functionality to get full stack trace when exceptions are thrown.
This should address the issue raised in 7813.

try {
...
 ...
} on Object catch(e, s) {
print(s.fullStackTrace);  // This should print the full stack trace.
}
19096の続きの修正かな。RawStackTraceの拡張。
bootstrap_nativesに、getFullStacktrace, getStacktrace, setupFullStacktraceを追加。
vm内部で、stacktraceの文字列を生成String::Newして、その結果を返すらしい。。
libにも、stacktrace.cc stacktrace_patch.dartを追加している。
dartのfullStackTrace()を、vm内部のbootstrapでサポートしたと。


r19178 | iposva@google.com | 2013-02-28 07:36:22 +0900 (木, 28 2月 2013) | 2 lines
  • Do not use the ? operator in the List factory.
_GROWABLE_ARRAY_MARKERを、lengthに埋め込んでmarkerにする。

r19170 | hausner@google.com | 2013-02-28 05:58:07 +0900 (木, 28 2月 2013) | 2 lines
Fix order of mixin application during class finalization
ApplyMixinを、FnalizeClassの直後に行うように順番入れ替え。

r19154 | hausner@google.com | 2013-02-28 02:42:24 +0900 (木, 28 2月 2013) | 4 lines
Less confusing names for mixing application classes
Use names of super and mixin class rather than types.
簡単なリファクタリングかな?

r19152 | regis@google.com | 2013-02-28 02:13:51 +0900 (木, 28 2月 2013) | 2 lines
Compile and simulate first dart function on arm generated from ast.
ごくり、、でかい。。
下記の基礎部分をARM向けに実装。
ReservedFrame, EnterDartFrame, EnterStubFrameのRuntime側の処理。
上記に対応した処理のStubの生成部分。
CompileGraphのメインのみ。
Compileの指示部分(counterのチェック)
Returnの処理
Enter直後のStackOverflow

メイン関数に入ってreturnで抜けるくらいはできるのでは?


r19143 | johnmccutchan@google.com | 2013-02-28 00:21:12 +0900 (木, 28 2月 2013) | 3 lines
Force WriteByte to be inlined
コンパイラオプションのattributeでinlineを強制する、
DART_FORCE_INLINEマクロを定義。

r19127 | sgjesse@google.com | 2013-02-27 21:51:21 +0900 (水, 27 2月 2013) | 10 lines
Increase timeout jitter
Test have been failing on Windows a couple of times, e.g
R=asiva@google.com
testを変更。
kAcceptableSleepWakeupJitter = 200

r19112 | lrn@google.com | 2013-02-27 17:45:04 +0900 (水, 27 2月 2013) | 7 lines
Change new List(n) to return fixed length list.
Deprecate List.fixedLength, add List.filled.
Make Iterable.toList and List.from take "growable" argument, defaulting to false.
ListFixedLengthFactoryを削除。
node->arguments()->length() == 0
だと、勝手にkGrowableObjectArrayCidをタグ付け

r19102 | zra@google.com | 2013-02-27 09:35:57 +0900 (水, 27 2月 2013) | 2 lines
Implements shifted offset register addressing mode for arm.
OffsetKindに、ImmediateとShiftedRegister
Shiftedの場合、25bit目にtype shift bitを埋め込むと?

B25 <-- 25bit目
encoding_ = B25 | xxx | yyy | zzz << shift
みたいな|のみで記述されてておもしろい。

r19101 | regis@google.com | 2013-02-27 09:32:31 +0900 (水, 27 2月 2013) | 3 lines
Fix bad optimization prematurely marking types as instantiated (issue 8710).
Add test.
set_is_finalized_instantiated()とset_is_finalized_uninstantiated()を
SetIsFinalized()に共通化。

r19099 | srdjan@google.com | 2013-02-27 09:03:53 +0900 (水, 27 2月 2013) | 2 lines
Improve performance of Onebytestring allocation and hascode computatio.
About 10% improvement on a JSON benhchmark.
Allocateする際のString::Handle()を除去。
hash計算において、OneByteStringの処理を特殊化

r19097 | hausner@google.com | 2013-02-27 08:39:37 +0900 (水, 27 2月 2013) | 5 lines
Progress in generic mixins
Handle generic mixin applications in class declarations, but not yet in type aliases.
mixinクラスからtype parameterを受け継ぐ処理を追加。
mixin application(mixinee)がtype parameterを持つ場合は今のところ未サポート

基本的に修正はparserとfinalizer。
finalizerに、type parameterをmixinクラスから取り込む処理を追加かな?


r19091 | tball@google.com | 2013-02-27 07:34:08 +0900 (水, 27 2月 2013) | 2 lines
Initial prototype of vmstats support, based on Dart VM Stats draft design doc.
statsではなく、vmStatus
statsは、apiやbinのほう、vmの中ではvmStatus扱い。
APIとして、getVMStatusを公開。
name, port, starttime, stacklimit, newspace, used, capacity, oldspace, used, capacity
を表示する。
API経由で情報を取得できるみたい。port経由で接続して取得する。
bin/mainに、--stats-root=xxxと、--stats オプションを追加
mutex(MonitorLocker)を使って取得するらしい。
socketは、普通にbindして準備する。bin/vmstats_impl.cc


r19096 | asiva@google.com | 2013-02-27 08:24:24 +0900 (水, 27 2月 2013) | 2 lines
Resubmit change 19074.
r19084 | asiva@google.com | 2013-02-27 06:41:29 +0900 (水, 27 2月 2013) | 2 lines
Revert change 19074 until the windows build is fixed.
r19074 | asiva@google.com | 2013-02-27 04:07:40 +0900 (水, 27 2月 2013) | 5 lines
Fix for bug 6767 - Limit stack trace collection for stack overflow exceptions.
Use pre allocated stack object for collecting strack trace in the case of OOM
and stack overflow exceptions.
snapshot Fullの場合に作用する?
RawStackTrace()か。
StackTraceBuilder()を作って、あらかじめ領域確保、いつ起こってもいいよと。。
修正量が多いな。。

r19044 | fschneider@google.com | 2013-02-26 23:38:03 +0900 (火, 26 2月 2013) | 12 lines
Support instruction-level perf event profiling to Dart VM using V8's ll_prof.py.
Usage:
1) perf record -g out/ReleaseIA32/dart --ll-prof example.dart
2) third_party/v8/tools/ll_prof.py --disasm-top=3
This will produce a per-function and a per-instruction profile with
disassembly for the top 3 function in the profile.
Currently only available on Linux.
オプション ll_prof
LowLevelProfileCodeObserver()の追加。
ちょっと試してみるか。

r19036 | kmillikin@google.com | 2013-02-26 20:50:28 +0900 (火, 26 2月 2013) | 9 lines
Add functions for setting an environment and rebinding a use.
Add functions for setting or clearing an instruction's environment,
which initialize the environment uses.
Add a function for changing a use's definition.
R=vegorov@google.com
Environmentを抽象化、useの更新等を単純にした。


r19022 | tball@google.com | 2013-02-26 09:12:33 +0900 (火, 26 2月 2013) | 2 lines
Corrected test suppression from previous CL.
テストの追加

r19020 | tball@google.com | 2013-02-26 08:36:28 +0900 (火, 26 2月 2013) | 3 lines
Disabled context variables in local variable list in the debugger,
so developers can still use it while issue 8593 is being fixed.
debuggerのlocal variableのslot検索を一時的にoff

r19019 | iposva@google.com | 2013-02-26 08:31:57 +0900 (火, 26 2月 2013) | 2 lines
  • The dart:json library is now using patches.
INIT_LIBRARYにpatchフラグを有効にした。

r19017 | iposva@google.com | 2013-02-26 08:25:29 +0900 (火, 26 2月 2013) | 3 lines
  • Properly load the core libraries as libraries and not as scripts.
This will honor their imports and library names.
load済みのlibraryをcanonicalizeする処理の変更。
冗長な記述がマクロ化された


r19013 | srdjan@google.com | 2013-02-26 08:05:43 +0900 (火, 26 2月 2013) | 2 lines
For Doubl erounding call C-function instead of attempting to inline it. Fixes issue 8760.
DoubleRoundの高速化のためinlineされていた実装が削除? intrinsicsが呼ばれるのかな。

r19001 | johnmccutchan@google.com | 2013-02-26 06:12:50 +0900 (火, 26 2月 2013) | 3 lines
Simd128Float32, Simd128Mask, and Simd128Float32List additions for dart:scalarlist
vmに、Float32x4と、Float32x4ArrayとUint32x4を追加。
vm/raw_objectとvm/objectに追加しているけれども、SSEまではまだ使用されていない。
simd系の演算をscalarlistに取り込んだだけかな。
x4型を使えば、配列添字ではないため、添字チェックは存在しない。
float32x4Array型はbytearray型なので、おそらく任意のbytearrayの特定の領域をviewで参照して、
simd演算できるようになるはず。

  • 最終更新:2013-03-16 10:15:53

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

認証パスワード