0
Dart VM on an x86­based AndroidOutline1. Dart は流行ってない2. DartVM 速い3. Android で動くよ4. 実演                        2012/10/27 yo...
プロフィール   HN:nothingcosmos   ソフトウェアエンジニア (SI 系 ) Excel がともだち   22 回目、 23 回目に参加。   サイタマは遠い   android の vm 周りや、 native 周...
プログラミング言語 Dart   Web Programming Language   Google が開発   2011/10 発表   2012/10 に M1 SDK release
人気度   TIOBE Programming Community Index    for October 2012   JavaScript 11 位   Dart 43 位
流行ってる?   日本では流行ってない。特に○○方面に dis られる印象。   型システムが残念には同意、だけど Java より全然良い。
DartVM   JIT コンパイルを搭載した Dart の処理系   Java に対する JavaVM みたいなもの。   対応プラットフォームは ia32/x86  そのうち ARM   Linux Windows Mac Andr...
DartVM   V8 チームの人たちが作っている。   V8 の 10 倍高速に起動する。   V8 の 2 倍高速を目指す。
使われ方   ClientSide(WEB ブラウザ dartium, DartVM on Android)   ServerSide(DartVM)
WEB 業界のトレンド ( バトルロワイヤル )
DartVM on Android の仕組みホスト PCUbuntu12 x86                                           X86 Android                            ...
x86­based Android Emulator
x86­based Android Emulator
DartVM の Android 向けビルド$ gclient config   http://dart.googlecode.com/svn/trunk/deps/all.deps$ gclient sync$ echo ”target_os...
動かす、サンプル$ adb shell mkdir /data/local/dart$ adb push out/android/ReleaseIA32/dart /data/local/dart/dart$ echo "main(){ pri...
実演   hello.dart   fibo.dart   isolate_test.dart   isolate_fibo.dart ( ひとり isolate  停止しない )   read.dart (file 読み込み ) ...
DartVM の Android 向けファイルruntime/vm                   runtime/bin debuginfo_android.cc         crypto_android.cc gdbjit_andr...
DartVM の OS 抽象 I/Fruntime/vm/os.h static const char* GetTimeZoneName(int64_t seconds_since_epoch); static int GetTimeZoneO...
DartVM が呼ぶ systemcallruntime/vm/os_android.cc localtime_r() tzset() gettimeofday() getrlimit() sysconf(_SC_NPROCESSORS_ONL...
Linux と Android 向けファイルの違い   ほぼなし。   ときどき include や error_code の差分   intptr_t と int64_t
DartVM on Android の制限   ビルドできるホストは Linux のみ   x86 Android Emulator か、 Android NDK で動く。    他 CPU はこれから   今のところコマンドラインからし...
x86­based Android って速い?    Intel の new codegen 大改造パッチが投下     https://android­review.googlesource.com/#/c/38941/    before...
まとめ   x86based Android Emulator は速いかも   Chome 以外のブラウザで Dart はサポートされない。   Android に標準搭載されるかも。   詳細は    http://code.goog...
Upcoming SlideShare
Loading in...5
×

DartVM on Android

1,747

Published on

Yokohamapf25 nothingcosmos

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,747
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "DartVM on Android"

  1. 1. Dart VM on an x86­based AndroidOutline1. Dart は流行ってない2. DartVM 速い3. Android で動くよ4. 実演 2012/10/27 yokohama_android_pf_25 nothingcosmos <nothingcosmos@gmail.com>
  2. 2. プロフィール HN:nothingcosmos ソフトウェアエンジニア (SI 系 ) Excel がともだち 22 回目、 23 回目に参加。 サイタマは遠い android の vm 周りや、 native 周りに興味があります。
  3. 3. プログラミング言語 Dart Web Programming Language Google が開発 2011/10 発表 2012/10 に M1 SDK release
  4. 4. 人気度 TIOBE Programming Community Index for October 2012 JavaScript 11 位 Dart 43 位
  5. 5. 流行ってる? 日本では流行ってない。特に○○方面に dis られる印象。 型システムが残念には同意、だけど Java より全然良い。
  6. 6. DartVM JIT コンパイルを搭載した Dart の処理系 Java に対する JavaVM みたいなもの。 対応プラットフォームは ia32/x86  そのうち ARM Linux Windows Mac Android 対応
  7. 7. DartVM V8 チームの人たちが作っている。 V8 の 10 倍高速に起動する。 V8 の 2 倍高速を目指す。
  8. 8. 使われ方 ClientSide(WEB ブラウザ dartium, DartVM on Android) ServerSide(DartVM)
  9. 9. WEB 業界のトレンド ( バトルロワイヤル )
  10. 10. DartVM on Android の仕組みホスト PCUbuntu12 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. 11. x86­based Android Emulator
  12. 12. x86­based Android Emulator
  13. 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. 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. 15. 実演 hello.dart fibo.dart isolate_test.dart isolate_fibo.dart ( ひとり isolate  停止しない ) read.dart (file 読み込み ) server.dart (HttpServer 起動 停止しない ) systemcall に trace 仕込んだ dart
  16. 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.ccruntime/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. 17. DartVM の OS 抽象 I/Fruntime/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. 18. DartVM が呼ぶ systemcallruntime/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. 19. Linux と Android 向けファイルの違い ほぼなし。 ときどき include や error_code の差分 intptr_t と int64_t
  20. 20. DartVM on Android の制限 ビルドできるホストは Linux のみ x86 Android Emulator か、 Android NDK で動く。 他 CPU はこれから 今のところコマンドラインからしか操作できない。 Dart のライブラリに制限がある。 DartVM から Android の C や Java の I/F を使用不可能
  21. 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. 22. まとめ x86based Android Emulator は速いかも Chome 以外のブラウザで Dart はサポートされない。 Android に標準搭載されるかも。 詳細は http://code.google.com/p/dart/wiki/Android
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×