RevisionLog27000台




r27982 | mlippautz@google.com | 2013-09-27 10:28:12 +0900 (金, 27 9月 2013) | 8 lines
Implementation for ClosureMirror.findInContext.
Fixes issue 5897.
R=asiva@google.com, gbracha@google.com, rmacnak@google.com
object.ccに、IsUninitialized()を追加
uninitializeは、value.raw() == Object::sentinel().raw()

lib/mirror
ClosureMirror_find_in_contextを新規追加


r27983 | sra@google.com | 2013-09-27 11:01:43 +0900 (金, 27 9月 2013) | 3 lines
Revert "Revert "Reinstate type checks in Math.min and Math.max""
r27981 | sra@google.com | 2013-09-27 10:15:58 +0900 (金, 27 9月 2013) | 3 lines
Revert "Reinstate type checks in Math.min and Math.max"
r27980 | sra@google.com | 2013-09-27 09:45:08 +0900 (金, 27 9月 2013) | 7 lines
Reinstate type checks in Math.min and Math.max
See Issue 11906 for discussion.
R=srdjan@google.com
min,maxのfingerprintを修正


r27979 | regis@google.com | 2013-09-27 09:26:22 +0900 (金, 27 9月 2013) | 5 lines
Support forwarding constructors for mixin typedefs (issue 11888).
R=hausner@google.com
extendsしたクラスのconstructorを clone生成



r27968 | hausner@google.com | 2013-09-27 03:54:15 +0900 (金, 27 9月 2013) | 9 lines
Check types of case expressions
Implement checks to make sure all case expressions are of the same type and other restrictions.
This change assumes that it's ok to use double values in switch expressions.
Will verify with those who are in the know.

R=srdjan@google.com
parser CheckCaseExpressions()
switch case のtypeを、valuesで収集して、全部同じか判定する。



r27964 | johnmccutchan@google.com | 2013-09-27 02:18:10 +0900 (金, 27 9月 2013) | 6 lines
Fix --gc_at_alloc

BUG=13619
R=asiva@google.com

object_id_ringがnullで初期化されているケース。いまいちこれの使い方がわからん。



r27950 | fschneider@google.com | 2013-09-26 22:12:59 +0900 (木, 26 9月 2013) | 13 lines
Fix optimized Math.pow on x64 with NaN exponents.

The libc implementation used by the optimized code differs
from the expected behaviour. It does not return double.NaN
as the Dart implementation of pow when the exponent is NaN.

The test fails when running with a low optimization-counter-threshold=5.

TEST=math/double_pow_test
R=srdjan@google.com

x64において、baseがNaNの可能性があり、チェックを挿入した。


r27919 | asiva@google.com | 2013-09-26 07:54:07 +0900 (木, 26 9月 2013) | 5 lines
Minor cleanup for the Null string case.
R=rmacnak@google.com

StringArgumentがIsNullのケース
obj.IsNull()


r27916 | rmacnak@google.com | 2013-09-26 06:42:13 +0900 (木, 26 9月 2013) | 7 lines
Implement closurization of regular methods in ObjectMirror.getField in the VM.

R=asiva@google.com

objectにImplicitStaticClosure()を追加
ResolveDynamicAnyArgsAllowPrivate()を新規追加して、lib/mirrowを修正しているけど、
Resolveのほうはそのうち削除するらしい。。


r27895 | hausner@google.com | 2013-09-26 02:26:55 +0900 (木, 26 9月 2013) | 5 lines
Discard first line of multiline string if only whitespace

R=iposva@google.com
scanner
whitespaceのscanを飛ばす。ScanLiteralStringChars()


r27885 | zra@google.com | 2013-09-26 00:30:08 +0900 (木, 26 9月 2013) | 5 lines
Loads some large Smis from the object pool on x64.

R=fschneider@google.com
x64の場合32bit以上もSmiであるため、x64 assemblerのCanLoadFromObjectPoolの制御を変更


r27882 | fschneider@google.com | 2013-09-26 00:00:53 +0900 (木, 26 9月 2013) | 6 lines
Fix x64 assembler in roundsd and pxor.

R=johnmccutchan@google.com

x64 assemblerの、EmitXmmRegisterOperandを若干修正
dst & 7


r27874 | fschneider@google.com | 2013-09-25 20:04:55 +0900 (水, 25 9月 2013) | 10 lines
VM: Fix CHA for Object.

Class hierarchy analysis does not track subclasses of Object.
Therefore, it needs to safely assume that any functions has an override.

This fixes test failures when running with --optimization-counter-threshold=5.
R=kmillikin@google.com

ObjectクラスのsubclassはHasOverride()のチェック対象としない。return true



r27868 | ajohnsen@google.com | 2013-09-25 18:20:40 +0900 (水, 25 9月 2013) | 6 lines
Re-enable VM isolate tests.

R=ricow@google.com
testの修正
Bug 6890を修正


r27863 | bak@google.com | 2013-09-25 15:18:52 +0900 (水, 25 9月 2013) | 5 lines
Fixed an overflow bug in the compare function used by the heap histogram sorting.
R=iposva@google.com

ObjectHistogram::compare を修正して、 1 0 -1を返す


r27856 | hausner@google.com | 2013-09-25 07:16:19 +0900 (水, 25 9月 2013) | 7 lines
Eliminate legacy support for throw without expression.
Issue 13533.
R=mlippautz@google.com
catchの中では、throwでなくrethrow


r27850 | regis@google.com | 2013-09-25 05:26:12 +0900 (水, 25 9月 2013) | 6 lines
Address comments of committed change https://codereview.chromium.org/24397002/
Fix typo in Matthias last commit.
R=hausner@google.com
コメントを大量追加

Support for mixin typedef.
Consider the following example:

class I<T> { }
class J<T> { }
class S<T> { }
class M<T> { }
typedef A<U, V> = Object with M<Map<U, V>> implements I<V>;
typedef C<T, K> = S<T> with A<T, List<K>> implements J<K>;

Before the call to ApplyMixinTypedef, the VM has already synthesized 2 mixin
application classes Object&M and S&A:

Object&M<T> extends Object implements M<T> { ... members of M applied here ... }
A<U, V> extends Object&M<Map<U, V>> implements I<V> { }

S&A<T`, U, V> extends S<T`> implements A<U, V> { }
C<T, K> extends S&A<T, T, List<K>> implements J<K> { }

In theory, class A should be an alias of Object&M instead of extending it.
In practice, the additional class provides a hook for implemented interfaces
(e.g. I<V>) and for type argument substitution via the super type relation (e.g.
type parameter T of Object&M is substituted with Map<U, V>, U and V being the
type parameters of the typedef A).

Similarly, class C should be an alias of S&A instead of extending it.

Since A is used as a mixin, it must extend Object. The fact that it extends
Object&M must be hidden so that no error is wrongly reported.

Now, A does not have any members to be mixed into S&A, because A is a typedef.
The members to be mixed in are actually those of M, and they should appear in a
scope where the type parameter T is visible. The class S&A declares the type
parameters of A, i.e. U and V, but not T.

Therefore, the call to ApplyMixinTypedef inserts another synthesized class S&A`
as the superclass of S&A. The class S&A` declares a type argument T:

Instead of
S&A<T`, U, V> extends S<T`> implements A<U, V> { }

We now have:
S&A`<T`, T> extends S<T`> implements M<T> { ... members of M applied here ... }
S&A<T`, U, V> extends S&A`<T`, Map<U, V>> implements A<U, V> { }

The main implementation difficulty resides in the fact that the type parameters
U and V in the super type S&A`<T`, Map<U, V>> of S&A refer to the type
parameters U and V of S&A, not to U and V of A. An instantiation step with
a properly crafted instantiator vector takes care of the required type parameter
substitution.

r27833 | iposva@google.com | 2013-09-25 02:32:40 +0900 (水, 25 9月 2013) | 5 lines
  • Use simplified token location call where appropriate.
R=asiva@google.com, hausner@google.com, mlippautz@google.com
GetTokenLocation()をいろいろと挿入


r27827 | johnmccutchan@google.com | 2013-09-25 01:23:46 +0900 (水, 25 9月 2013) | 5 lines
Cleanup bit casting methods between SIMD types
R=zra@google.com

Float32x4_fromUint32x4Bits()を追加
lib/typed_data.dartでは
nativeな実装を呼び出す。

r27826 | hausner@google.com | 2013-09-25 01:14:28 +0900 (水, 25 9月 2013) | 13 lines
Improve NoSuchMethodError error messages
  • Don't say there is no constructor with name X if there is one
that has incompatible parameter list.
  • Better error message when mismatched optional parameters are passed.
(Prviously only the number of parameters was considered, but not
 names of named parameters for example.)

Fixes issue 6189.
R=regis@google.com

objectに追加
UserVisibleFormalParameters()を追加
BuildSignature()を呼び出す

ThrowNoSuchMethodError()
の引数追加。 &constructor を関数ポインタとして追加



r27801 | fschneider@google.com | 2013-09-24 17:21:48 +0900 (火, 24 9月 2013) | 6 lines
Fix range checks for typed data in native code and the optimizer.

TEST=tests/standalone/typed_data_test.dart
R=asiva@google.com

TYPED_DATA_GETTER/SETTERにaccess_sizeを追加
RangeCheck()する。



r27791 | regis@google.com | 2013-09-24 09:25:01 +0900 (火, 24 9月 2013) | 7 lines
Support mixin application typedef as mixin in the VM (issues 9383, 12773).
Disallow Object as mixin (issue 10952).
Detect illegal cycles in mixins.

R=hausner@google.com

finalizerでのIsMixinApplication()を修正
IsMixinCycleFree() //visitedの管理
CloneMixinAppTypeParameters()
ApplyMixinTypedef() //新規追加で結構でかい。



r27789 | asiva@google.com | 2013-09-24 08:53:39 +0900 (火, 24 9月 2013) | 16 lines
  • Added Dart_GetNativeIsolateData so that the bindings code can access the IsolateCurrentData
where possible without having to invoke Isolate::Current()
  • Modified lookupWrapper to accept DartDOMData as a parameter so that the return to Dart functions
won't invoke Isolate::Current()

Some Dromaeo numbers before this change:
CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-attr getAttribute runs-per-second 1162.2
CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-attr element_property_access runs-per-second 1255.6

after this change:
CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-attr getAttribute runs-per-second 1237.6
CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-attr element_property_access runs-per-second 1385.4

R=rmacnak@google.com, vsm@google.com

Dart_GetNativeIsolateData()
において、
isolate->init_callback_data();




r27786 | mlippautz@google.com | 2013-09-24 08:24:59 +0900 (火, 24 9月 2013) | 7 lines
Make Script::GetTokenLocation() and Script::TokenRangeAtLine() use token streams where possible.
R=hausner@google.com, iposva@google.com
TokenRangeAtLine()を削除し、inline


r27778 | johnmccutchan@google.com | 2013-09-24 01:58:49 +0900 (火, 24 9月 2013) | 5 lines
Add private TypedList getters and setters to the invisible list
R=asiva@google.com

invisible listに、
TypedDataLibraryのget/setを追加



r27774 | rmacnak@google.com | 2013-09-24 01:23:06 +0900 (火, 24 9月 2013) | 5 lines
Make Dart_IdentityEqual live up to its sepc and not leak boxing implementation detail. (Reland r27542.)
R=asiva@google.com

IsIdenticalTo()を、object.hを追加
vm/dart_api_impl.cc
において、IsIdenticalTo でチェック



r27760 | fschneider@google.com | 2013-09-23 22:17:39 +0900 (月, 23 9月 2013) | 8 lines
Fix Linux perf profiling support.

This was broken after r27726 because Isolate::Current() is
NULL when the PerfCodeObserver is initialized.

R=kmillikin@google.com
filenameのdelete[]を追加



r27757 | fschneider@google.com | 2013-09-23 20:52:09 +0900 (月, 23 9月 2013) | 7 lines
VM: Fix bug in constant propagation with integer division and modulo.

TEST=tests/language/div_with_power_of_two2_test.dart
R=kmillikin@google.com

HandleBinaryOp()
kTRUNCDIV, kMODは、 Check right value for zero.



r27742 | fschneider@google.com | 2013-09-23 17:43:14 +0900 (月, 23 9月 2013) | 11 lines
Small cleanup in FlowGraphOptimizer.
Move inlining of Float32x4 and Uint32x4 getters into TryInliningRecognizedMethod.

Remove obsolete TODOs: The cases described are all handled by conventional
inlining. Unless there is a good performance or compilation-time reason, there is no reason
to add more cases to FlowGraphOptimizer.

R=johnmccutchan@google.com

MethodRecognizerのswitchを整理


r27727 | iposva@google.com | 2013-09-21 08:12:47 +0900 (土, 21 9月 2013) | 5 lines
  • Fix C++11 string literal requirements.
R=asiva@google.com
format Pd系の修正



r27726 | iposva@google.com | 2013-09-21 06:37:48 +0900 (土, 21 9月 2013) | 6 lines
  • Write the coverage data to a file instead of printing to stdout.
  • Explicitly include lines with zero hits.
R=asiva@google.com, mlippautz@google.com
coverageファイルなんてあったのか。 27344で追加していた。vm/service
CodeCoverageをprintするくらす。 coverage_dirを追加



r27724 | rmacnak@google.com | 2013-09-21 06:17:19 +0900 (土, 21 9月 2013) | 3 lines
Remove Dart_[Qualified]ClassName.
Removeしたのみ


r27719 | rmacnak@google.com | 2013-09-21 03:48:09 +0900 (土, 21 9月 2013) | 5 lines
Qualify calls from embedding API functions to other embedding API functions
to appease the Windows build.
TBR
:: を追加


r27715 | rmacnak@google.com | 2013-09-21 03:29:56 +0900 (土, 21 9月 2013) | 5 lines
Never return a Dart_Handle on a dart::Class from the embedding API.
R=asiva@google.com
apiからDart_GetSuperclass()を削除
Dart_InstanceGetClass()を削除


r27711 | mlippautz@google.com | 2013-09-21 01:36:45 +0900 (土, 21 9月 2013) | 8 lines
Use newline tokens when generating source from tokenstream.
Line numbers in generated source now match the actual source.
R=iposva@google.com
GenerateSource
caseをいろいろ追加



r27710 | asiva@google.com | 2013-09-21 01:25:12 +0900 (土, 21 9月 2013) | 21 lines
  • Modify toDart to first do a simple lookup in the appropriate table before going down the templatized
morass of switch statements
  • Add a returnToDart function so that the WeakPersistent Handle returned
from a lookup/create of the wrapper
 could be returned as is without the need to call Dart_handleFromWeakPersistentHandle
  • Use Dart_SetDoubleReturnValue for doubles

some DromaeoDartium numbers before this change:

CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-query getElementsByTagName(div) runs-per-second 84240.6
CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-traverse nextSibling runs-per-second 207.91683326669332
CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-query getElementsByTagName(*) runs-per-second 69599.2

some DromaeoDartium numbers after this change:

CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-query getElementsByTagName(div) runs-per-second 104252.4
CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-traverse nextSibling runs-per-second 366.8
CONSOLE MESSAGE: RESULT: Dromaeo-drt dartium-dart dom-query getElementsByTagName(*) runs-per-second 94922.6

R=rmacnak@google.com, vsm@google.com

ASSERT追加



r27700 | sgjesse@google.com | 2013-09-20 21:25:08 +0900 (金, 20 9月 2013) | 9 lines
Replace the memcpy macro with a lint check.

This fixes the build under libc++. It also allows us to check the
Windows and Android code. While at it, replace all uncaught instances
of memcpy with memmove.
R=sgjesse@google.com

memcpy -> memmove



r27699 | fschneider@google.com | 2013-09-20 21:14:06 +0900 (金, 20 9月 2013) | 8 lines
Clean up handling of guarded fields in the flow graph builder.

FlowGraphBuilder has a zone-allocated list of fields and passes it on to the FlowGraph.
R=kmillikin@google.com
r27695 | fschneider@google.com | 2013-09-20 19:35:01 +0900 (金, 20 9月 2013) | 10 lines
Reland: Fix bug in field type tracking and polymorphic inlining.

This fixes the bug by changing FlowGraphBuilder to a zone object
because it is needed by the inliner later in the pipeline.

R=kmillikin@google.com
reland r27675




r27685 | sra@google.com | 2013-09-20 10:16:38 +0900 (金, 20 9月 2013) | 11 lines
Special-case for Bigint single-digit division

1. Detect when the divisor is a single Chunk (aka digit) and use a fast algorithm
 (speeds up toRadixString)

2. Use the fast algorithm directly in Bigint.toString()

This makes printing of Bigints much faster, but there is more that could be done.
R=asiva@google.com, floitsch@google.com
bigint
InplaceUnsignedDivideRemainderDigit()
b_length == 1 のケースで呼び出す




r27684 | johnmccutchan@google.com | 2013-09-20 09:59:42 +0900 (金, 20 9月 2013) | 5 lines
Expose field data, use class id, and merge all collections into "objects"
R=asiva@google.com
PrintToJSONStreamを修正

ServiceMessageHandlerを修正
static ServiceMessageHandlerEntry __message_handlers[] = {
{ "name", HandleName },
 { "stacktrace", HandleStackTrace },
 { "objecthistogram", HandleObjectHistogram},
  • { "libraries", HandleLibraries },
  • { "functions", HandleFunctions },
  1. { "library", HandleLibrary },
{ "classes", HandleClasses },
  • { "codes", HandleCodes },
  1. { "objects", HandleObjects },
{ "_echo", HandleEcho },
};
                          




r27683 | rmacnak@google.com | 2013-09-20 09:33:24 +0900 (金, 20 9月 2013) | 5 lines
Setup the pool pointer when entering Dart from C++
so the intrinsic functions may rely on it being valid.
R=asiva@google.com, zra@google.com
x64を修正
stubにおいてR15のpush/popを失くした。



r27682 | hausner@google.com | 2013-09-20 09:12:55 +0900 (金, 20 9月 2013) | 5 lines
Properly parse symbol literals in top-level expression
R=iposva@google.com
SkipNewOperator() -> SkipSymbolLiteralを追加
CanBeOverloaded()のパスがある



r27678 | hausner@google.com | 2013-09-20 07:02:45 +0900 (金, 20 9月 2013) | 9 lines
Fix function type parameter parsing

Corner case of final variables was wrong.
In most cases, this went undetected because of the permissive type system of dart.
Fixes issue 13367.
R=regis@google.com
parser
implicitly_finalを移動



r27677 | mlippautz@google.com | 2013-09-20 06:46:50 +0900 (金, 20 9月 2013) | 13 lines
Introduce newline tokens into the token stream.

CL only introduces the tokens into the compressed token stream. We do not
use the newline tokens (yet).

Overhead:
snapshot: 6.4% (860k/808k)
compressed token stream (gen_snapshot): 21% (314312/259907)
R=asiva@google.com, hausner@google.com
StreamType kNoNewlines, kAllTokensを追加
scannerにtoken_streamを追加



r27674 | sra@google.com | 2013-09-20 04:51:55 +0900 (金, 20 9月 2013) | 7 lines
Add bsr to ia32 disassembler
bsr is generated for bitLength.
R=asiva@google.com
ia32 bsr 命令を追加



r27671 | hausner@google.com | 2013-09-20 03:08:26 +0900 (金, 20 9月 2013) | 3 lines
More fingerprint fixes, and fixing the FP verification option
r27669 | hausner@google.com | 2013-09-20 02:52:48 +0900 (金, 20 9月 2013) | 3 lines
Change more fingerprints
INLINE_WHITE_LIST()

r27668 | hausner@google.com | 2013-09-20 02:39:16 +0900 (金, 20 9月 2013) | 7 lines
Implement symbol literals in the VM compiler
Issue 12171
R=iposva@google.com
parser
ParseSymbolLiteral()を追加
vm/symbols.hにSymbolとSymbol.を追加


r27675 | asiva@google.com | 2013-09-20 05:32:16 +0900 (金, 20 9月 2013) | 5 lines
Revert
as it is causing dartium build breakage.
r27655 | fschneider@google.com | 2013-09-19 20:21:11 +0900 (木, 19 9月 2013) | 16 lines
Fix bug in field type tracking and polymorphic inlining.

When inlining implicit getters via the polymorphic inliner
(and not through the flow graph optimizer) the fields loaded
must be added to the list of guarded fields that trigger
deoptimization when a store violated the field type guard.

Also, this CL avoids adding fields to the list from inlining
candidates that do not get inlined after all. Previously, the
optimizer pass on the callee graph would add guarded fields
even if the final graph does not get inlined.

TEST=tests/language/vm/optimized_guarded_field_test.dart
R=kmillikin@google.com

FlowGraphInlinerから、guarded_fields_を削除
FlowGraphInlinerへAddToGuarededFields(Field&)を移動

FlowGraphBuilderに、guarded_fields_を追加

PrepareGraphs()




r27628 | hausner@google.com | 2013-09-19 01:02:30 +0900 (木, 19 9月 2013) | 10 lines
Fix redirecting constructors
Field initializer expressions must not be executed in redirecting constructors.

Fixes issue 13347
R=regis@google.com
parser
redirectionのケースを修正



r27627 | fschneider@google.com | 2013-09-19 00:41:45 +0900 (木, 19 9月 2013) | 15 lines
Polymorphic inlining of [] operations.

This CL adds the necessary parts to enable polymorphic inlining of recognized methods.
For now it handles only []-calls.
This helps code that deals with e.g. growable and fixed-length lists.

The basic idea is to adapt the code in the flow graph
optimizer so that it can be used from the generic inliner.
Currently this adds a bit of boilerplate code which I intend
to reduce when adding more recognized methods to be handled.

R=johnmccutchan@google.com

[]をrecognized methodにした。全部。
TryInlineGetIndexed() を追加
recognized methodは、inlinerの評価の際に特別扱いされたはず。



r27625 | fschneider@google.com | 2013-09-19 00:17:00 +0900 (木, 19 9月 2013) | 5 lines
Fix assertion in the parser about operator precedence.
R=kmillikin@google.com
assert追加



r27613 | lrn@google.com | 2013-09-18 21:32:47 +0900 (水, 18 9月 2013) | 14 lines
Change the order of bitwise operators and equality/relational operators.

Gives bitwise operators precedence above that of equality/relational operators.

This means that
a & mask == something
no longer needs parentheses.

Since bitwise operators didn't work on booleans,
and there are probably very few custom operator&'s that accept a boolean,
this is expected to not break existing code.
R=hausner@google.com, kasperl@google.com
新しい演算子の優先順序

  1. // 10 bitwise and &
  2. // 9 bitwise xor ^
  3. // 8 bitwise or |
  4. // 7 relational >= > <= < is as <-- このへんが下がった
  5. // 6 equality == != === !== <-- このへんが下がった





r27602 | kmillikin@google.com | 2013-09-18 19:16:11 +0900 (水, 18 9月 2013) | 13 lines
Fix an off-by-one error in deoptimization compression.

When compressing the deoptimization info, suffixes of length one are not
shared (the compression is the same length as the original, but more
indirect). However, they were grafted onto the trie as if they were shared,
i.e., one level lower than they should be.

Add debug code to verify the compression/decompression round trip.

BUG=dartbug.com/13273
R=fschneider@google.com

CreateDeoptInfo(deopt_table)
suffix->AddChild()


VerifyDecompression()を追加。



r27589 | mlippautz@google.com | 2013-09-18 10:16:07 +0900 (水, 18 9月 2013) | 10 lines
Catch potential integer overflows in bigint operations.

strlen() returns a size_t which usually is unsigned long. Since we assign it to
intptr_t, we need to check for a potential integer overflow. The (albeit very
unlikely) case is lengths>2G on 32bit platforms.

R=asiva@google.com

strlen()でサイズのチェックを行い、NGの場合FATALする。
kMaxChunkLen



r27581 | jacobr@google.com | 2013-09-18 05:52:22 +0900 (水, 18 9月 2013) | 8 lines
Make Dart_ScriptGetTokenInfo account for line_offset() and col_offset()
Cleanup bugs in wrapExpressionAsClosure Fix bug
in how setters were handled and filter out 'this' from local variables list.
R=hausner@google.com
debugger_api_impl
locationのcolumnを取得するようになった。



r27574 | zra@google.com | 2013-09-18 01:28:06 +0900 (水, 18 9月 2013) | 5 lines
Cleanup of some comparisons on ARM.
R=regis@google.com
ARMのCompareObject SmiだったらCompareImmediate()



r27545 | ricow@google.com | 2013-09-17 15:29:47 +0900 (火, 17 9月 2013) | 5 lines
Revert revision 27542 "Make Dart_IdentityEqual live up to its spec and not leak boxing
implementation detail."
This is causing checked mode failures on all vm bots.
r27542 | rmacnak@google.com | 2013-09-17 10:30:30 +0900 (火, 17 9月 2013) | 5 lines
Make Dart_IdentityEqual live up to its spec and not leak boxing implementation detail.
R=asiva@google.com
IdenticalをVMの中に移動。
obj1 != obj2のケースに対応


r27541 | rmacnak@google.com | 2013-09-17 10:10:45 +0900 (火, 17 9月 2013) | 5 lines
Make Dart_FunctionOwner return handles on Types rather than Classes.
R=asiva@google.com
いつぞや作ったRareType()を返す


r27539 | rmacnak@google.com | 2013-09-17 09:06:28 +0900 (火, 17 9月 2013) | 5 lines
Add Dart_QualifiedClassName.
R=asiva@google.com

Mirrors_api_implに、Dart_QualifiedClassName()追加
api.hにも追加



r27536 | asiva@google.com | 2013-09-17 06:58:00 +0900 (火, 17 9月 2013) | 5 lines
Allocate pending_classes array in new gen.
R=hausner@google.com
pending_classes をHeap::kOldからnewに変更


r27535 | asiva@google.com | 2013-09-17 06:57:46 +0900 (火, 17 9月 2013) | 7 lines
Use CHECK_ISOLATE instead of the more heavy DARTSCOPE for
Dart_HandleFromPersistent and DartHandleFromWeakPersistent. These
functions do not allocate any VM handles.

R=hausner@google.com

DARTSCOPE -> CHECK_ISOLATE
こういうののメモリの調整どうやっているのか。


r27523 | mlippautz@google.com | 2013-09-17 01:53:24 +0900 (火, 17 9月 2013) | 8 lines
Add metadata to type parameters. Reflective access is provided by TypeVariableMirror.
Addresses issue 10906.

R=asiva@google.com, rmacnak@google.com

AddTypeParameterMetadata()を追加
parserから叩く

mirror系で使用するらしい。


r27507 | zra@google.com | 2013-09-14 08:36:32 +0900 (土, 14 9月 2013) | 3 lines
Revert last commit
r27506 | zra@google.com | 2013-09-14 08:29:14 +0900 (土, 14 9月 2013) | 5 lines
Allows build of the standalone VM for ARM adroid.
R=iposva@google.com, vsm@google.com

ifdef !defined(ANDROID)
まじで?



r27505 | hausner@google.com | 2013-09-14 06:37:16 +0900 (土, 14 9月 2013) | 7 lines
Make hidden initializing formal parameters invisible to the debugger
Fixes issue 13143.
R=regis@google.com

SetInvisible() まわりの修正



r27494 | zra@google.com | 2013-09-14 03:10:04 +0900 (土, 14 9月 2013) | 7 lines
Fixes slow object pool search on x64.
Issue 13144.
R=iposva@google.com

x64の場合に、assemblerにclass ObjIndexPairの追加
key/value型

aseemblerの
FindObject()において、kNoPachableの場合に、LookUpする。

元はArrayのシーケンシャルな検索だった。


r27490 | iposva@google.com | 2013-09-14 01:55:57 +0900 (土, 14 9月 2013) | 5 lines
  • More use of pre-allocated read-only handles.
R=zra@google.com

Object::null_instance()へ置き換え



r27466 | kasperl@google.com | 2013-09-13 16:52:11 +0900 (金, 13 9月 2013) | 6 lines
Double the default heap size on 64-bit platforms to account
for all pointers taking up twice the amount of memory.
R=iposva@google.com

heap sizeを変更
512M から
kHeapSizeInMWords = 128
kHeapSizeInMB = kHeapSizeInMWord * kWordSize

x64の場合、1024MBかな。




r27461 | hausner@google.com | 2013-09-13 08:45:41 +0900 (金, 13 9月 2013) | 7 lines
Make "as" a built-in identifier aka pseudo keyword
Fixes issues 12551, 13021
R=regis@google.com

"as" -> Token::kAS kPseudoKeyword



r27446 | hausner@google.com | 2013-09-13 05:44:34 +0900 (金, 13 9月 2013) | 8 lines
Detect illegal class member names
Make it a compile time error if a class member has the same name as the class.
Fixes issue 13236.
errormsgの追加


r27445 | iposva@google.com | 2013-09-13 05:44:26 +0900 (金, 13 9月 2013) | 7 lines
  • Tighten assertions in the X64 assembler related to object pool usage.
  • Adjust code passing objects into the assembler.
  • Fix stack smashing bug in test.
R=zra@google.com

x64 CanLoadFromObjectPool()
Smiは対象外
isolateがcurrentでない、かつ
VMHeapの中に存在しないobjである。
もしくはnull、false、true。null false trueはObjectStoreに入っている。


Object::Handle() -> null_object()



r27440 | jacobr@google.com | 2013-09-13 02:45:42 +0900 (金, 13 9月 2013) | 6 lines
Add "function" as an argument to Dart_ActivationFrameInfo
R=hausner@google.com
ActivationFrameGetLocation()の引数に、functionを追加。



r27425 | fschneider@google.com | 2013-09-12 19:42:26 +0900 (木, 12 9月 2013) | 7 lines
Fix bug with deoptimization of SIMD Uint32x4 values.
The deoptimizer created the wrong kind of value for those.
R=kmillikin@google.com
bugfix
deoptにおいて、kFloat32x4FpuRegister -> kUint32x4FpuRegister



r27420 | johnmccutchan@google.com | 2013-09-12 16:29:20 +0900 (木, 12 9月 2013) | 5 lines
Do not eliminate GuardFieldInstr when guarding list length.
R=kmillikin@google.com

GuardFieldInstrのCanonicalizeにおいて、
length != kNoFixedLength の場合に、return this



r27418 | mlippautz@google.com | 2013-09-12 10:06:43 +0900 (木, 12 9月 2013) | 9 lines
Fix reparsing of function parameters that include type parameters.

The parser is now properly initializing parsed_function/current_function to make
internal lookups work (instead of crashing).
R=hausner@google.com, rmacnak@google.com

parserのParseFunctionParameters()において、
new ParserdFunction()が追加されてるな。。 reparsing ???



r27417 | rmacnak@google.com | 2013-09-12 09:48:16 +0900 (木, 12 9月 2013) | 7 lines
Fill in type arguments when creating an object from the mirrors or embedding API.

R=regis@google.com

apiのDart_Newにおいて、
type_parameterの扱いが変わったのかな。

Class::RareType()


r27395 | mlippautz@google.com | 2013-09-12 01:56:12 +0900 (木, 12 9月 2013) | 12 lines
Checks CObject lengths in native API.

Also converts the API to use intptr_t instead of a mixture of int64_t and int.
Internally all variable length objects have lengths and maximum values represented
as intptr_t (actually Smi ranges).
In order to check for these maximum lengths we need to have a common type for 32 and 64 bit platforms.

Helping constructs like IOBuffer can still use 64bit lengths,
but have to check that there values are actually in the domain of intptr_t
as soon as internal objects are created.

Addresses issue 4314.

R=asiva@google.com, sgjesse@google.com

lengthをint or int64_t から intptr_t に変更して、いろいろ変更

ArrayにはArray::kMaxElementsが定義されている。

CObject_kBigint型の場合に、
lengthはchunk_lenで扱って、Bigint::kMaxElements が上限

いろいろとlenの最大値チェックが新たに追加されてる。

xxx::kMaxElements() がStringやtyped_arrayやら、それぞれに定義されている。



r27393 | hausner@google.com | 2013-09-12 01:21:25 +0900 (木, 12 9月 2013) | 7 lines
Update unresolved name handling with library prefixes
Fixes issue 12913
R=iposva@google.com
parserの修正

IsPrimaryだった場合にmirror typeにして、
noSuchMethodErrorを挿入する。



r27390 | mlippautz@google.com | 2013-09-12 01:10:43 +0900 (木, 12 9月 2013) | 9 lines
Remove unreachable code in mirrors.

The only case where we do not set the name in the constructor is for anonymous mixin applications.
R=asiva@google.com, rmacnak@google.com

bootstrap から ClassMirror_nameを削除
lib/mirrorから除外


r27377 | kmillikin@google.com | 2013-09-11 21:32:58 +0900 (水, 11 9月 2013) | 10 lines
Fix a bug in block reordering/block compaction.

The compiler assumes (a) the graph entry is followed in the block order by
its normal entry, and (b) the normal entry block is non-empty. There is not
necessarily true, so stop assuming it.

R=fschneider@google.com

GraphEntryInstrをemitする際に、
fallthroughでない場合にjmpをemitする層を設けた。



r27363 | regis@google.com | 2013-09-11 09:41:07 +0900 (水, 11 9月 2013) | 8 lines
Simplify VM internal representation of a mixin application clause
(MixinAppType object) by removing some redundant field and type arguments.
Tolerate mixins with wrong number of type arguments and update tests.
Note: this is a first cleanup step in preparation of more mixin bug fixes.
R=hausner@google.com
class MixinAppTypeから冗長なfieldを削除
S<T> with M<U, N> -> S<T> with M<U>, N<V>



r27362 | zra@google.com | 2013-09-11 08:46:09 +0900 (水, 11 9月 2013) | 5 lines
Better handling of zero in compare and branch for MIPS.
R=regis@google.com
mips向け


r27348 | iposva@google.com | 2013-09-11 03:11:29 +0900 (水, 11 9月 2013) | 4 lines
  • Add missing AddProperty function, which was lost during reformatting.
  • Reenable vmservice tests.
AddProperty(name, s)


r27346 | iposva@google.com | 2013-09-11 02:47:55 +0900 (水, 11 9月 2013) | 3 lines
  • Disallow copy constructors.
DISALLOW_ALLOCATION();
DISALLOW_COPY_AND_ASSIGN(JSONArray);
を付けてる。


r27345 | iposva@google.com | 2013-09-11 02:31:37 +0900 (水, 11 9月 2013) | 3 lines
  • Add missing explicit in constructor.
r27344 | iposva@google.com | 2013-09-11 02:21:59 +0900 (水, 11 9月 2013) | 8 lines
  • Base JSON stream printing on stack objects.
  • Simplify creation of a JSONStream.
  • Add experimental coverage output to the VM.
R=asiva@google.com, johnmccutchan@google.com
vm/json_streamの修正

いろいろ追加し出したな。。

class JSONNObject
class JSONArray

オプションに、print-coverage
json形式で出力する

別にこれServerSideでJsonを高速化するんじゃなくて、
JSONStreamでVMのI/Fやdumpを提供するためにあるのか。



r27338 | hausner@google.com | 2013-09-11 00:30:52 +0900 (水, 11 9月 2013) | 12 lines
Fix debugger expression evaluation for top-level functions
The temporary class that holds the expression to be evaluated must be marked as finalized.
Added Jacob's closure tests.
Fixes issue 13192.
R=jacobr@google.com

Library:Evaluate()において、
temp_class.set_is_finalized()
を追加


r27312 | hausner@google.com | 2013-09-10 06:52:40 +0900 (火, 10 9月 2013) | 19 lines
Update handling of ambiguous name references

Update VM to latest spec. Referencing a name that is imported
from more than one library is no longer a compile-time error.
If one of the sources of an ambiguous reference is a dart library,
the dart library declaration is automatically hidden.

Also fixes a bug where looking up a getter name in a library
found the getter even though the name is filtered out in the 'hide' combinator.

Long-term we should fix the need for repeatedly convert between
the mangled getter and setter names and the untangled name.
Fixes 12915, 12913, 12724.
R=regis@google.com

修正内容が多い。
lookup系の引数から No ambiguity error expected. を削除



r27303 | vsm@google.com | 2013-09-10 02:35:27 +0900 (火, 10 9月 2013) | 5 lines
Fix compiler warning
R=asiva@google.com
return NULL -> false


r27302 | mlippautz@google.com | 2013-09-10 02:26:07 +0900 (火, 10 9月 2013) | 5 lines
"Reverting 27298"
r27298 | mlippautz@google.com | 2013-09-10 01:50:41 +0900 (火, 10 9月 2013) | 8 lines
Add length checks to ApiMessageWriter.
Addresses issue 4314.
R=asiva@google.com


r27295 | zra@google.com | 2013-09-10 00:39:26 +0900 (火, 10 9月 2013) | 5 lines
Sets a register aside on x64 for use as a pool-pointer.
It is loaded and restored from the code object on Frame entry and exit.
All LoadObject calls that can, and many calls and jumps through ExternalLabels now use the pool-pointer.
The --compiler-stats flag when running dart2js indicates that code size is reduced ~13%,
and more is probably possible.
R=fschneider@google.com, srdjan@google.com

LoadPoolPointer()において、
EmitFrameEntry()

x64でpatchする際に、IndexFromPPLoad()を挿入。
saved PPを挿入

EmitUnoptimizedStaticCall()ってのを、flow_graph_compilerから、
各アーキテクチャ依存のところに移動。


r27292 | kmillikin@google.com | 2013-09-09 23:54:45 +0900 (月, 09 9月 2013) | 9 lines
Fix the flag --reorder-basic-blocks so it works to disable reordering.

Temporarily set the flag to false by default to avoid a bad interaction
between block reordering and empty block compaction (dartbug.com/13101).
R=fschneider@google.com
オプションを--reorder-basic-blocks=falseをデフォルトに暫定的に修正
OSRでsegvするらしい。


r27291 | johnmccutchan@google.com | 2013-09-09 23:45:59 +0900 (月, 09 9月 2013) | 5 lines
Add cvtsd2ss into X64 disassembler
R=johnmccutchan@google.com

disassembler_x64の修正
cvtsd2ssを追加


r27288 | johnmccutchan@google.com | 2013-09-09 21:39:52 +0900 (月, 09 9月 2013) | 5 lines
Fix large performance regression in Box2D, MD5, and SHA1
R=kmillikin@google.com

__ cmpl(field_length_operand, Immediate(Smi::RawValue(0)));
__ j(LESS, &skip_length_check);

lengthが0だったらskipへ飛ぶと。。
これでarray_bound_checkのskip機能が完成なのかな。


r27282 | kmillikin@google.com | 2013-09-09 19:20:55 +0900 (月, 09 9月 2013) | 20 lines
Change --print-ast output to be more regular.

The print-ast output is useful for debugging front end issues.
It is a mix of fully-parenthesized prefix notation (i.e., Lisp S-expressions) with some infix.

It is not valid S-expressions for various other reasons. Most obviously, it
uses ' (single quote) instead of " (double quote) to delimit strings.

This change makes the print-ast output a valid Scheme S-expression. It can
be pretty printed by copying it, quoting it (by preceding it with a single
quote), and evaluating it at the REPL of a Scheme implementation.

Also, the AST node pretty names are changed to predictably match the class name.
It doesn't seem helpful to have them be arbitrary.
R=regis@google.com

Visit##
とは別に、
FOR_EACH_NODE系をマクロで定義



r27280 | johnmccutchan@google.com | 2013-09-09 14:48:01 +0900 (月, 09 9月 2013) | 5 lines
Replace guarded list length field loads with constants
R=fschneider@google.com, srdjan@google.com

PrepareIndexedOp()において、
必ずemit_bounds_check() をBoundCheckを挿入する。

LoadFieldInstrのCanonicalize()において、
field->guarded_list_length() でconstantの値を取得できる。

r27279 | johnmccutchan@google.com | 2013-09-09 06:44:42 +0900 (月, 09 9月 2013) | 5 lines
Tests for GuardField length check along with bug fixes
R=regis@google.com, srdjan@google.com

LookupField()
is_finalが重要

raw_objectにおいて、gcの対象をguarded_list_length_まで拡大

kNullCid
kTypedData 系も含めてフルアセンブラでlengthを取得

field_has_lengthで条件分岐
kArrayCid, kImmutableArrayCid, IsTypedDataClassId


r27269 | sra@google.com | 2013-09-07 07:22:26 +0900 (土, 07 9月 2013) | 19 lines
Esoteric bit operations.

  • bit length
  • truncate to signed fixed width integer
  • truncate to unsigned fixed width integer

This change is motivated by a program that spends 20-30% of its time here:
  // TODO(5828): Replace this with a bit-length method on int when available.
   int n_bitLength = this.n.toRadixString(2).length;

See Also
R=lrn@google.com, srdjan@google.com

intrinsifier _Smi, get:bitLengthを追加
Smi_bitLength()
bsrl を呼び出す

ia32 以外は未実装

BitLengthはMint,Bigintもある。
toRadixString()の高速化かな。



r27256 | srdjan@google.com | 2013-09-07 03:14:53 +0900 (土, 07 9月 2013) | 5 lines
For trigonometric functions call to C-libraries: they are faster than x87 operations (3% on Box2D).
This also enables quicker trigonometrics on ARM and MIPS.
TODO: Make InvokeMathCFunction more flexible so that it can handle both static and instance calls
R=zra@google.com
SupportsInlinedTrigonometrics()を削除

libc_cos -> kCosRuntimeEntry
libc_sin -> kSinRuntimeEntry
MathUnaryInstrに共通化

fsin() or fcos()を呼ぶのではなく、
CallRuntime()でTargetFnction()を呼び出す。




r27254 | jacobr@google.com | 2013-09-07 02:54:05 +0900 (土, 07 9月 2013) | 6 lines
Fix bug where Script files that only contained patches were lost from the list of LoadedScripts()
This resulted in incorrect stack traces for int.parse Many Script files containing patches
also contained non-patch classes or top level members and so they still worked.
R=asiva@google.com

AddScriptIfUnique()



r27248 | fschneider@google.com | 2013-09-06 22:55:24 +0900 (金, 06 9月 2013) | 22 lines
Remove inlining restriction of calls to the == operator.
This CL is the first step in enabling full inlining of == calls.
Previously, calls to any function with the name "==" were not considered
for inlining because super-calls were not handled correctly. Instead
of implementing == semantics for super calls in the back-end, the parser
now expands super calls to == into

let t1 = left, t2 = right {
(t1 === null  | | t2 === null) ? t1 === t2
                               : static_call(super.==, t1, t2)
}

This change removes a bit of platform-specific assembly. Normal instance calls
to == are still translated as before. Expanding those at the AST level would
incur a too high cost in terms of (unoptimized) code size, and also would be
an obstruction for optimizations of equality. The plan is to expand those
only at optimization time if there is an inlineable instance call to ==.

R=kmillikin@google.com
compareはnullの亡霊に悩まされている。。
JIT Emitの
EmitSuperEqualityCallPrologue()を除去

代わりに、parserで
EqualOperator をparserで解決し、
Nodeの組み合わせに変換する。



r27244 | kmillikin@google.com | 2013-09-06 20:54:26 +0900 (金, 06 9月 2013) | 24 lines
Disentangle AstNode::Name and AstNode::ShortName.

The Name function is used for pretty printing except that for a few
node types we rely on a specific name for implementation correctness.
Overriding the pretty printing function to get out a type name, or a
variable name, or an operator symbol name, is risky.

1. Code that relies on the semantics of the name will break if the
 pretty name is changed.

2. Pretty printing is less useful. For instance, LoadLocalNode just
 prints the variable name (twice, once as the AST constructor and
  once in quotes as the variable name).  This is confusing if the
  variable happens to have the same name as one of the other pretty
  names, e.g., args or seq.

Now, there is a virtual function to get the pretty name but classes do
not change it to communicate other information (type names, variable
names, operator names).

R=regis@google.com, srdjan@google.com

ShotName() -> PrettyName()
Name -> TypeName
具体的に、分かりやすくしたと。



r27218 | hausner@google.com | 2013-09-06 07:27:52 +0900 (金, 06 9月 2013) | 6 lines
Be consistent with number scanning

If 1.e+2 is interpreted as an integer literal followed by other tokens, then
so should 1e be interpreted as an integer literal followed by identifier e.

scannerの修正
IsDecimalDigit()



r27216 | hausner@google.com | 2013-09-06 07:11:50 +0900 (金, 06 9月 2013) | 10 lines
Fix number scanning

Removing an old, Dash-era hack that makes 2is a faulty number
literal rather than the number 2 followed by the identifier or keyword "is".

Also fix number_identifier_test.dart which contains an access
to a non-existent getter "memberName" of class NoSuchMethodError.

IsIdentStartChar()のケースを削除。



r27209 | srdjan@google.com | 2013-09-06 05:25:00 +0900 (金, 06 9月 2013) | 5 lines
Traverse inlined frames lazily when printing the stacktrace.
No need to carry separate function and code array, since function can always be extracted from code.

R=asiva@google.com
func_list_とcatch_func_list_を削除
適時At, GetTokenするように変更されたのか。




r27189 | fschneider@google.com | 2013-09-05 20:07:09 +0900 (木, 05 9月 2013) | 3 lines
Small code cleanup in the assembler/simulator.
arm and mips
alignmentのコードを整理したのが原因かな。



r27168 | sra@google.com | 2013-09-05 08:58:37 +0900 (木, 05 9月 2013) | 5 lines
Implement BigintOperations::MultiplyWithDigit
R=iposva@google.com

bigint
if 0 -> return zero

chunk単位で * をforループで繰り返す。


r27166 | asiva@google.com | 2013-09-05 08:42:13 +0900 (木, 05 9月 2013) | 8 lines

1. Add flag --trace-api to trace API function invocation
2. Add tracing of external native functions under --trace-natives flag
3. Added a _printCurrentStacktrace() function so that one could get a
 dart stack trace under 'gdb' when in a native or runtime function.

R=regis@google.com
オプション trace-api=false
dart_apiの各関数にtraceを仕込んでいる。

オプション trace-natives=false





r27157 | regis@google.com | 2013-09-05 07:21:36 +0900 (木, 05 9月 2013) | 6 lines
Keep track of the application of a mixin type to a mixin application class,
which includes setting up its type parameters (fix issue 12871).

R=asiva@google.com

MixinTypeAppliedBit に圧縮
finalizerで参照



r27140 | srdjan@google.com | 2013-09-05 04:36:20 +0900 (木, 05 9月 2013) | 5 lines
Change inlined stack frame iterator to use code and pc instead of frame.
R=asiva@google.com
InlinedFunctionsIterator(StackFrame*) -> (const Code&, uword pc)


r27136 | hausner@google.com | 2013-09-05 03:00:02 +0900 (木, 05 9月 2013) | 9 lines
Make showHide combinators work with getter/setter names
Adding test language/import_show_test.dart
Fixes issue 9535
R=regis@google.com
HidesName() なぞい。


r27134 | rmacnak@google.com | 2013-09-05 02:12:28 +0900 (木, 05 9月 2013) | 5 lines
Support named and optional positional arguments in reflective invocation.
R=ahe@google.com, regis@google.com
dart_entry InvokeConstructor(klass, constructor, arguments)を削除
2引数のInvokeConstructor()はそのままなのかも。



r27082 | rmacnak@google.com | 2013-09-04 07:50:15 +0900 (水, 04 9月 2013) | 7 lines
Implement ParameterMirror.metadata.
R=asiva@google.com

parserでmetadataを読み込んで評価する


r27079 | hausner@google.com | 2013-09-04 07:19:27 +0900 (水, 04 9月 2013) | 13 lines
Do not export library prefix names used in a library

The spec is unclear whether library prefix names are part of
the export namespace of a library or whether they are private
to that library. The latter makes more sense and is what dart2js
implements, so here's a VM change that implements the same
behavior. Spec will be clarified.

Fixes issue 12713.
R=iposva@google.com

obj.IsLibraryPrefix
export ?


r27075 | rmacnak@google.com | 2013-09-04 05:11:11 +0900 (水, 04 9月 2013) | 7 lines
Implement InstanceMirror.== in dart2js and InstanceMirror.hashCode in the VM and dart2js.

R=ahe@google.com, asiva@google.com

InstanceMirror_identityHash をbootstrap_nativesに追加
lib/mirrorに実装追加


r27072 | zra@google.com | 2013-09-04 03:23:43 +0900 (水, 04 9月 2013) | 10 lines
Preserves callee-saved FPU registers on ARM

Preserves callee-saved FPU registers on ARM when going from C++ to Dart code.
Adds assertions to the simulator to make sure this is being done correctly.
R=regis@google.com
dregisterを退避するのだと思う。D0 から D15まで。
kSavedContextSlotFromEntryFp -10 -> -26


r27063 | zra@google.com | 2013-09-04 00:17:02 +0900 (水, 04 9月 2013) | 5 lines
Saves callee-saved fpu registers on MIPS.
R=regis@google.com
mips
kAbiPreservedFpuRegCount = 12
を新たに積むように。

kSavedContextSlotFromEntryFpが -11 -> -23



r27058 | fschneider@google.com | 2013-09-03 23:02:53 +0900 (火, 03 9月 2013) | 15 lines
Simplify compilation of relational operators.

Instead of having a separate IL instructions relational comparisons
are built as normal instance calls initially. When optimized, we replace
the instance call with a smi/double/mint comparison instruction.

This enables generic inlining of relational operator calls and simplifies
code generation, too.

Merging comparisons with branches is done in the optimizing compiler's
branch simplification phase.

R=kmillikin@google.com

RelationalInstrではなく、InstanceCallInstrで生成することに。
set_operation_cid()で型をsetして、BinaryOpに可能であれば置換。

BinaryOp扱い(双方Smi or Mint or Double) の場合、
TryReplaceWithRelationalOp()で最適化する。

smi/double/mint 以外のcomparisonを出力するパスを削除。


r27037 | fschneider@google.com | 2013-09-03 19:56:43 +0900 (火, 03 9月 2013) | 8 lines
Follow-up fix to my change to IsPowerOfTwo: Alignment of one means no alignment, not zero.

We assert that the alignment is a power of two. Therefore, platforms that do not need
alignment should return alignment of one instead of zero.
R=kmillikin@google.com

alignment 0 -> 1



r27033 | fschneider@google.com | 2013-09-03 18:28:34 +0900 (火, 03 9月 2013) | 17 lines
Fix a compiler bug caused by Utils::IsPowerOfTwo treating zero as a power of two.

The IsPowerOfTwo function is used together with ShiftForPowerOfTwo. Both function
do not work with zero. This caused the optimizing compiler to generate invalid code
for the expression

x ? 0 : 0

where it assumed that if one of the constants is a power-of-two, it can
be computed by (1 << n). We check for 0 in a number of places, but instead
I decided to fix Utils::IsPowerOfTwo itself and remove unnecessary checks
for the zero case.

TEST=tests/language/vm/if_conversion_vm_test.dart, runtime/vm/utils_test.cc
R=kmillikin@google.com

Utils::IsPowerOfTwo() 追加
Templateにして,Utilsに追加
リファクタリング



r27009 | fschneider@google.com | 2013-09-02 19:43:59 +0900 (月, 02 9月 2013) | 14 lines
Fix bug with reflection on VM-internal native methods.

My previous approach was not enough, since methods can
be invoked via reflection before they are parsed/compiled.

This CL fixes the problem at hand, but I'd like a more general
approach to mark those methods. Maybe an annotation at the declaration
would be better.

I also refactored the test case as suggested in the previous code review.
R=srdjan@google.com

revert ???

IsInvisible()を除去

OneByteString::setAtを追加

  • 最終更新:2013-09-28 10:56:55

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

認証パスワード