RevisionLog23000台


r23989 | fschneider@google.com | 2013-06-14 00:52:33 +0900 (金, 14 6月 2013) | 10 lines
Revert r23330 and r23136 because of a bug with loop invariant code motion.
This CL temporarily remove deoptimzation history which was put in to prevent
repeated deoptimization caused by loop invariant code motion.
It caused illegal code motion under certain conditions.
TEST=tests/language/licm3_test.dart
revert。。


r23975 | iposva@google.com | 2013-06-13 22:02:46 +0900 (木, 13 6月 2013) | 4 lines
  • Make sure BoundedType and MixinAppType have a name.
  • Reenable test from r23964.
_BoundedTypeってのと_MixinAppTypeってのがsymbol追加
mixin向けの予約クラス?になった。


r23955 | fschneider@google.com | 2013-06-13 18:08:05 +0900 (木, 13 6月 2013) | 9 lines
Fix bug in constant propagation with double-equality.
Don't optimize x == x and x != x if x is a double:
x == x is not true, if x == NaN.
TEST=tests/language/arithmetic_test.dart
R=kmillikin@google.com
IsNumber -> IsIntegerに限定
doubleのNaN向け


r23959 | bak@google.com | 2013-06-13 18:24:18 +0900 (木, 13 6月 2013) | 5 lines
Changed "%d" to ""%"Pd for platform indenpent printing of intptr_t.
R=iposva@google.com
%d -> %"Pd"

r23958 | bak@google.com | 2013-06-13 18:16:36 +0900 (木, 13 6月 2013) | 5 lines
Added files absent from last commit.
R=ricow@google.com
r23954 | bak@google.com | 2013-06-13 18:06:43 +0900 (木, 13 6月 2013) | 5 lines
Object histogramin the vm (--print-object-histogram).
Reviewed and LGTMed in:

Isolateのshutdown時に下記みたいに出力する。
Printing Object Histogram
____bytes___count_description____________
 294472    6181 _ObjectArray@0x36924d72, library 'dart:core'
  263696    8466 _OneByteString@0x36924d72, library 'dart:core'
  145712     283 `PcDescriptors`
  122048     325 `Instructions`
   95104    1486 `Function`
bytesがトータルのメモリ消費量。countがobjectの個数。 descriptionがclassId

GCからUpdateObjectHistgram()ってのが叩けるようになった。
OldGCの直後に、Updateする。

MagerGCが走るたびにUpdateを行うため、その度にbytesとcountを加算している。
そのため、最終的にprintする際に、累積のbytesとcountを、mager_gc_countで割る。


r23942 | srdjan@google.com | 2013-06-13 08:15:12 +0900 (木, 13 6月 2013) | 5 lines
When unwraping handles, verify only if --verify_handles. Fixes issue 11265,
R=asiva@google.com
ValidHandle系をassertに追加


r23940 | srdjan@google.com | 2013-06-13 07:33:11 +0900 (木, 13 6月 2013) | 5 lines
One more premature load-static node generation solved.
R=hausner@google.com
getter.IsNull()はLoadStaticFieldNode()
IsNull()でない場合、StaticGetterNode()を生成する。


r23934 | srdjan@google.com | 2013-06-13 06:27:37 +0900 (木, 13 6月 2013) | 5 lines
When canonicalize instances check if all fields are canonical.
If a field is a non-canonical number or strings, canonicalize it.
Otherwise report an error if a field is not canonical.
R=hausner@google.com
Instance::CheckAndCanonicalize()

Canonicalizeで、すでに全フィールドがCanonicalize済みか判定して、Errorを返す可能性がある。
InstanceかつSmiでない かつ Canonicalizeされていない場合が該当する。
NumberとStringは例外で、StringはSymbolsにCanonicalizeする。
SmiかつNumberクラスは、fieldに埋め込みなので問題なし。

NumberかつSmiって制御は分かりがたいように思う。


r23920 | regis@google.com | 2013-06-13 01:57:06 +0900 (木, 13 6月 2013) | 7 lines
Fix decoding of object pool access in code patching on ARM.
Fix shift by zero and divide by one on ARM.
Update test status files.
R=zra@google.com
truncate 0を修正? arm向け


r23912 | hausner@google.com | 2013-06-13 00:44:57 +0900 (木, 13 6月 2013) | 5 lines
Reified metadata in the VM
R=asiva@google.com
apiに、
Dart_GetMetadata()

内部では、主にparserを修正。
AddClassMetadata(cls, token_pos)
AddFieldMetadata(field, token_pos)
AddFunctionMetadata(func, token_pos)

RawString* MakeMetadataName(obj)

metadataのサンプルは、vm/object_test.ccにある
class, field, functionに付く
@metaclass
class Meta {}

@metafield
var aField;

@metafunc
void main() {}

metadataは、parserで解析して、token_posとstringにする。


r23911 | regis@google.com | 2013-06-13 00:35:55 +0900 (木, 13 6月 2013) | 5 lines
Fix comment about super type of Object class.
R=asiva@google.com
commentのみ


r23901 | fschneider@google.com | 2013-06-12 19:27:13 +0900 (水, 12 6月 2013) | 16 lines
Make constant propagation to fold x == x and re-run type propagation for better range analysis.
1. When comparing numbers, or strict-comparing objects, this can be folded into
 true/false.  Since this often occurs after inlining and store-to-load forwarding,
  constant propagation is repeated after these phases. The pattern looks like:

o.x = o.y;
if (o.x == o.y) { ... }

2. Load elimination may introduce new phis that may have smi-type. In order to
 get range information for these phis, I added a second phase of type propagation after
  load elimination.
R=kmillikin@google.com
range_analysisの前に、propagate_typesを呼び出す。
UnboxPhis()の削除。 SelectRepresentations()を再度呼び出す。
is_checked_strict_equal()への置き換え


r23899 | fschneider@google.com | 2013-06-12 18:31:31 +0900 (水, 12 6月 2013) | 9 lines
Don't double-count stack slots when compiling optimized try-catch.
The fixed slots used by try-catch are already accounted for in the
register allocator. This change avoids wasting unnecessary stack space
for optimized functions containing try-catch.
R=kmillikin@google.com
StackSizeを、optimizedの場合、spill_slot_countだけ返す。
try-catchのとき何かやってたんだっけ。。


r23887 | zra@google.com | 2013-06-12 08:47:03 +0900 (水, 12 6月 2013) | 5 lines
Fixes small bug in a MIPS stub.
R=asiva@google.com
mips
T0 -> A0


r23886 | asiva@google.com | 2013-06-12 08:07:57 +0900 (水, 12 6月 2013) | 5 lines
Fix issue 11214 avoid length overflow in String::ConcatAll
R=hausner@google.com
result_lenのオーバーフローチェックを追加。object_store()->out_of_memory()を投げる。


r23884 | asiva@google.com | 2013-06-12 06:52:39 +0900 (水, 12 6月 2013) | 8 lines
Make ImmutableArray a sub class of AllStatic.
This enables Array to be a FINAL_HEAP_OBJECT and the operators
'=' and '^=' would be a simpler implementation which does not
require a call to initializeHandle().
R=iposva@google.com
ImmutableArrayクラスが、ArrayからAllStaticへ。。
Stringと似た扱いのようで。
Class::New<ImmutableArray>()だったのが、Class::New<Array>(kImmutableArrayCid)


r23877 | zra@google.com | 2013-06-12 05:08:40 +0900 (水, 12 6月 2013) | 11 lines
Enables more VM tests for SIMMIPS.
Implements:
  • Megamorphic instance calls
  • Left-shift
  • Equality
  • and various bug-fixes.
R=regis@google.com
mips向けの修正だが、以下のARM向けと同じかな。
23188相当
23307相当


r23868 | regis@google.com | 2013-06-12 01:47:01 +0900 (水, 12 6月 2013) | 7 lines
Switch code generation on ARM from softfp ABI to hardfp ABI.
Support leaf float runtime calls in ARM simulator.
Enable previously failing tests.
R=zra@google.com
ARM DTMP D0 -> D15
ARM STMP S0 -> S30
LEAF_RUNTIME_ENTRYの引数に、argument_countを追加。2以下が制約。
countはRedirectionのためなのか。。


r23847 | regis@google.com | 2013-06-11 21:22:04 +0900 (火, 11 6月 2013) | 5 lines
Move code setting super type of class Object to null from object.cc to parser.cc
R=iposva@google.com
ObjectClassでなければ、super_typeにType::ObjectType()を設定。


r23825 | srdjan@google.com | 2013-06-11 04:32:03 +0900 (火, 11 6月 2013) | 6 lines
Make AST generation deterministic: always call a static getter if it exists,
regardless if the statuic field was initialized or not.
Previously we may have created a LoadStaticFieldNode dependgin
if the static field was already intialized at compile time.
Note that we do not generate implicit static getter nodes if their initialization is trivial.
R=hausner@google.com
parser
もしconstantの場合、必要であればinitializeしてreturn null
もしくは、const implicit getterもしくはnullに初期化済みの場合、return null
ただのimplicit getterの場合、StaticGetterNodeを作成して返す。

r23785 | asiva@google.com | 2013-06-08 09:47:35 +0900 (土, 08 6月 2013) | 6 lines
Create specific null read only handles for the frequently used types
Array, String, Instance, Object and use them.
R=iposva@google.com
ReadOnlyHandle()系をいろいろと作成して、cacheして使う。
null_object, null_array, null_string, null_instance, null_abstract_type_arguments

r23774 | zra@google.com | 2013-06-08 06:28:49 +0900 (土, 08 6月 2013) | 10 lines
Improvements to 53-bit overflow checking.
  • Integer literals that require more than 53 bits will cause a compile-time error.
  • Checking is added to unary negate for the case that the most negative 53-bit integer is negated.
  • The tests are improved to also check optimized code.
R=srdjan@google.com
定数のinteger literalの53-bit overflow checkingを追加。parseの際に実行
実行時にBigint作成時にThrow


r23751 | hausner@google.com | 2013-06-08 01:31:33 +0900 (土, 08 6月 2013) | 8 lines
BREAKING CHANGE: Remove === and !== in the VM compiler
This change is long overdue. Fixed the last places where we still used ===.
R=iposva@google.com
scannerから、===と!==のscanを削除。
NE_STRICTとEQ_STRICTが生成されなくなった。


r23746 | iposva@google.com | 2013-06-08 00:31:05 +0900 (土, 08 6月 2013) | 6 lines
  • Unpoison stack for ASan when tearing down stack frames during exception handling.
R=kcc@google.com
ASan用のシンボルをexceptionに追加


r23727 | fschneider@google.com | 2013-06-07 16:13:54 +0900 (金, 07 6月 2013) | 8 lines
Change allocation policy for smi-comparison RHS back to register-or-constant.
Allowing any operand often results in suboptimal code, i.e. a value stays
in a spill slot even though register may be beneficial.
R=srdjan@google.com
Locationの指定が、AnyOrConstant から RegisterOrConstant
に変更


r23721 | zra@google.com | 2013-06-07 07:48:20 +0900 (金, 07 6月 2013) | 5 lines
Implements checks for 53-bit overflow for x64.
R=srdjan@google.com
BinarySmi::CanDeoptは、FLAG_throw_on_javascript_int_overflowする場合、return true
その場合、Emit53BitOverflowCheck()
整数系の演算には、すべてEmit53BitOverflowCheck()が埋め込まれていて、
オプションtrueを与えた場合に限りemitする


r23718 | zra@google.com | 2013-06-07 06:52:26 +0900 (金, 07 6月 2013) | 5 lines
Fixes small ARM bugs, and updates status files.
R=srdjan@google.com
Double_toInt()
NaNチェックを追加
vcmpd(D0, D0) //D0 DartFirstVolatileFpuReg, DTMP Overlaps with STMP
vmstat(cond=AL)


r23710 | asiva@google.com | 2013-06-07 03:47:51 +0900 (金, 07 6月 2013) | 7 lines
  • Remove the unvisited handles code from handles implementation as it is not used anywhere
  • Added IsFreeListElement to RawObject
R=hausner@google.com
IsFreeListElement()を追加。どこでも使って無いけど。
不要なHandleのコードを削除。主に.hから。


r23698 | srdjan@google.com | 2013-06-07 02:11:07 +0900 (金, 07 6月 2013) | 5 lines
Small fix and cleanups.
R=vegorov@google.com, zra@google.com
field type feedbackの結果、type == nullの場合、dynamic型に推論する。


r23688 | fschneider@google.com | 2013-06-06 23:41:58 +0900 (木, 06 6月 2013) | 17 lines
Improve array bounds check elimination for growable lists.

Previously we could not eliminate bounds checks for
growable lists, even though the length is not modified.

This CL removes obsolete restrictions and enables elimination
of checks as long as the length does not change.

This restriction were there originally because the CheckArrayBounds
instruction loaded the length from the array itself. Now, the length-load
and the actual check are split into separate instructions.
Tracking side-effects for normal loads determines can now determine if
the length-load is invariant.
R=vegorov@google.com
FixedLengthArray以外にも適用範囲を広げた。


r23678 | fschneider@google.com | 2013-06-06 21:32:42 +0900 (木, 06 6月 2013) | 9 lines
Simplify AST by extending LetNode and replace CommaNode.
LetNode now supports a list of expressions as the body.
The last expression is the result value of the let-expression.
R=kmillikin@google.com
CommaNodeを削除

VisitLetNode()
num_temps>0の場合に、nodesのtempをスキャンして、append, DeallocateTempIndex(), DropTempInstr()


r23640 | zra@google.com | 2013-06-06 02:18:07 +0900 (木, 06 6月 2013) | 5 lines
Adds a flag to the standalone vm to throw an exception on 53-bit integer overflow.
R=asiva@google.com, srdjan@google.com
throw_on_javascript_int_overflow=false オプションを追加

SupportsUnboxedMints()が有効になるのは、sse4_1 and not javascript int overflow
CORE_INTEGER_LIB_INTRINSIC_LIST(V)
に名称変更
FiftyTreeBitOverflow()という名前でいろいろと修正追加
javascript interop


r23637 | asiva@google.com | 2013-06-06 01:42:38 +0900 (木, 06 6月 2013) | 7 lines
Fix for issue 4638 in bitmap builder.
  • Check for maximum size of byte offset and fatal out if it is larger.
  • Convert some of the InRange asserts to actual checks.
R=srdjan@google.com
bitmapのInRangeの修正かな?
assertでなくfalseを返すようになった。

r23636 | asiva@google.com | 2013-06-06 01:21:04 +0900 (木, 06 6月 2013) | 9 lines
Fix for issue 1755.
Use 'new' in all the snapshot reallocation functions instead of realloc.
This would result in program termination when allocation fails and will
ensure that a NULL will not be returned.
R=srdjan@google.com
apiのallocator()からUtils::Realloc()を呼び出す。。

以前はrealloc()を呼び出していたが、Utils::Realloc()の中では、
ElementTypeを新規作成してmemmoveである。。
ElementTypeってのはtemplate引数

r23634 | vegorov@google.com | 2013-06-06 00:37:23 +0900 (木, 06 6月 2013) | 8 lines
Ensure that all phis inserted by load optimizer have consistent representation.
Revert r23619.
R=srdjan@google.com
BUG=dart:11048
inline_size_threshold=22に戻った。。

optimizer.UnboxPhis();ってのが追加
bbの走査、instの走査、phiを見つけたら、UnboxPhi()

phiのunbox. UnboxedDouble, UnboxedFloat32x4, UnboxedUint32x4
これはSelectRepresentations()から処理を移したのかな

最後にInsertConversionsFor()
phiをunboxedしたので、predecessorの使用点を、unboxedしたinstからの使用点に置き換える。


r23631 | vegorov@google.com | 2013-06-05 23:26:25 +0900 (水, 05 6月 2013) | 6 lines
IfConverted should unuse inputs of the join it removes.
R=srdjan@google.com
BUG=dart:11087
UnuseAllInputs()が抜けてた。


r23619 | srdjan@google.com | 2013-06-05 07:33:13 +0900 (水, 05 6月 2013) | 6 lines
Reduce inlining threshold as a temporary workaround for crashes (Issue 11048).
Remove unneeded definitions.
R=asiva@google.com
inline_size_threshold=20 に変更


r23614 | srdjan@google.com | 2013-06-05 05:16:29 +0900 (水, 05 6月 2013) | 5 lines
Fix Issue 11047: use binary search instead of linear search to locate a pc-offset
in the static call table.
R=asiva@google.com
BinarySearchInSCallTable()を新規追加
whileで回す再帰しない。
GetStaticCallTargetFunctionAt()
呼び出し先を探すのが、速くなったのか。。?


r23597 | fschneider@google.com | 2013-06-04 23:35:43 +0900 (火, 04 6月 2013) | 12 lines
Enable optimization of try-finally in the VM's optimizing compiler.
I changed the status of two co19 tests that crash with a stack overflow
because of recursion in dart2js. Optimized functions may take more stack
space, and this CL enables optimizations for more functions in dart2js.
I added smaller versions of those two tests to our own test suite.
BUG=dart:8857
R=ahe@google.com
Finallyがある場合に、optimizetionを無効にしていた。
今は有効になっている。



r23584 | lrn@google.com | 2013-06-04 19:33:11 +0900 (火, 04 6月 2013) | 18 lines
Rename RuntimeError to CyclicIntializationError, as per spec.
The RuntimeError has been used to report cyclic initialization errors in dart2js.
It has also been used for other, unrelated, uses, where it makes little to no sense.
The RuntimeError type has been removed, but added in js_helper.dart, where dart2js uses it.
Uses of new RuntimeError("some message") have been converted to
other errors (Argument/State/Unsupported). In some cases, just
throwing a String might have been just as good.
R=johnniwinther@google.com
testのみ


r23571 | asiva@google.com | 2013-06-04 08:57:36 +0900 (火, 04 6月 2013) | 5 lines
Cache the isolate pointer in the parser object.
R=hausner@google.com
parserでcurrent isolateのpointerをcache
毎回Isolate::Current()を唱えないように


r23553 | fschneider@google.com | 2013-06-04 02:09:09 +0900 (火, 04 6月 2013) | 16 lines
Fix two bugs in the Dart VM's super-noSuchMethod invocation.
1. The result value of an expression
 "super.someMissingSetter = val" was incorrect in case of a noSuchMethod call.

To fix this I refactored the BuildStaticNoSuchMethod function. It now no longer
creates AST nodes and visits them, because the last argument may be needed saved
as a result value.

2. The evaluation order of "super[e1] = e2" was wrong in case of a noSuchMethod call.

BUG=dart:8917, dart:10965
TEST=tests/language/super_operator_index7_test.dart, tests/language/super_operator_index8_test.dart
R=srdjan@google.com
ParsedFunction& からParserdFunction*へ変更
args_array->AddElement()
EnsureExpressionTemp()の新規追加

大部分はFlowGraphBuilderの修正かな。


r23551 | fschneider@google.com | 2013-06-04 01:56:45 +0900 (火, 04 6月 2013) | 9 lines
Avoid duplicate class-id checks in checked-strict equality operations.
The original IC data with two argument checks have to be converted to unary
checks before emitting code. Otherwise, there may be duplicate class-id checks.
R=srdjan@google.com
original IC dataと比較するようにしたと。


r23509 | asiva@google.com | 2013-06-01 09:41:24 +0900 (土, 01 6月 2013) | 5 lines
Simplyfy the NumTypeArguments check.
R=regis@google.com
Handleまわりを整理


r23506 | regis@google.com | 2013-06-01 08:51:38 +0900 (土, 01 6月 2013) | 6 lines
Fix leaf floating point runtime calls on ARM (work still needed in simulator).
Various cleanups.
R=zra@google.com
D0とS0を、FPのScratchRegisterとして使うと。
LeafRuntimeCallでは、上記を使う。


r23502 | asiva@google.com | 2013-06-01 07:55:29 +0900 (土, 01 6月 2013) | 10 lines
More cleanup to avoid creation of redundant handles
  • create read only handles for null object and sentinel smi value
  • add a RawCast function to allow direct casting of Raw pointers without the
need to create a Handle for it
  • use Smi::Value where possible
  • hoist out handle creation from some loops
RawCast()を追加。
Handle系の処理を、RawCastを使ってシンプルにした。


r23489 | zra@google.com | 2013-06-01 06:03:41 +0900 (土, 01 6月 2013) | 8 lines
Implements intrinsics for MIPS.
Also, adds the MADD, MADDU, MTLO, MTHI instructions
to the MIPS simulator, assembler, and disassembler.
R=regis@google.com
MIPS向けに追加


r23484 | zra@google.com | 2013-06-01 03:41:41 +0900 (土, 01 6月 2013) | 5 lines
Changes to run "Hello, world!" on MIPS hardware.
R=regis@google.com
MIPS向けに追加


r23476 | iposva@google.com | 2013-06-01 01:36:27 +0900 (土, 01 6月 2013) | 7 lines
  • Modify dart_api.h to be a proper C API.
  • Verify that dart_api.h can be used from C by changing the test_extension to be a pure C file.
R=asiva@google.com
リファクタリング


r23448 | regis@google.com | 2013-05-31 09:38:21 +0900 (金, 31 5月 2013) | 6 lines
Enable language tests on SIMARM and mark 14 of them as failing.
Implement more features on ARM.
R=zra@google.com

IRを実装。
ArgumentDefinitionTestInstr
StringFromCharCodeInstr
AllocateObjectWithBoundCheckInstr
CloneContextInstr
MathSqrtInstr
SmiToDoubleInstr
DoubleToIntegerInstr
DoubleToSmiInstr
DoubleToDoubleInstr
InvokeMathCFunctionInstr

EmitSuperEqualityCallPrologue


r23436 | iposva@google.com | 2013-05-31 03:52:06 +0900 (金, 31 5月 2013) | 3 lines
  • Adjust parameter types for Dart_NewWeakReferenceSet implementation.
所々をHandleからWeakPersistentHandleに置き換え

r23421 | iposva@google.com | 2013-05-31 00:55:59 +0900 (金, 31 5月 2013) | 7 lines
  • Add different types for persistent and weak persistent handles in the Dart C API.
  • Adapt code in the runtime.
R=asiva@google.com
C API向けの追加のHandle

dart_api_impl
Handleに、True, False Nullを追加

Handleに追加。
Persistent 内部ではPersistentHandle
WeakPersistent 内部ではFinalizablePersistentHandle

上記はいずれも、FreeHandle()で削除するぽい。Weakは後からGCされるはず。
DeletePersistantHandle
DeleteWeakPersistantHandle
PersistantHandleの場合、free_listにつなぐだけ。
Weakのほうは、rawとpeerとcallbackをnullに設定してfree_listにつなぐ。

normalとweakって何が違うんだっけ。
weakはpeerとcallbackがあるだけのようだけど、本当か?
クラス上の差異はないんだけど、、とおもったら、GCのVisitWeakPersistentHandles()
がmarkの起点に存在したので、これか。
Javaっぽく、Weakが参照持たなくなったら開放するのか。
Dart API的にはDeleteしないと内部が空にならない仕組み?

peerとcallbackなくなた?

r23402 | fschneider@google.com | 2013-05-30 21:25:39 +0900 (木, 30 5月 2013) | 5 lines
Fix warning about an unused private field.
TBR=vegorov@google.com
value_を削除


r23401 | fschneider@google.com | 2013-05-30 21:19:21 +0900 (木, 30 5月 2013) | 19 lines
Eliminate temporary locals for some expressions

This CL affects a subset of expressions that use temporary locals: constructor
calls, array literals and and instance getter postfix-ops.

For expressions that are de-sugared in the parser I added LetNode.
It creates a scoped temporary local bound to an initializing expression.

For expressions where we need a temporary local at graph-building time,
I added a helper class TempLocalScope to easily create a single temporary
local in the graph builder since this is a frequently recurring pattern.

This simplifies code in the parser and the graph builder and also fixes a
bug with indexed-super invocation and NoSuchMethod.

BUG=dart:8918
R=kmillikin@google.com
bugfix:8918
LetNodeってなんだ、、contextを追加してローカル変数作成?
(super[0] = 42)って記述に対応すると?

解釈的には、新しいcontext内で完結するローカル変数を構築する際に、
一時的にcontextを作ってそこにローカル変数をpushする。

一時的なローカル変数をIRとして用意し、builderで構築
PushTempInstr
DropTempsInstr


r23375 | asiva@google.com | 2013-05-30 10:24:09 +0900 (木, 30 5月 2013) | 5 lines
More cleanup based on profile information.
R=iposva@google.com
プロファイル情報を参照して、
不要なHandleを除去しているらしい。

r23373 | asiva@google.com | 2013-05-30 10:21:49 +0900 (木, 30 5月 2013) | 5 lines
Inline handle allocation.
R=hausner@google.com
AllocateHandle() にinlineをつけた。


r23370 | regis@google.com | 2013-05-30 08:12:20 +0900 (木, 30 5月 2013) | 7 lines
Implement a few more features on ARM.
The vm tests byte_array_test and byte_array_optimized_test still fail due to
an inlining bug on ARM.
R=zra@google.com
intrinsicsのバグ取り
各種IRの実装。
BinarySmi
CheckEitherNonSmiInstr
BoxDoubleInstr
UnboxDoubleInstr
BinaryDoubleInstr
UnarySmiOpInstr


r23367 | zra@google.com | 2013-05-30 06:31:27 +0900 (木, 30 5月 2013) | 8 lines
Removes ARM mrc instruction.
It is a privileged instruction and was only being used in tests running on the simulator.
R=regis@google.com
mrcを削除。mrcでARMのISAを確認していた。
何も見なくていいのか?

r23350 | srdjan@google.com | 2013-05-29 22:07:46 +0900 (水, 29 5月 2013) | 7 lines
Fix issue 3874:
non-deterministic AST generation caused by exceptions being thrown during parsing (StackOverFlow).
Mark functions that throw and exception as non-optimizable.
Fix flow graph printing (optimized vs non-optimized).
R=fschneider@google.com
set_is_optimizable(false)を設定する。
おもに、parserでIsUnhandledException()した場合と、ast perse時にerror起きたとき。


r23330 | fschneider@google.com | 2013-05-29 18:11:23 +0900 (水, 29 5月 2013) | 7 lines
Add a helper function for allocation of deoptimization history.
This CL addresses DBC comments from my previous CL (https://codereview.chromium.org/15779006/)
R=srdjan@google.com
EnsureDeoptHistory()ってので綺麗にした。


r23322 | sgjesse@google.com | 2013-05-29 16:29:29 +0900 (水, 29 5月 2013) | 8 lines
Remove library dart:crypto
Moved the contnet of dart:crypto to the package pkg/crypto.
R=dgrove@google.com, floitsch@google.com, iposva@google.com, nweiz@google.com
crypto_libraryをobject_storeから除去。


r23311 | zra@google.com | 2013-05-29 07:55:51 +0900 (水, 29 5月 2013) | 5 lines
Implements intrinsics for ARM.
R=regis@google.com
arm版の
inline_allocを実装

ObjectArray_Allocate()を実装

kMaxElementsより大きければ、失敗。
ObjectArrayでは、
objectheader
type arguments
length
の順に埋め込む。
その後、raw_nullで全初期化。ループでraw_nullを埋める。

で、setIndexed()の際に、
enable_type_checksが有効である場合、
TypeArgumentsを取り出して、型チェックすると。。

TYPED_ARRAY_ALLOCATIONってのもある。
こちらは、0で初期化する。

以降も大量のARM Intrinsicsが続く。
余裕があれば全部コードおってもいいかも

あとは文字列系が見たいかも


r23307 | regis@google.com | 2013-05-29 06:10:32 +0900 (水, 29 5月 2013) | 6 lines
Implement shift left on ARM and re-enable previously disabled test.
Fix bug on ia32 and x64.
R=zra@google.com
EmitSmiShiftLeft()

0x1Fより大きい場合、mov 0か
result がMintの場合、deopt。
OptimizerのUNIMPLEMENTEDが除去されていく。

r23293 | regis@google.com | 2013-05-29 02:14:47 +0900 (水, 29 5月 2013) | 5 lines
Fix equality code on ARM.
R=zra@google.com
stackへのPush Dropを整理したのかな。

r23266 | sgjesse@google.com | 2013-05-28 22:35:01 +0900 (火, 28 5月 2013) | 20 lines
Merge the dart:uri library into dart:core and update the Uri class
This merges the dart:uri library into dart:core removing the dart:uri library.
Besides moving the library the Url class has been changed.

Removed existing Uri constructor as it was equivalent with Uri.parse

Remamed constructor Uri.fromComponents to Uri

Moved toplevel function encodeUriComponent to static method Uri.encodeComponent

Moved toplevel function decodeUriComponent to static method Uri.decodeComponent

Moved toplevel function encodeUri to static method Uri.encodeFull

Moved toplevel function decodeUri to static method Uri.decodeFull

Rename domain to host

Added static methods Uri.encodeQueryComponent and Uri.decodeQueryComponent

Added support for path generation and splitting

Added support for query generation and splitting

Added some level of normalization

R=floitsch@google.com, lrn@google.com, nweiz@google.com, scheglov@google.com
vmでは、uriライブラリをobject_storeから削除するのみ。

r23249 | srdjan@google.com | 2013-05-28 19:44:02 +0900 (火, 28 5月 2013) | 5 lines
Use stack locations instead of register for binary Smi operations when possible.
R=fschneider@google.com
BinarySmiOperationをaddressを引数にとれるように修正。
Locationに、PreferRegisterを追加
IsStackSlot()で確認し、上記で追加したaddressを引数にとるBinarySmiOperationを実行する。
Register割付にてをいれているわけではないので、
たまたまstackに割付いていれば効果があるのかな。


r23243 | fschneider@google.com | 2013-05-28 18:30:43 +0900 (火, 28 5月 2013) | 11 lines
Remove pseudo-node from LoadLocalNode and replace it with a proper AST node.
The newly introduces CommaNode denotes a sequence of two nodes, the result
is the value of the second child node.
There are only two places where the pseudo-node was used, and therefore
it does not warrant adding an extra member to all LoadLocalNode objects.
R=kmillikin@google.com
LoadLocalNodeのPseudoがなくなって、、
CommaNodeってので置き換えた。用途不明だな。

r23214 | fschneider@google.com | 2013-05-27 20:43:19 +0900 (月, 27 5月 2013) | 5 lines
Small code cleanup in the parser.
R=kmillikin@google.com
制御ちょっとかえた。


r23213 | kmillikin@google.com | 2013-05-27 20:31:27 +0900 (月, 27 5月 2013) | 8 lines
Do not emit duplicate deoptimization entries for GotoInstr.
This is the uncontroversial part of https://codereview.chromium.org/15741002/
R=fschneider@google.com
CanBecomeDeoptimizationTarget()に変更
GotoInstr::EmitのAddCurrentDescriptor()を削減


r23209 | fschneider@google.com | 2013-05-27 19:19:49 +0900 (月, 27 5月 2013) | 9 lines
Streamline IL for instantiating type arguments.
In some cases we would emit a InstantiateTypeArguments IL instruction that was a no-op.
This CL avoids this instruction when building the graph,
instead of emitting an empty instruction in the back-end.
R=kmillikin@google.com
type argumentsの修正を、全Archに行った。
builder側にifを移動して、条件下でBind


r23190 | zra@google.com | 2013-05-25 08:45:41 +0900 (土, 25 5月 2013) | 15 lines
Enables optimization on MIPS
  • Exposes double precision rather than single precision floating point registers
to architecture generic code. This entails a mechanical change in the assembler
 to floating point instructions.
  • Adds slti, sltiu instructions for comparison with small immediates, and uses
them in the Branch(Un)Signed* macros.
  • Fixes a bug in the intermediate language comparison/branching instructions
caused by using subu for comparison. Now it uses two slt instructions.
  • Fixes register use bugs in intermediate language.
  • More uses of NULLREG instead of loading Object::null()
R=regis@google.com
mips向けも同様に実装。

r23189 | asiva@google.com | 2013-05-25 08:42:01 +0900 (土, 25 5月 2013) | 5 lines
More cleanups to avoid Handle creation in hot paths.
R=iposva@google.com
リファクタリングで処理を共通化。
CheckFunctionType()
LookupFunction()
LookupFunctionAllowPrivate()
LookupField()


r23188 | regis@google.com | 2013-05-25 07:50:05 +0900 (土, 25 5月 2013) | 5 lines
Fix MegamorphicMiss stub on ARM.
R=zra@google.com
r23169 | regis@google.com | 2013-05-25 03:52:34 +0900 (土, 25 5月 2013) | 9 lines
Fix a bug in optimized ARM code.
Fix a bug in deoptimization (wrong stack layout assumption, worked on Intel by chance).
Implement megamorphic instance call on ARM.
Improve line number reporting in simulator backtraces.
R=zra@google.com
ARMにmegamorphic instance callを実装。megamorphicは、cacheをhash引きしてtargetを呼び出す実装。
PushList R0 R1がdeoptに追加した処理か。

r23153 | hausner@google.com | 2013-05-25 01:26:42 +0900 (土, 25 5月 2013) | 10 lines
Allow breakpoints on strict equal
The compiler turns equality checks with null into
strict equal comparisons. Make the compiler backend
create a pc descriptor for the runtime call so that
the debugger can break on x == null and x != null.
R=regis@google.com
ComparisonInstrにtoken_posを引数で渡して、
最終的にAddCurrentDescriptor()をEmit


r23151 | zra@google.com | 2013-05-25 00:45:17 +0900 (土, 25 5月 2013) | 7 lines
Ensures that Bigints returned to Dart are all checked by Integer::AsValidInteger.
Rather than by ad-hoc checks at the point of return.
R=iposva@google.com
Integerを生成する際に、
int64_tに収まるか判定し、収まらないのであればBigInt
収まればMint or Smiを生成する。
という処理をまとめた、NewFromUint64()を追加


r23142 | fschneider@google.com | 2013-05-24 21:52:44 +0900 (金, 24 5月 2013) | 5 lines
Support inlining function containing throw in the optimizer.
R=kmillikin@google.com
throwが1個あった場合にinliningにチャレンジすると。

throwがあった場合、固有の処理として、何かある???todo



r23136 | fschneider@google.com | 2013-05-24 21:03:40 +0900 (金, 24 5月 2013) | 11 lines
Add deoptimization history to optimized functions.
Each function that is optimized or inlined into an optimized
functions keeps an array of deoptimization ids.
This history is used to avoid repeated deoptimization caused by
speculative hoisting of check instructions.
R=kmillikin@google.com
deopt_historyを新規作成。
set_deopt_history()
deopt_hisotryはfunctionが保持する。

MayHoist()ってのではhistoryを参照し、
過去にdeoptの原因となっていたらhoistしない。


r23117 | asiva@google.com | 2013-05-24 09:39:59 +0900 (金, 24 5月 2013) | 6 lines
Remove checks for Expect and ExpectException from
Parser::ResolveNameInCurrentLibraryScope
R=iposva@google.com
vm/parser
Expect ExpectExceptionを削除


r23115 | asiva@google.com | 2013-05-24 09:13:10 +0900 (金, 24 5月 2013) | 24 lines
Delay Class parsing until the class is actually used.
Prior to this change the initial heap sizes were as follows:
ia32:
Size of isolate snapshot = 1230921
New space (0k of 32768k) Old space (1446k of 1604k)

X64:
Size of isolate snapshot = 1223943
New space (0k of 32768k) Old space (2630k of 2692k)

After this change the initial heap sizes are as follows:
ia32:
Size of isolate snapshot = 686443
New space (0k of 32768k) Old space (677k of 836k)

X64:
Size of isolate snapshot = 684731
New space (0k of 32768k) Old space (1220k of 1412k)

R=hausner@google.com, iposva@google.com, regis@google.com
どちらもold space削減ですね。。
オプション trace_class_finalization

EnsureIsFinalized()からたどればよいのかな。

objectにstate_bitsを追加している。
is_type_finalized()やismarked_for_parsing()で参照されている。
state_bitsに、PatchBitとSynthesizedClassBit TypeFinalizedBit MarkedForParsingBit
が追加されている。

!is_synthesized_class
の場合はParseしない。

ParseClassDefinition, Declarationってのがある。
kOld領域を占めているのはpending_classesっていうArray

Compiler::CompileClass()を新規追加している。ParseClass()を呼び出す。
内部では上記色々なフラグを参照して制御する。

Parseを遅らせても、snapshotからの起動速度はほとんど遅くならないということなのかな。


r23110 | asiva@google.com | 2013-05-24 07:59:26 +0900 (金, 24 5月 2013) | 6 lines
  • Allocate symbols for 'get:' and 'set:'
  • Remove some redundant handle creation
R=iposva@google.com
不要なhandleを削除。
symbolにget: set:を追加しているけどどこで使っているのか。


r23094 | hausner@google.com | 2013-05-24 03:42:03 +0900 (金, 24 5月 2013) | 9 lines
Consolidate debug stubs
The new debug stub BreakpointRuntime gets the original stub address
from the debugger. With this scheme, we don't need a new debug stub
for every runtime stub that the debugger patches.
R=asiva@google.com
kEqualNullとかいう意味不明なdeoptがなくなって、代わりにRuntimeCallを追加。妥当かも。
Debug時には、GenerateBreakpointRuntimeStub()でkBreakpointRuntimeHandlerRuntimeEntryを生成しておく。


r23071 | floitsch@google.com | 2013-05-23 23:30:16 +0900 (木, 23 5月 2013) | 14 lines
Rewrite double.parse.
R=lrn@google.com, srdjan@google.com
r23062 | floitsch@google.com | 2013-05-23 21:00:45 +0900 (木, 23 5月 2013) | 6 lines
Rewrite double.parse.
R=lrn@google.com, srdjan@google.com
lib/doubleの修正。


r23053 | fschneider@google.com | 2013-05-23 17:41:10 +0900 (木, 23 5月 2013) | 5 lines
Fix small bug in the inlining heuristics: Don't compare size with number of call sites.
R=srdjan@google.com
size -> call_site_countへ置換。 > FLAG_inlining_callee_call_sites_threshold


r23046 | asiva@google.com | 2013-05-23 09:26:33 +0900 (木, 23 5月 2013) | 5 lines
Remove some dead code.
R=hausner@google.com
LookupFunctionInSource()を削除。

r23037 | regis@google.com | 2013-05-23 03:53:51 +0900 (木, 23 5月 2013) | 6 lines
Enable code optimization on ARM.
Disable failing tests.
R=zra@google.com
ARMのOptimizeCounterThresholdを有効
EmitEqualityAsPolymorphicCal()
GenerateCallNoSuchMethodFunctionStub
GenerateInstanceOf
EmitTestAndCall


r23030 | asiva@google.com | 2013-05-23 02:25:25 +0900 (木, 23 5月 2013) | 7 lines
Create test isolates using a snapshot, this ensures that we do not depend
on the location of core libraries which can be a problem when we copy
the run_vm_tests executable to a different machine.
R=zra@google.com
r23023 | asiva@google.com | 2013-05-23 01:07:25 +0900 (木, 23 5月 2013) | 8 lines
Fix runnning of vm benchmarks on golem.
Use snapshots for creating isolates used in the benchmarks,
that way they are not dependent on corelib source paths.
R=ajohnsen@google.com, srdjan@google.com
assert 追加のみ。


r23020 | srdjan@google.com | 2013-05-23 00:20:55 +0900 (木, 23 5月 2013) | 5 lines
Improve constant propagation for Mint and Smi.
R=kmillikin@google.com
ConstantPropagator::HandleBinaryOp()を追加。
left and rightがIsConstantである場合に、ArighmeticOp、Canonicalize()で静的評価。
BinarySmiOp BinaryMintOp ShiftMintOpで静的評価。

r23018 | srdjan@google.com | 2013-05-22 23:32:18 +0900 (水, 22 5月 2013) | 5 lines
Allow stack location for some instructions (relational and equality comparison).
R=fschneider@google.com
ConstantInstrがisStackSlot()の場合には、comqをemit
locationで、AnyOrConstant()で必要なレジスタ割付を削減。

  • 最終更新:2013-06-16 01:10:46

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

認証パスワード