RevisionLog31000台

r31685 | hausner@google.com | 2014-01-10 08:56:08 +0900 (金, 10 1月 2014) | 8 lines
Delete obsolete debug stub

Remove the debug stub that became obsolete with the recent rewrite
of how we handle breakpoints at return statements.

R=regis@google.com
GenerateBreakpointReturnStubを削除


r31678 | hausner@google.com | 2014-01-10 06:50:20 +0900 (金, 10 1月 2014) | 9 lines
Debugger no longer causes top level variable initialization

When a top-level variable has not been initialized yet, the
debugger reports a value of ‘null’ rather than causing a side
effect of running the initializer code.
R=jacobr@google.com, srdjan@google.com


r31639 | johnmccutchan@google.com | 2014-01-09 09:33:54 +0900 (木, 09 1月 2014) | 5 lines
Disable profiler for Dartium bots


r31631 | johnmccutchan@google.com | 2014-01-09 07:42:12 +0900 (木, 09 1月 2014) | 3 lines
Temporary disable of thread interrupter on Linux



r31628 | srdjan@google.com | 2014-01-09 06:45:05 +0900 (木, 09 1月 2014) | 5 lines
Fix 15721: When checking for bad overrides we must eagerly finalize superclasses.
R=regis@google.com


r31626 | johnmccutchan@google.com | 2014-01-09 05:52:39 +0900 (木, 09 1月 2014) | 3 lines
Make Dart_EnterIsolate faster with profiler enabled. Enable profiler again.



r31621 | srdjan@google.com | 2014-01-09 04:09:56 +0900 (木, 09 1月 2014) | 7 lines
Fix issue 14366: in case of a type check error and conflicting type names being the same,
prefix type names with their library names. Example:
type 'myLib.My' is not a subtype of type 'My' of 'm'.
R=regis@google.com


r31618 | johnmccutchan@google.com | 2014-01-09 03:41:05 +0900 (木, 09 1月 2014) | 3 lines
Disable profiler


r31616 | asiva@google.com | 2014-01-09 02:49:27 +0900 (木, 09 1月 2014) | 5 lines
Fix for Issue 15911, use IsInlinable() to determine if TryInlineRecognizedMethod needs to be called.
Set is_inlinable to false when a function is marked as not optimizable.

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



r31607 | fschneider@google.com | 2014-01-08 22:07:53 +0900 (水, 08 1月 2014) | 11 lines
Fix bug in specialization of IC-data.

My previous change to use constants for OSR values if possible
uncovered a bug when narrowing IC-data based on type information:

If the exising IC data don't agree with the static type information, don't specialize.

R=vegorov@google.com

SpecialICData -> TrySpecializeICData
普通にic_dataを返すこともある。




r31601 | fschneider@google.com | 2014-01-08 20:27:10 +0900 (水, 08 1月 2014) | 16 lines
Use constants from the frame at OSR entry.

The code for reserving stack slots for OSR entry values is shared with the
code for reserving stack slots for try/catch. It does not handle them
optimally (reserving slots above the desired ones and copying them down,
instead of directly reserving the desired one). This CL simplifies allocation
of spill slots for try-catch as well.

This is an rebased version of Kevin's original CL
I removed an invalid assertion and removed more code that became unnecessary
with this change.
R=srdjan@google.com
InitializeOsrLocalRange()
InitializeOsrLocals()
ってのを追加して、OSRする際のFrameを最適化



r31600 | fschneider@google.com | 2014-01-08 19:27:01 +0900 (水, 08 1月 2014) | 20 lines
Generate smaller unoptimized code for local variable loads.
Use memory operands in unoptimized code on ia32 and x64 to
push local variables on the expression stack.

Instead of

mov eax, [ebp+index]
push eax

generate

push [ebp+index]

ARM/MIPS are unchanged. They don't have an instruction
for pushing a memory operand directly.
R=zra@google.com
register割付の調整。



r31584 | regis@google.com | 2014-01-08 06:55:07 +0900 (水, 08 1月 2014) | 6 lines
Use a trail instead of a mark bit when processing recursive types in the VM
(issue 15595).
R=asiva@google.com, rmacnak@google.com
trailを引数に追加



r31576 | srdjan@google.com | 2014-01-08 06:12:37 +0900 (水, 08 1月 2014) | 5 lines
Fix disassembler crash when mistaking integer values for objects.
R=iposva@google.com
FindOldObject()ってのを追加
CanFindOldObject(addr)


r31575 | hausner@google.com | 2014-01-08 06:10:47 +0900 (水, 08 1月 2014) | 15 lines
Add debugger steps in local variable assignments

This allows the debugger to single step and break on local
variable assignments in unoptimized code. Checks are only added if
the right hand side of the assignment has no safepoints where
the debugger would stop anyway.

Interestingly, generated code size is only 0.1% bigger, so the
cost is negligible.

Addresses issue 10403.
R=iposva@google.com

HandleStoreLocal()で、
DebugStepCheckInstr()命令を挿入する。



r31536 | fschneider@google.com | 2014-01-07 18:58:45 +0900 (火, 07 1月 2014) | 22 lines
Fix bug and refactor optimized try-catch.

When untagged values flow into a exception-throwing instruction
they need to be converted eagerly. Catch block entries assume all values are tagged at the entry.

I changed the generation of moves at throwing
instructions in try-catch: Instead of manuallu emitting moves,
construct a parallel move and use the resolver to emit the native code.
This eliminates a lot of duplicated code from all platforms.

It will also allow to re-use stack space that is currently allocated
separately for each individual try-catch in a function.

I added a few more unrelated minor changes in various parts of the VM

Simpilify guard code generation

Resolve refactoring TODO in deoptimization

Improve names


R=johnmccutchan@google.com
EmitTrySyncを共通に移動。
environment_useのメンテが大変なんだ。。



r31528 | srdjan@google.com | 2014-01-07 09:48:46 +0900 (火, 07 1月 2014) | 5 lines
Fix 15413: setRange for views with overlapping buffers.
R=johnmccutchan@google.com
isClamped()のケースで最適化


r31521 | johnmccutchan@google.com | 2014-01-07 08:32:37 +0900 (火, 07 1月 2014) | 5 lines
Fix sample reuse in profiler ring buffer
R=efortuna@google.com



r31504 | srdjan@google.com | 2014-01-07 06:22:14 +0900 (火, 07 1月 2014) | 5 lines
Compute range for Smi multiplication. Especially useful when working on canvas (Uint8ClampedList).
R=fschneider@google.com
Uint8ClampedList向けにkMULを最適化
RangeBoundaryを狭めて計算する。



r31463 | zra@google.com | 2014-01-04 10:23:43 +0900 (土, 04 1月 2014) | 12 lines
Replaces LongJump with LongJumpScope.

LongJump required explicitly restoring the old
long jump base before function return. This was
sometimes forgotten, leading to crashes. This
change puts the base restoration into the
destructor so that it happens automatically on return.

R=iposva@google.com

LongJumpScopeってのを追加。
LongJumpからLongJumpScopeにrenameか?



r31449 | hausner@google.com | 2014-01-04 05:50:32 +0900 (土, 04 1月 2014) | 9 lines
Fix setting breakpoint in non-finalized class.
This fixes issue 15870
Also added test case and verified manually that test case fails before this fix.
R=iposva@google.com, jacobr@google.com



r31448 | johnmccutchan@google.com | 2014-01-04 05:32:08 +0900 (土, 04 1月 2014) | 3 lines
Fix checked mode failure of FindFunctionIndex
r31447 | johnmccutchan@google.com | 2014-01-04 04:55:50 +0900 (土, 04 1月 2014) | 10 lines
Build map of code regions and address ticks for profile report.
Profile pauses should be less than 500 ms even when handling 120,000 samples (2 minutes @ 1000 hz).
Code objects are referenced by hex address: "code/cafebabe".
Test for retrieving code objects over the service.
Remove old profile tool scripts. Replaced by dprof (https://github.com/dart-lang/dprof) and Observatory UI for profiler.
Support for stable service refs to implicit closures and dispatcher functions.

R=srdjan@google.com
profilerに、AddressEntry pc, ticksを追加
ProfilerCodeRegionTableってのを追加
これにAddTickで範囲を指定する?
pcをentry keyに取るmapで管理するのかな。

serviceに
code HandleCode
profile HandleProfile
を追加

indexから逆算してJSONで出力する。


r31443 | asiva@google.com | 2014-01-04 03:47:38 +0900 (土, 04 1月 2014) | 6 lines
Add Dart API method Dart_SetPersistentHandle to enable setting the value of a persistent handle.
R=iposva@google.com
APIは外部APIね。Dart_SetPersistentHandle()を追加


r31436 | srdjan@google.com | 2014-01-03 08:55:37 +0900 (金, 03 1月 2014) | 5 lines
Use 'fabs' instead of 'abs' where appropriate.
R=zra@google.com
abs -> fabsへ置き換え。


r31435 | hausner@google.com | 2014-01-03 08:31:52 +0900 (金, 03 1月 2014) | 9 lines
Make return statements single steppable

Replace the code smashing breakpoints at function returns with a call
to a runtime stub that checks whether the debugger is single stepping.
The call to the stub is only emitted in unoptimized code.

R=srdjan@google.com
DebugStepCheckInstrっていうIRを追加した。
このIRから生成した組み込み関数から、DebugStepCheck Stubに飛ぶっぽい。
Stubからは、SingleStepHandlerRuntimeEntryを呼び出す。



r31431 | zra@google.com | 2014-01-03 05:53:55 +0900 (金, 03 1月 2014) | 7 lines
Adds missing calls to reset long_jump_base.
Fixes Issue 15744.
R=hausner@google.com, iposva@google.com


r31428 | srdjan@google.com | 2014-01-03 05:11:41 +0900 (金, 03 1月 2014) | 5 lines
Less register pressure: allow stack location for index argument of array bound check instruction.
Implement on ia32 only, since only few registers are available there.
R=johnmccutchan@google.com
CheckArrayBoundInstrのlocationを修正
条件下で、RegisterOrSmiConstant -> PrefersRegister


r31408 | iposva@google.com | 2013-12-31 09:27:16 +0900 (火, 31 12月 2013) | 5 lines
  • Allow to pre-filter before calling the FindObjectVisitor.
R=asiva@google.com, johnmccutchan@google.com
GCのobjectを辿る際に、
VisitRange()ってのを追加。
filterするのか。


r31405 | asiva@google.com | 2013-12-31 04:55:28 +0900 (火, 31 12月 2013) | 6 lines
Implement GetNativeReceiver without handles under a NoGCScope, this should
eliminate the hot InitializeHandle calls that were observed in the profile.
R=srdjan@google.com
APIに、GetNativeReceiverを追加


r31401 | iposva@google.com | 2013-12-31 02:50:19 +0900 (火, 31 12月 2013) | 5 lines
  • Avoid returning "<optimized out>" strings as contexts.
R=johnmccutchan@google.com



r31395 | srdjan@google.com | 2013-12-28 06:36:26 +0900 (土, 28 12月 2013) | 5 lines
Fix instruction removal for 'as' test; the bug caused us to stop optimizing after an 'as' test.
R=zra@google.com



r31386 | johnmccutchan@google.com | 2013-12-28 01:56:21 +0900 (土, 28 12月 2013) | 5 lines
Some cleanups
R=asiva@google.com


r31377 | srdjan@google.com | 2013-12-27 07:15:37 +0900 (金, 27 12月 2013) | 5 lines
Fix typo: enable cid guessing for equality operators as well.
R=hausner@google.com


r31372 | hausner@google.com | 2013-12-27 05:53:58 +0900 (金, 27 12月 2013) | 18 lines
Change how debugger handles source breakpoints

  • Identify a source breakpoint by a script and a token position
rather than a function object.
  • When a new breakpoint is set, iterate over all compiled functions
to see whether code breakpoints must be set.

This change fixes issues with functions that get compiled several
times, for example as implicit closures or a copies of mixin
functions or local closures of mixing functions. We did not detect
all duplicates of functions.

Eliminated recently introduced const modifiers in SourceBreakpoint
class. They tend to be in the way because several accessor methods
of SourceBreakpoint compute data lazily and modify the object as a side effect.

debuggerとservice回りに機能追加


r31370 | hausner@google.com | 2013-12-27 02:27:09 +0900 (金, 27 12月 2013) | 7 lines
Detect missing with clause in mixing applications
Fixes 15758.
R=srdjan@google.com



r31360 | johnmccutchan@google.com | 2013-12-21 08:31:55 +0900 (土, 21 12月 2013) | 5 lines
Fix release mode crash in String::DecodeURI.
BUG=


r31358 | johnmccutchan@google.com | 2013-12-21 07:35:55 +0900 (土, 21 12月 2013) | 10 lines
Refactor VM service IDs:

  • IDs are strings which can be concatenated together like paths.
  • Isolate ID is now "/isolates/XXX"
  • Function, field, class, library, and script IDs are now stable.
  • Introduce <type-ref> tags.

R=turnidge@google.com

vm/serviceをrafactoring
indexの取得処理や、encode/decode処理を追加



r31356 | turnidge@google.com | 2013-12-21 07:30:23 +0900 (土, 21 12月 2013) | 22 lines
Keep track of current "pause" event in the debugger.

This will allow us (later) to make nice descriptions of the state of
an isolate, e.g. "isolate 7112 is paused due to breakpoint 2" or
"isolate 7112 is paused due to interrupt" or "isolate 7112 is
running".

Use a new Pause() function to call the event handler during a pause.
It does some shared checking, setup, teardown.

Minor change in isolate interrupt handling - before we were not
setting 'in_event_handler_' in this case. Now we set 'pause_event_'
here, which will guard against recursive pauses in this case.

Reviewer: not sure what I think about all the names I used here.
"pause_event_" is very similar to PausedEvent but means something
different, as it includes pauses, interrupts, and (maybe) exceptions.
Dunno.

R=hausner@google.com

debuggerにpause処理を追加

r31347 | srdjan@google.com | 2013-12-21 05:11:38 +0900 (土, 21 12月 2013) | 5 lines
Optimize string length one comparisons by comparing char codes only.
Implemented for one byte strings only at the moment. Will add other string types/mixed compares later.
R=fschneider@google.com
IRにStringToCharCodeを追加

one-byte-stringの1文字をCharに変換して、比較する。
detect str[x] == "x"
こういうの。
IR中ではSmiとして扱うはず。


r31340 | zra@google.com | 2013-12-21 02:51:34 +0900 (土, 21 12月 2013) | 28 lines
Simplifies standalone VM Android build.

This change also avoids the need to
do another 'gclient runhooks' when switching
between Android and Linux builds, and between
IA32 and ARM Android builds.

gyp does not allow 'libraries' sections inside of
configurations. Therefore, since some architecture
specific paths, libraries, etc. must be specified
on the Android NDK's linker command line, to avoid
re-gyping when switching between Android IA32 and ARM,
this change moves the architecture specific linker
flags to a script, android_link.py.

To avoid re-gyping when swtiching between Linux and
Android, this change creates new configurations
that specify the target OS as well as the the target
architecture, e.g. ReleaseLinuxARM or ReleaseAndroidARM
instead of ReleaseARM.

This change also adds a --toolchain flag to build.py,
and removes obsoleted logic for setting up the Android build.
R=iposva@google.com
arm android向けにクロスコンパイルできるようになった。
gypiの修正



r31336 | regis@google.com | 2013-12-20 23:26:53 +0900 (金, 20 12月 2013) | 4 lines
Add missing ResolveType call (fix issue 15738).
Remove unused parameter from ResolveType.


r31332 | fschneider@google.com | 2013-12-20 21:21:09 +0900 (金, 20 12月 2013) | 5 lines
Revert r31326.
TBR=johnmccutchan@google.com,
r31326 | fschneider@google.com | 2013-12-20 18:41:42 +0900 (金, 20 12月 2013) | 19 lines
Use parallel move resolver for optimized try-catch.

This CL has no change in functionality and is purely clean up and
refactoring. Instead of manually generating the moves at throwing
instructions in try-catch, construct a parallel move and use the resolver
to emit the native code. This eliminates a lot of duplicated code
from all platforms.

It will also allow to re-use stack space that is currently allocated
separately for each individual try-catch in a function.

I added a few more unrelated minor changes in various parts of the VM

Simpilify guard code generation

Resolve refactoring TODO in deoptimization

Improve names

R=johnmccutchan@google.com
EmitTrySync系を削除
結局抽象的なFlowGraphCompilerに移動。
分けた後に戻した?


r31325 | regis@google.com | 2013-12-20 18:20:55 +0900 (金, 20 12月 2013) | 5 lines
Convert InstantiatedTypeArguments to TypeArguments upon canonicalization.
R=iposva@google.com
InstantiatedTypeArguments Canonicalize()を追加


r31324 | fschneider@google.com | 2013-12-20 18:18:40 +0900 (金, 20 12月 2013) | 5 lines
Update double unboxing heuristic.
R=srdjan@google.com
double unboxingのrateを10->13


r31311 | asiva@google.com | 2013-12-20 09:15:13 +0900 (金, 20 12月 2013) | 6 lines
Change Dart_GetNativeBooleanArgument to use class Ids and direct
pointer comparision of the singleton objects to determine value.

R=rmacnak@google.com


r31286 | asiva@google.com | 2013-12-20 02:47:56 +0900 (金, 20 12月 2013) | 8 lines
Allow the native resolver to setup whether it needs the Dart API scope to
be setup automatically or not when a native function is invoked.
This would allow the embedder to treat some native functions as leaf
functions whose invocation can be very light.

R=hausner@google.com, zra@google.com


r31247 | johnmccutchan@google.com | 2013-12-19 09:29:51 +0900 (木, 19 12月 2013) | 5 lines
Bucket unknown symbols by PC and demangle native symbols
R=iposva@google.com
native symbolのmangleを追加


r31244 | johnmccutchan@google.com | 2013-12-19 08:11:20 +0900 (木, 19 12月 2013) | 5 lines
Add flag to control profiler rate
R=asiva@google.com
profile_period=1000 microsecondsを追加
SetInterruptPeriodで設定


r31238 | iposva@google.com | 2013-12-19 05:52:35 +0900 (木, 19 12月 2013) | 6 lines
  • Promote objects early when a large percentage is being copied during a scavenge.
R=zra@google.com
オプション early_tenuring_threshold=66
scavengerのpromotionを速めに起動するためのオプション
copy gc直後にusageが66%以上の場合、即promotionするらしい。
fromからtoに生きているオブジェクトを移動したのち、usageが66%以上だった場合、
toのスペースを100%usageに設定するので、結果的にそうなるはず。


r31233 | turnidge@google.com | 2013-12-19 02:45:17 +0900 (木, 19 12月 2013) | 7 lines
Handle vmservice messages while at breakpoint.
Allow rudimentary inspection of breakpoints from vmservice.
R=hausner@google.com, johnmccutchan@google.com
vmserviceにdebugを追加
debugできるようになったのか。。


r31230 | srdjan@google.com | 2013-12-19 01:55:12 +0900 (木, 19 12月 2013) | 5 lines
Constant propagation in LoadIndexed when inputs are array/string and index constants.
R=fschneider@google.com, johnmccutchan@google.com
ConstantPropagator::VisitLoadIndexed()を改造
IsNonContantの場合はそれまでどおり
array_objと、indexが定数の場合に中身を取り出して最適化できるようになった。


r31229 | fschneider@google.com | 2013-12-19 00:46:39 +0900 (木, 19 12月 2013) | 10 lines
Fix bug in double unboxing.
The state bit that record if a field is unboxed or not has to be checked
in unoptimized code as well, since that code does not change when deoptimizing.

I also compacted the kind_bits bit field in the Field class to start from bit 0.
R=srdjan@google.com
kind_bits_offset()を参照して、kUnboxingCandidateBitとして参照している。
UnboxingCadidateフラグが立っている場合、
TryAllocateで新規にdoubleオブジェクトを生成する。
そうでない場合、普通にストアして、store barrier


r31227 | fschneider@google.com | 2013-12-19 00:30:07 +0900 (木, 19 12月 2013) | 9 lines
Fix invalid aliasing in type propagation of AssertAssignable.

We have to create a copy when computing the initial type for AssertAssignable
instead of using the CompileType of the input operand. Aliasing can cause
invalid elimination of checks after strengthening of asserts.

R=srdjan@google.com


r31209 | zra@google.com | 2013-12-18 07:22:12 +0900 (水, 18 12月 2013) | 5 lines
Adds CPU message type to vm service.
R=johnmccutchan@google.com
vm serviceにcpuを追加

"_echo", HandleEcho },
"classes", HandleClasses },
"cpu", HandleCpu },
"library", HandleLibrary },
"name", HandleName },
"objecthistogram", HandleObjectHistogram},
"objects", HandleObjects },
"stacktrace", HandleStackTrace },

debugもあるよ。



r31207 | asiva@google.com | 2013-12-18 07:07:41 +0900 (水, 18 12月 2013) | 6 lines
Changes to interpret the optimizable bit based on whether the function is native or not.
R=srdjan@google.com
object headerにis_optimizableフラグを追加して、コンパイル時に参照する。


r31205 | iposva@google.com | 2013-12-18 06:11:18 +0900 (水, 18 12月 2013) | 6 lines
  • Remove the reply_port from the VM internal message object.
  • Adjust all the uses of this API.
R=johnmccutchan@google.com
引数からreplyPortを一通り削除。patchとvmから削除。


r31199 | rmacnak@google.com | 2013-12-18 03:02:14 +0900 (水, 18 12月 2013) | 3 lines
Remove dead isLocalPort from the VM mirrors implementation.


r31198 | iposva@google.com | 2013-12-18 02:42:26 +0900 (水, 18 12月 2013) | 5 lines
  • Use named constant kNullable instead of true.
R=johnmccutchan@google.com


r31197 | zra@google.com | 2013-12-18 02:34:09 +0900 (水, 18 12月 2013) | 5 lines
Fixes Unimplemented crasher on MIPS.
R=johnmccutchan@google.com


r31194 | iposva@google.com | 2013-12-18 01:59:14 +0900 (水, 18 12月 2013) | 7 lines
  • Use canonicalized type of non-parameterized classes when available.
  • Do not attempt to make types for objects of Context.
R=fschneider@google.com, regis@google.com



r31193 | johnmccutchan@google.com | 2013-12-18 01:57:18 +0900 (水, 18 12月 2013) | 5 lines
Fix signed unsigned comparison error


r31192 | johnmccutchan@google.com | 2013-12-18 01:48:55 +0900 (水, 18 12月 2013) | 6 lines
Fix crash walking call stack on Linux.
R=asiva@google.com



r31175 | johnmccutchan@google.com | 2013-12-17 07:35:55 +0900 (火, 17 12月 2013) | 5 lines
Only interrupt thread don't record sample. Narrowing in on flaky crash on Linux.


r31173 | johnmccutchan@google.com | 2013-12-17 05:54:19 +0900 (火, 17 12月 2013) | 3 lines
Remove reference to ucontext_t until other Signal related functions on Android are implemented.


r31172 | srdjan@google.com | 2013-12-17 05:05:00 +0900 (火, 17 12月 2013) | 3 lines
The name of InternalError class has changed to _InternalError.


r31171 | johnmccutchan@google.com | 2013-12-17 04:54:46 +0900 (火, 17 12月 2013) | 3 lines
Add missing include file for Android build


r31170 | johnmccutchan@google.com | 2013-12-17 03:52:15 +0900 (火, 17 12月 2013) | 9 lines

Introduce ThreadInterrupter which calls a TLS set callback when thread is interrupted.

Threads can only register and unregister themselves with ThreadInterrupter.

Profiler is no longer involved in interrupting threads. It's just a callback and the buffer.

Profiler operates lock free using an atomic operation to reserve sample in sample buffer.

Linux, Mac, and Windows done.


R=asiva@google.com
ThreadInterrupterを作成
vm/thread_interrupter.ccを新規追加
オプション trace_thread_interrupter=false

profile=false
profile=true //linuxの場合のみデフォルト true
trace_profiled_isolates=false

profilerへの機能追加
profilerはThreadInterrpterにsampling用のcallbackを登録してprofileする。

interuppte時のcallbackを登録可能。
Register/Unregister
Enable/Disable

vm/thread_interrupter_xxx.ccを追加
vm/atomic_xxx.ccを追加
static uintptr_t FetchAndIncrement(uintptr_t* p)

fetchは、SampleBuffer::ReserveSample()から呼び出している。
pointerのcursorを取得する際に使用する。


r31164 | fschneider@google.com | 2013-12-17 00:11:31 +0900 (火, 17 12月 2013) | 21 lines
Add mutable double boxes for fields.

This allows the optimizing compiler to generate unboxed loads/stores
to fields containing double values. The double value is stored
in a reusable double object.

Unboxed loads/stores are generated for optimized code. Unoptimized code
allocates a new double on loads. To avoid performance regressions
for fields that are only written few times (e.g. only in the constructor)
I put a heuristic in place that
compares the usage count of setters and getters. Unboxed operations
are only generated if the setter is invoked a significant amount of
times (threshold is 10% of getter invocations).

The CL is so big because it changes the way LocationSummmary
is allocated: We now have a bit to generate different summaries
for optimized and unoptimized code.

R=srdjan@google.com
option unbox-double-fields=true
getterとsetterそれぞれでusage countを参照し、
getterとsetterの回数のしきい値を設定。しきい値を越える場合、
doubleのfieldをmutableに扱い、doubleの値を直接書き換える

適時にboxingしてfieldに書き込むと、writeが多く発生するとperformanceが低下してしまうため、
get/setの頻度をprofileして、コードを生成仕分ける。

StoreInstanceFieldSlowPathを追加
StoreInstanceFieldに、
IsPotentialUnboxedStore()のパスをコード生成に追加

IsUnboxedStore()
IsPotentialUnboxedStore()

double型のfieldに頻繁にwriteする際unboxせず、既存のfieldをmutableに扱い、
offsetを計算してdoubleの値を直接書き換えるコードを生成する。
binaryOpの引数にmutable fieldを取れるようにしたのか。
doubleのfieldからload unboxdouble 演算 boxing store fieldの一連の動作で、
unboxdoubleの手間を除いたのか。これはloadにも適応できると。


r31158 | ajohnsen@google.com | 2013-12-16 21:56:37 +0900 (月, 16 12月 2013) | 11 lines
Alternative Timer implementation using simply list-based priority heap.

The current implementation is not memory-optimized yet, to make it easier to review.

BUG=
R=fschneider@google.com, lrn@google.com, sgjesse@google.com
crashにするので、IsGuardFieldを含む場合にLICMを抑止する。



r31144 | turnidge@google.com | 2013-12-14 04:36:40 +0900 (土, 14 12月 2013) | 14 lines
Add GrowableObjectArray::ToUserCString().

Prints a decent representation of a list, subject to length
constraints. Prints the length of the list if it is truncated.

e.g.

[]
[1,2,3]
["0123456789",...](length:4)
R=johnmccutchan@google.com

GrowableObjectArray::ToUserCString()を追加


r31140 | rmacnak@google.com | 2013-12-14 03:33:45 +0900 (土, 14 12月 2013) | 8 lines
VM: Support calling through getters in InstanceMirror.delegate.
Implement without accessing private members of dart:core.
Fix language test expecting wrong return value.
R=fschneider@google.com



r31137 | srdjan@google.com | 2013-12-14 02:15:05 +0900 (土, 14 12月 2013) | 13 lines
Restoring the remaining CL 104893003.
For instance call representing numerical comparisons and binary operations
(double and Smi supported for now) that were never visited before optimization occurs,
we guess the cids if one of the argument cids is known,
e.g. ‘a == 1’ we guess that a is also going to be 1 thus avoiding emitting an IC-call
in optimized code and propagating the type accordingly.

Remove AssertAssignableInstr::RecomputeType as it may cause incorrect behavior:
it changes the type of its value based on input,
the graph below will then incorrectly remove CheckSmi.

v27 <- BinaryMintOp:14(..

v28 <- AssertAssignable(v27)
CheckSmi(v28)
v17 <- BinarySmiOp:86(+, v28, v12)

R=fschneider@google.com
以前revertされた奴か。
r31036
AssertAssignable.RecomputeType()を削除



r31131 | floitsch@google.com | 2013-12-13 22:05:28 +0900 (金, 13 12月 2013) | 7 lines
Isolate.spawn{Uri} only reports errors asynchronously.

It is generally considered bad style to throw synchronous and asynchronous errors.
This CL catches all synchronous errors and reports them in the asynchronous future that is returned.

R=iposva@google.com, lrn@google.com



r31111 | turnidge@google.com | 2013-12-13 06:33:25 +0900 (金, 13 12月 2013) | 5 lines
Remove old stack-walking code. The new code seems to be doing fine.
R=hausner@google.com
コードを大量に削除



r31087 | regis@google.com | 2013-12-12 07:51:19 +0900 (木, 12 12月 2013) | 11 lines
Introduce class TypeRef in the VM to fully support recursive types.
Fix issues 15244, 15148, 14869, 14000, and 13688 (was closed, but fragile).

Note that the current solution is not final as it may not be correct in more
complex cases not yet covered by language tests.
The final solution will require a 'trail' instead of a simple mark bit to
prevent operations involving recursive types to diverge.

R=asiva@google.com
parserにTypeRefを追加
Rawでは、RawTypeRefを追加

class C<T extends C> { }
class _HttpConnection extends LinkedListEntry<_HttpConnection> { ... }

こういうのらしい。詳細はissue参照。



r31085 | srdjan@google.com | 2013-12-12 07:25:38 +0900 (木, 12 12月 2013) | 5 lines
Some cleanups, fixes. Parts of the cid guessing CL that was revrted.
R=fschneider@google.com
compiler pipeにPropagate()を1個追加。ApplyClassIds()の直後。



r31074 | turnidge@google.com | 2013-12-12 03:03:42 +0900 (木, 12 12月 2013) | 14 lines
Add an instance view page to the vmservice.
We can use this view to browse the field values of objects and explore the heap a bit.

Add field lists to the class and instance view pages.
Add field-ref and instance-ref elements.
R=johnmccutchan@google.com

json形式でオブジェクトの構成や中身(instance, field)を出力し、htmlで参照できる。


r31056 | rmacnak@google.com | 2013-12-11 11:08:16 +0900 (水, 11 12月 2013) | 6 lines
Implement topLevelMembers, staticMembers, instanceMembers in the VM.
R=asiva@google.com, gbracha@google.com
mirrorに修正


r31039 | srdjan@google.com | 2013-12-11 06:16:02 +0900 (水, 11 12月 2013) | 3 lines
Revert r31036, because of bit redness.
r31036 | srdjan@google.com | 2013-12-11 04:09:44 +0900 (水, 11 12月 2013) | 5 lines
For instance call representing numerical comparisons and binary operations
(double and Smi supported for now) that were never visited before optimization occurs,
we guess the cids if one of the argument cids is known,
e.g. ‘a == 1’ we guess that a is also going to be 1 thus avoiding emitting an IC-call
in optimized code and propagating the type accordingly.

R=fschneider@google.com

comparison, binary, equality の場合に、
右辺がIsNumberCidだった場合に、
左辺のdynamic型に対して型情報をpropagateする。



r31029 | hausner@google.com | 2013-12-11 02:41:05 +0900 (水, 11 12月 2013) | 7 lines
Transmit breakpoint id on paused event
Breakpoint callback get an additional parameter to receive the id of the breakpoint that was hit,
or 0 if the debugger pauses due to stepping.

R=turnidge@google.com


r31024 | zra@google.com | 2013-12-11 01:43:06 +0900 (水, 11 12月 2013) | 8 lines
Fixes bug in far branches on MIPS.

Also increases test coverage of far branches on
ARM and MIPS.
R=regis@google.com


r31020 | fschneider@google.com | 2013-12-11 00:23:14 +0900 (水, 11 12月 2013) | 11 lines
VM: Generalize using propagated cids for to >1 arguments.

When ic-data are missing (optimized code that was not executed yet),
the compiler tries to fill in information calculated with type propagation.
The approach was only used for calls with 1 tested argument. This
enables it for all calls where we want to use propagated type
information if ic-data are missing.

R=srdjan@google.com
class_idsのリストが1以上に設定可能に。

  • 最終更新:2014-01-11 20:11:38

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

認証パスワード