狠狠撸
Submit Search
DartVM on Android
?
3 likes
?
1,987 views
N
nothingcosmos
Follow
Yokohamapf25 nothingcosmos
Read less
Read more
1 of 22
Download now
More Related Content
DartVM on Android
1.
Dart?VM?on?an?x86?based?Android Outline 1.?Dart は流行ってない 2.?DartVM 速い 3.?Android
で動くよ 4. 実演 2012/10/27?yokohama_android_pf_25 nothingcosmos?<nothingcosmos@gmail.com>
2.
プロフィール
HN:nothingcosmos ソフトウェアエンジニア (SI 系 )?Excel がともだち 22 回目、 23 回目に参加。 サイタマは遠い android の vm 周りや、 native 周りに興味があります。
3.
プログラミング言語 Dart
Web?Programming?Language Google が開発 2011/10 発表 2012/10 に M1?SDK?release
4.
人気度
TIOBE?Programming?Community?Index for?October?2012 JavaScript?11 位 Dart?43 位
5.
流行ってる?
日本では流行ってない。特に○○方面に dis られる印象。 型システムが残念には同意、だけど Java より全然良い。
6.
DartVM
JIT コンパイルを搭載した Dart の処理系 Java に対する JavaVM みたいなもの。 対応プラットフォームは ia32/x86? そのうち ARM Linux?Windows?Mac?Android 対応
7.
DartVM
V8 チームの人たちが作っている。 V8 の 10 倍高速に起動する。 V8 の 2 倍高速を目指す。
8.
使われ方
ClientSide(WEB ブラウザ dartium,?DartVM?on?Android) ServerSide(DartVM)
9.
WEB 業界のトレンド (
バトルロワイヤル )
10.
DartVM?on?Android の仕組み ホスト PC Ubuntu12
x86 X86 Android Emulator (1) DartVM を android 向けにクロスビルド /data/local/dart/dart DartVM /data/local/dart/hello.dart dart (2) adb push (3) adb push (4) adb shell /data/local/dart/dart hello.dart /data/local/dart/hello.dart
11.
x86?based?Android?Emulator
12.
x86?based?Android?Emulator
13.
DartVM の Android
向けビルド $?gclient?config? http://dart.googlecode.com/svn/trunk/deps/all.deps $?gclient?sync $?echo?”target_os?=?['android']”?>>?.gclient $?gclient?sync $?echo?”#include?<stdint.h>”?>>?/usr/include/stdio.h $?tools/build.py??m?release???os?android?dart
14.
動かす、サンプル $?adb?shell?mkdir?/data/local/dart $?adb?push?out/android/ReleaseIA32/dart?/data/local/dart/dart $?echo?"main(){?print("Hello,?world!");}"?>hello.dart $?adb?push?hello.dart?/data/local/dart $?adb?shell?/data/local/dart/dart?/data/local/dart/hello.dart
15.
実演
hello.dart fibo.dart isolate_test.dart isolate_fibo.dart?( ひとり isolate? 停止しない ) read.dart?(file 読み込み ) server.dart?(HttpServer 起動 停止しない ) systemcall に trace 仕込んだ dart
16.
DartVM の Android
向けファイル runtime/vm runtime/bin debuginfo_android.cc crypto_android.cc gdbjit_android.h|cc dbg_connection_android.h|cc os_android.cc directory_android.cc virtual_memory_android.cc eventhandler_android.h|cc extensions_android.cc runtime/platform fdutils_android.cc utils_android.h|cc file_android.cc thread_android.h|cc platform_android.cc process_android.cc socket_android.h|cc utils_android.cc
17.
DartVM の OS
抽象 I/F runtime/vm/os.h static const char* GetTimeZoneName(int64_t seconds_since_epoch); static int GetTimeZoneOffsetInSeconds(int64_t seconds_since_epoch); static int GetLocalTimeZoneAdjustmentInSeconds(); static int64_t GetCurrentTimeMillis(); static int64_t GetCurrentTimeMicros(); static word ActivationFrameAlignment(); static const int kMaxPreferredCodeAlignment = 32; static word PreferredCodeAlignment(); static uword GetStackSizeLimit(); static int NumberOfAvailableProcessors(); static void Sleep(int64_t millis); static void Print(const char* format, ...) PRINTF_ATTRIBUTE(1, 2); static void PrintErr(const char* format, ...) PRINTF_ATTRIBUTE(1, 2); static void VFPrint(FILE* stream, const char* format, va_list args); static int SNPrint(char* str, size_t size, const char* format, ...) PRINTF_ATTRIBUTE(3, 4); static int VSNPrint(char* str, size_t size, const char* format, va_list args); static bool StringToInt64(const char* str, int64_t* value); static void InitOnce(); static void Shutdown(); static void Abort(); static void Exit(int code);
18.
DartVM が呼ぶ systemcall runtime/vm/os_android.cc
localtime_r() tzset() gettimeofday() getrlimit() sysconf(_SC_NPROCESSORS_ONLN) usleep() vfprintf() vsnprintf() va_start() va_end() strtoll() exit() runtime/vm/virtual_memory_android.cc getpagesize() mmap() munmap() unmap() mprotect()
19.
Linux と Android
向けファイルの違い ほぼなし。 ときどき include や error_code の差分 intptr_t と int64_t
20.
DartVM?on?Android の制限
ビルドできるホストは Linux のみ x86?Android?Emulator か、 Android?NDK で動く。 他 CPU はこれから 今のところコマンドラインからしか操作できない。 Dart のライブラリに制限がある。 DartVM から Android の C や Java の I/F を使用不可能
21.
x86?based?Android って速い?
Intel の new?codegen 大改造パッチが投下 https://android?review.googlesource.com/#/c/38941/ before after ArchUtility.cpp AnalysisO1.cpp Assemble.cpp AnalysisO1.h CalloutHelper.h BytecodeVisitor.cpp Codegen.h CodegenInterface.cpp CodegenDriver.cpp Lower.cpp X86LIR.h Lower.h NcgAot.cpp ia32 LowerAlu.cpp NcgAot.h ArchVariant.cpp LowerConst.cpp NcgHelper.cpp ArchVariant.h LowerGetPut.cpp NcgHelper.h CallingConvention.S LowerHelper.cpp Translator.h Codegen.cpp LowerInvoke.cpp libenc (from Harmony asm em LowerJump.cpp dec/enc) LowerMove.cpp LowerObject.cpp LowerReturn.cpp
22.
まとめ
x86based?Android?Emulator は速いかも Chome 以外のブラウザで Dart はサポートされない。 Android に標準搭載されるかも。 詳細は http://code.google.com/p/dart/wiki/Android
Download