Git Product home page Git Product logo

v8worker's Introduction

v8worker's People

Contributors

emicklei avatar gitter-badger avatar joaojeronimo avatar joewalnes avatar kib357 avatar ry avatar tav avatar vanbroup avatar yinhm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

v8worker's Issues

No rule to make target `third_party/icu/icu.gypi'

hi @ry any thoughts about this?

I:v8worker chris$ make
version=4.3.59 target=x64.debug  ./build.sh
++ dirname ./build.sh
+ cd .
+ make -C v8-4.3.59 i18nsupport=off x64.debug
make[1]: *** No rule to make target `third_party/icu/icu.gypi', needed by `out/Makefile.x64.debug'.  Stop.
make: *** [v8.pc] Error 2

OS X Yosemite
Version 10.10.2

multiple goroutines calling worker.Send

Is this access pattern allowed / supported ? or is the program responsible for synchronzing this (e.g. mutex)?

any ideas how to kill a worker? (from the TODO list)

thank you for creating this package.

make install failed

On Mac 10.9, 'make' is completed, but 'make install' is failed with error massage as below:
./binding.cc:6:10: fatal error: 'v8.h' file not found
How to set cflags -I./v8.include for this?

cannot compile

linux, depot tools installed and are in the path
go get github.com/ry/v8worker
gives me
Failed to open 'v8.pc': No such file or directory

Any advice?...

synchronuous calls, Go <-> Js

Hi,

I have been working on 2 extensions to your v8worker project (see my fork).
Two additional Javascript keywords have been introduced to allow synchronous calls from Javascript to Go and vice versa.

var response = $request("ping");

which will call the Go function with this signature:

type RequestMessageCallback func(msg string) string

and in Go

response := worker.Request("pang")

which will call the function set as the handler:

$request_handler(function(msg) {
        return msg;
    });

At his point the code is working and would love to get some feedback.
I am using these extensions such that I can replace the otto package which provides these calling scenarios. In my case, I will send JSON messages back and forth that represent function calls and return values.

^ ernest

Can't build package because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

I'm trying to cross compile v8worker for multiple platforms via gox (https://github.com/mitchellh/gox) but it's complaining that cgo nor SWIG is used.

I don't think it's a cgo nor SWIG issue but it probably requires some changes to the Makefile.

gox "github.com/ry/v8worker/examples/commonjs"
Number of parallel builds: 31

-->      netbsd/arm: github.com/ry/v8worker/examples/commonjs
-->   freebsd/amd64: github.com/ry/v8worker/examples/commonjs
-->       linux/386: github.com/ry/v8worker/examples/commonjs
-->   windows/amd64: github.com/ry/v8worker/examples/commonjs
-->    darwin/amd64: github.com/ry/v8worker/examples/commonjs
-->     freebsd/386: github.com/ry/v8worker/examples/commonjs
-->      darwin/386: github.com/ry/v8worker/examples/commonjs
-->   openbsd/amd64: github.com/ry/v8worker/examples/commonjs
-->     windows/386: github.com/ry/v8worker/examples/commonjs
-->     openbsd/386: github.com/ry/v8worker/examples/commonjs
-->     linux/amd64: github.com/ry/v8worker/examples/commonjs
-->       linux/arm: github.com/ry/v8worker/examples/commonjs
-->    netbsd/amd64: github.com/ry/v8worker/examples/commonjs
-->     freebsd/arm: github.com/ry/v8worker/examples/commonjs
-->      netbsd/386: github.com/ry/v8worker/examples/commonjs

14 errors occurred:
--> freebsd/amd64 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> openbsd/amd64 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> darwin/amd64 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> netbsd/amd64 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> windows/amd64 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> linux/386 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> netbsd/386 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> openbsd/386 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> freebsd/arm error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> netbsd/arm error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> darwin/386 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> freebsd/386 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> linux/arm error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

--> windows/386 error: exit status 1
Stderr: can't build package github.com/ry/v8worker because it contains C++ files (binding.cc) but it's not using cgo nor SWIG

Any suggestions?

`make GYPFLAGS="-Dcomponent=shared_library"` fails to build target 'v8worker.test'

root@ubuntu:~/gostuff/src/github.com/ry/v8worker# make GYPFLAGS="-Dcomponent=shared_library"
...
Description: v8 javascript engine
Version: native
Cflags:  -I/root/gostuff/src/github.com/ry/v8worker/v8/include -I/root/gostuff/src/github.com/ry/v8worker/v8/
Libs:  -Wl,--start-group /root/gostuff/src/github.com/ry/v8worker/v8/out/native/obj.target/tools/gyp/libv8_libbase.a /root/gostuff/src/github.com/ry/v8worker/v8/out/native/obj.target/tools/gyp/libv8_base.a /root/gostuff/src/github.com/ry/v8worker/v8/out/native/obj.target/tools/gyp/libv8_libplatform.a /root/gostuff/src/github.com/ry/v8worker/v8/out/native/obj.target/tools/gyp/libv8_snapshot.a -Wl,--end-group -lrt -ldl'
go test -c
# github.com/ry/v8worker
./v8/out/native/obj.target/v8_base/src/api.o: In function `v8::V8::Initialize()':
../src/api.cc:(.text._ZN2v82V810InitializeEv+0x7): undefined reference to `v8::internal::ReadNatives()'
./v8/out/native/obj.target/v8_base/src/api.o: In function `v8::V8::Dispose()':
../src/api.cc:(.text._ZN2v82V87DisposeEv+0x7): undefined reference to `v8::internal::DisposeNatives()'
./v8/out/native/obj.target/v8_base/src/regexp/jsregexp.o: In function `v8::internal::AddUnicodeCaseEquivalents(v8::internal::RegExpCompiler*, v8::internal::ZoneList<v8::internal::CharacterRange>*)':
../src/regexp/jsregexp.cc:(.text._ZN2v88internal25AddUnicodeCaseEquivalentsEPNS0_14RegExpCompilerEPNS0_8ZoneListINS0_14CharacterRangeEEE+0x15): undefined reference to `uset_openEmpty_56'
../src/regexp/jsregexp.cc:(.text._ZN2v88internal25AddUnicodeCaseEquivalentsEPNS0_14RegExpCompilerEPNS0_8ZoneListINS0_14CharacterRangeEEE+0x3e): undefined reference to `uset_addRange_56'
../src/regexp/jsregexp.cc:(.text._ZN2v88internal25AddUnicodeCaseEquivalentsEPNS0_14RegExpCompilerEPNS0_8ZoneListINS0_14CharacterRangeEEE+0x5d): undefined reference to `uset_closeOver_56'
../src/regexp/jsregexp.cc:(.text._ZN2v88internal25AddUnicodeCaseEquivalentsEPNS0_14RegExpCompilerEPNS0_8ZoneListINS0_14CharacterRangeEEE+0x65): undefined reference to `uset_removeAllStrings_56'
../src/regexp/jsregexp.cc:(.text._ZN2v88internal25AddUnicodeCaseEquivalentsEPNS0_14RegExpCompilerEPNS0_8ZoneListINS0_14CharacterRangeEEE+0x6d): undefined reference to `uset_getItemCount_56'
../src/regexp/jsregexp.cc:(.text._ZN2v88internal25AddUnicodeCaseEquivalentsEPNS0_14RegExpCompilerEPNS0_8ZoneListINS0_14CharacterRangeEEE+0xca): undefined reference to `uset_getItem_56'
../src/regexp/jsregexp.cc:(.text._ZN2v88internal25AddUnicodeCaseEquivalentsEPNS0_14RegExpCompilerEPNS0_8ZoneListINS0_14CharacterRangeEEE+0x164): undefined reference to `uset_close_56'
./v8/out/native/obj.target/v8_base/src/regexp/regexp-macro-assembler.o: In function `v8::internal::RegExpMacroAssembler::CaseInsensitiveCompareUC16(unsigned char*, unsigned char*, unsigned long, v8::internal::Isolate*)':
../src/regexp/regexp-macro-assembler.cc:(.text._ZN2v88internal20RegExpMacroAssembler26CaseInsensitiveCompareUC16EPhS2_mPNS0_7IsolateE+0x25c): undefined reference to `u_foldCase_56'
../src/regexp/regexp-macro-assembler.cc:(.text._ZN2v88internal20RegExpMacroAssembler26CaseInsensitiveCompareUC16EPhS2_mPNS0_7IsolateE+0x268): undefined reference to `u_foldCase_56'
./v8/out/native/obj.target/v8_base/src/regexp/regexp-parser.o: In function `v8::internal::RegExpBuilder::AddCharacter(unsigned short)':
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder12AddCharacterEt+0x32): undefined reference to `uset_open_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder12AddCharacterEt+0x42): undefined reference to `uset_closeOver_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder12AddCharacterEt+0x4a): undefined reference to `uset_removeAllStrings_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder12AddCharacterEt+0x52): undefined reference to `uset_size_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder12AddCharacterEt+0x5d): undefined reference to `uset_close_56'
./v8/out/native/obj.target/v8_base/src/regexp/regexp-parser.o: In function `v8::internal::IsExactPropertyValueAlias(char const*, UProperty, int)':
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal25IsExactPropertyValueAliasEPKc9UPropertyi+0x17): undefined reference to `u_getPropertyValueName_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal25IsExactPropertyValueAliasEPKc9UPropertyi+0x40): undefined reference to `u_getPropertyValueName_56'
./v8/out/native/obj.target/v8_base/src/regexp/regexp-parser.o: In function `v8::internal::LookupPropertyClass(UProperty, char const*, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::Zone*)':
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0x1b): undefined reference to `u_getPropertyValueEnum_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0x2e): undefined reference to `u_getPropertyValueName_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0x5c): undefined reference to `u_getPropertyValueName_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0x75): undefined reference to `uset_openEmpty_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0x9a): undefined reference to `uset_applyIntPropertyValue_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0xb7): undefined reference to `uset_isEmpty_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0xca): undefined reference to `uset_removeAllStrings_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0xd2): undefined reference to `uset_getItemCount_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0x129): undefined reference to `uset_getItem_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal19LookupPropertyClassE9UPropertyPKcPNS0_8ZoneListINS0_14CharacterRangeEEEPNS0_4ZoneE+0x1c3): undefined reference to `uset_close_56'
./v8/out/native/obj.target/v8_base/src/regexp/regexp-parser.o: In function `v8::internal::RegExpBuilder::AddTrailSurrogate(unsigned short)':
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder17AddTrailSurrogateEt+0x5c): undefined reference to `uset_open_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder17AddTrailSurrogateEt+0x6c): undefined reference to `uset_closeOver_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder17AddTrailSurrogateEt+0x74): undefined reference to `uset_removeAllStrings_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder17AddTrailSurrogateEt+0x7c): undefined reference to `uset_size_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder17AddTrailSurrogateEt+0x87): undefined reference to `uset_close_56'
./v8/out/native/obj.target/v8_base/src/regexp/regexp-parser.o: In function `v8::internal::RegExpBuilder::NeedsDesugaringForIgnoreCase(int)':
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder28NeedsDesugaringForIgnoreCaseEi+0x13): undefined reference to `uset_open_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder28NeedsDesugaringForIgnoreCaseEi+0x23): undefined reference to `uset_closeOver_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder28NeedsDesugaringForIgnoreCaseEi+0x2b): undefined reference to `uset_removeAllStrings_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder28NeedsDesugaringForIgnoreCaseEi+0x33): undefined reference to `uset_size_56'
../src/regexp/regexp-parser.cc:(.text._ZN2v88internal13RegExpBuilder28NeedsDesugaringForIgnoreCaseEi+0x41): undefined reference to `uset_close_56'
./v8/out/native/obj.target/v8_base/src/v8.o: In function `v8::internal::V8::SetNativesBlob(v8::StartupData*)':
../src/v8.cc:(.text._ZN2v88internal2V814SetNativesBlobEPNS_11StartupDataE+0x1b): undefined reference to `v8::internal::SetNativesFromFile(v8::StartupData*)'
./v8/out/native/obj.target/v8_base/src/v8.o: In function `v8::internal::V8::SetSnapshotBlob(v8::StartupData*)':
../src/v8.cc:(.text._ZN2v88internal2V815SetSnapshotBlobEPNS_11StartupDataE+0x1b): undefined reference to `v8::internal::SetSnapshotFromFile(v8::StartupData*)'
./v8/out/native/obj.target/v8_base/src/char-predicates.o: In function `v8::internal::SupplementaryPlanes::IsIDStart(int)':
../src/char-predicates.cc:(.text._ZN2v88internal19SupplementaryPlanes9IsIDStartEi+0x2): undefined reference to `u_isIDStart_56'
./v8/out/native/obj.target/v8_base/src/char-predicates.o: In function `v8::internal::SupplementaryPlanes::IsIDPart(int)':
../src/char-predicates.cc:(.text._ZN2v88internal19SupplementaryPlanes8IsIDPartEi+0x2): undefined reference to `u_isIDPart_56'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_CanonicalizeLanguageTag(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal31Runtime_CanonicalizeLanguageTagEiPPNS0_6ObjectEPNS0_7IsolateE+0x16b): undefined reference to `uloc_forLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal31Runtime_CanonicalizeLanguageTagEiPPNS0_6ObjectEPNS0_7IsolateE+0x1a6): undefined reference to `uloc_toLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal31Runtime_CanonicalizeLanguageTagEiPPNS0_6ObjectEPNS0_7IsolateE+0x256): undefined reference to `uloc_forLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal31Runtime_CanonicalizeLanguageTagEiPPNS0_6ObjectEPNS0_7IsolateE+0x291): undefined reference to `uloc_toLanguageTag_56'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_AvailableLocalesOf(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x157): undefined reference to `icu_56::Collator::getAvailableLocales(int&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x1c2): undefined reference to `icu_56::Collator::getAvailableLocales(int&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x1fb): undefined reference to `icu_56::NumberFormat::getAvailableLocales(int&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x224): undefined reference to `icu_56::NumberFormat::getAvailableLocales(int&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x24d): undefined reference to `icu_56::DateFormat::getAvailableLocales(int&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x277): undefined reference to `icu_56::DateFormat::getAvailableLocales(int&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x2a2): undefined reference to `icu_56::BreakIterator::getAvailableLocales(int&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x359): undefined reference to `uloc_toLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x461): undefined reference to `icu_56::BreakIterator::getAvailableLocales(int&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_AvailableLocalesOfEiPPNS0_6ObjectEPNS0_7IsolateE+0x519): undefined reference to `uloc_toLanguageTag_56'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_GetDefaultICULocale(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_GetDefaultICULocaleEiPPNS0_6ObjectEPNS0_7IsolateE+0x111): undefined reference to `icu_56::Locale::Locale()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_GetDefaultICULocaleEiPPNS0_6ObjectEPNS0_7IsolateE+0x13a): undefined reference to `uloc_toLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_GetDefaultICULocaleEiPPNS0_6ObjectEPNS0_7IsolateE+0x183): undefined reference to `icu_56::Locale::Locale()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_GetDefaultICULocaleEiPPNS0_6ObjectEPNS0_7IsolateE+0x1ac): undefined reference to `uloc_toLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_GetDefaultICULocaleEiPPNS0_6ObjectEPNS0_7IsolateE+0x216): undefined reference to `icu_56::Locale::~Locale()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_GetDefaultICULocaleEiPPNS0_6ObjectEPNS0_7IsolateE+0x28e): undefined reference to `icu_56::Locale::~Locale()'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_GetLanguageTagVariants(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x38a): undefined reference to `uloc_forLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x3c4): undefined reference to `uloc_addLikelySubtags_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x3df): undefined reference to `uloc_getBaseName_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x3fa): undefined reference to `uloc_getBaseName_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x414): undefined reference to `uloc_toLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x42e): undefined reference to `uloc_toLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x7ee): undefined reference to `uloc_forLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x82a): undefined reference to `uloc_addLikelySubtags_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x845): undefined reference to `uloc_getBaseName_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x860): undefined reference to `uloc_getBaseName_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x87a): undefined reference to `uloc_toLanguageTag_56'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_GetLanguageTagVariantsEiPPNS0_6ObjectEPNS0_7IsolateE+0x894): undefined reference to `uloc_toLanguageTag_56'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_InternalDateFormat(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_InternalDateFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x17f): undefined reference to `vtable for icu_56::UnicodeString'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_InternalDateFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x288): undefined reference to `vtable for icu_56::UnicodeString'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_InternalDateFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x34e): undefined reference to `icu_56::DateFormat::format(double, icu_56::UnicodeString&) const'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_InternalDateFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x379): undefined reference to `icu_56::DateFormat::format(double, icu_56::UnicodeString&) const'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_InternalDateFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x3e3): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal26Runtime_InternalDateFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x439): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_InternalDateParse(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal25Runtime_InternalDateParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x16f): undefined reference to `icu_56::StringPiece::StringPiece(char const*)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal25Runtime_InternalDateParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x17f): undefined reference to `icu_56::UnicodeString::fromUTF8(icu_56::StringPiece const&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal25Runtime_InternalDateParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x287): undefined reference to `icu_56::StringPiece::StringPiece(char const*)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal25Runtime_InternalDateParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x297): undefined reference to `icu_56::UnicodeString::fromUTF8(icu_56::StringPiece const&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal25Runtime_InternalDateParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x48c): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal25Runtime_InternalDateParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x552): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_InternalNumberFormat(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal28Runtime_InternalNumberFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x15d): undefined reference to `vtable for icu_56::UnicodeString'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal28Runtime_InternalNumberFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x240): undefined reference to `vtable for icu_56::UnicodeString'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal28Runtime_InternalNumberFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x306): undefined reference to `icu_56::NumberFormat::format(double, icu_56::UnicodeString&) const'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal28Runtime_InternalNumberFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x331): undefined reference to `icu_56::NumberFormat::format(double, icu_56::UnicodeString&) const'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal28Runtime_InternalNumberFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x39b): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal28Runtime_InternalNumberFormatEiPPNS0_6ObjectEPNS0_7IsolateE+0x3f1): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_InternalNumberParse(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x180): undefined reference to `icu_56::StringPiece::StringPiece(char const*)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x190): undefined reference to `icu_56::UnicodeString::fromUTF8(icu_56::StringPiece const&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x1bf): undefined reference to `icu_56::Formattable::Formattable()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x1f4): undefined reference to `icu_56::Formattable::getType() const'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x2f3): undefined reference to `icu_56::StringPiece::StringPiece(char const*)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x303): undefined reference to `icu_56::UnicodeString::fromUTF8(icu_56::StringPiece const&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x332): undefined reference to `icu_56::Formattable::Formattable()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x367): undefined reference to `icu_56::Formattable::getType() const'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x46b): undefined reference to `icu_56::Formattable::~Formattable()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x478): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x4c1): undefined reference to `icu_56::Formattable::~Formattable()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal27Runtime_InternalNumberParseEiPPNS0_6ObjectEPNS0_7IsolateE+0x4ce): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_StringNormalize(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x3ed): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x3f4): undefined reference to `vtable for icu_56::UnicodeString'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x425): undefined reference to `icu_56::Normalizer::normalize(icu_56::UnicodeString const&, UNormalizationMode, int, icu_56::UnicodeString&, UErrorCode&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x4a3): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x4b0): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x504): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x50b): undefined reference to `vtable for icu_56::UnicodeString'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x53c): undefined reference to `icu_56::Normalizer::normalize(icu_56::UnicodeString const&, UNormalizationMode, int, icu_56::UnicodeString&, UErrorCode&)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x5ba): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal23Runtime_StringNormalizeEiPPNS0_6ObjectEPNS0_7IsolateE+0x5c7): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/runtime/runtime-i18n.o: In function `v8::internal::Runtime_BreakIteratorAdoptText(int, v8::internal::Object**, v8::internal::Isolate*)':
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_BreakIteratorAdoptTextEiPPNS0_6ObjectEPNS0_7IsolateE+0x1c1): undefined reference to `icu_56::UMemory::operator new(unsigned long)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_BreakIteratorAdoptTextEiPPNS0_6ObjectEPNS0_7IsolateE+0x1dc): undefined reference to `icu_56::UnicodeString::UnicodeString(unsigned short const*, int)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_BreakIteratorAdoptTextEiPPNS0_6ObjectEPNS0_7IsolateE+0x343): undefined reference to `icu_56::UMemory::operator new(unsigned long)'
../src/runtime/runtime-i18n.cc:(.text._ZN2v88internal30Runtime_BreakIteratorAdoptTextEiPPNS0_6ObjectEPNS0_7IsolateE+0x35e): undefined reference to `icu_56::UnicodeString::UnicodeString(unsigned short const*, int)'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::DateFormat::InitializeDateTimeFormat(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x28): undefined reference to `icu_56::Locale::Locale()'
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x65): undefined reference to `uloc_forLanguageTag_56'
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x9d): undefined reference to `icu_56::Locale::Locale(char const*, char const*, char const*, char const*)'
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xaa): undefined reference to `icu_56::Locale::operator=(icu_56::Locale const&)'
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xb2): undefined reference to `icu_56::Locale::~Locale()'
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xe9): undefined reference to `icu_56::Locale::getBaseName() const'
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x103): undefined reference to `icu_56::Locale::Locale(char const*, char const*, char const*, char const*)'
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x13a): undefined reference to `icu_56::Locale::~Locale()'
../src/i18n.cc:(.text._ZN2v88internal10DateFormat24InitializeDateTimeFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x14e): undefined reference to `icu_56::Locale::~Locale()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::CreateICUDateFormat(v8::internal::Isolate*, icu_56::Locale const&, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x1d): undefined reference to `vtable for icu_56::UnicodeString'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x5b): undefined reference to `icu_56::TimeZone::createTimeZone(icu_56::UnicodeString const&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x62): undefined reference to `icu_56::TimeZone::createDefault()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x7a): undefined reference to `icu_56::Calendar::createInstance(icu_56::TimeZone*, icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x8f): undefined reference to `icu_56::GregorianCalendar::getStaticClassID()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xb1): undefined reference to `icu_56::GregorianCalendar::setGregorianChange(double, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xec): undefined reference to `icu_56::DateTimePatternGenerator::createInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x11f): undefined reference to `icu_56::DateTimePatternGenerator::getBestPattern(icu_56::UnicodeString const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x12c): undefined reference to `icu_56::UnicodeString::moveFrom(icu_56::UnicodeString&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x134): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x14c): undefined reference to `icu_56::UMemory::operator new(unsigned long)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x16c): undefined reference to `icu_56::SimpleDateFormat::SimpleDateFormat(icu_56::UnicodeString const&, icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x18f): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x1c6): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_119CreateICUDateFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x1d3): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::SetResolvedDateSettings(v8::internal::Isolate*, icu_56::Locale const&, icu_56::SimpleDateFormat*, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x2a): undefined reference to `vtable for icu_56::UnicodeString'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x174): undefined reference to `icu_56::Calendar::getTimeZone() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x19a): undefined reference to `icu_56::UnicodeString::operator=(icu_56::UnicodeString const&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x1b8): undefined reference to `icu_56::TimeZone::getCanonicalID(icu_56::UnicodeString const&, icu_56::UnicodeString&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x1e6): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x23d): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x25b): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x362): undefined reference to `icu_56::NumberingSystem::createInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x3bf): undefined reference to `icu_56::NumberingSystem::getName() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x46f): undefined reference to `uloc_toLanguageTag_56'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x546): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x553): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_123SetResolvedDateSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_16SimpleDateFormatENS0_6HandleINS0_8JSObjectEEE+0x560): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::NumberFormat::InitializeNumberFormat(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x28): undefined reference to `icu_56::Locale::Locale()'
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x65): undefined reference to `uloc_forLanguageTag_56'
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x9d): undefined reference to `icu_56::Locale::Locale(char const*, char const*, char const*, char const*)'
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xaa): undefined reference to `icu_56::Locale::operator=(icu_56::Locale const&)'
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xb2): undefined reference to `icu_56::Locale::~Locale()'
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xe9): undefined reference to `icu_56::Locale::getBaseName() const'
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x103): undefined reference to `icu_56::Locale::Locale(char const*, char const*, char const*, char const*)'
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x13a): undefined reference to `icu_56::Locale::~Locale()'
../src/i18n.cc:(.text._ZN2v88internal12NumberFormat22InitializeNumberFormatEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x14e): undefined reference to `icu_56::Locale::~Locale()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::CreateICUNumberFormat(v8::internal::Isolate*, icu_56::Locale const&, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x24): undefined reference to `vtable for icu_56::UnicodeString'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x83): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xda): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xfb): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x15f): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x1c2): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x1ea): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x24d): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x26e): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x299): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x2f4): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x312): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x322): undefined reference to `icu_56::NumberFormat::createPercentInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x34b): undefined reference to `icu_56::NumberFormat::createInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x36a): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x37d): undefined reference to `icu_56::NumberFormat::createInstance(icu_56::Locale const&, UNumberFormatStyle, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x39f): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x3bb): undefined reference to `icu_56::UnicodeString::getTerminatedBuffer()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x3c8): undefined reference to `ucurr_getDefaultFractionDigits_56'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x411): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x521): undefined reference to `icu_56::DecimalFormat::setMinimumSignificantDigits(int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x54e): undefined reference to `icu_56::DecimalFormat::setMaximumSignificantDigits(int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x55b): undefined reference to `icu_56::DecimalFormat::setSignificantDigitsUsed(signed char)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x5aa): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_121CreateICUNumberFormatEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x5b4): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::SetResolvedNumberSettings(v8::internal::Isolate*, icu_56::Locale const&, icu_56::DecimalFormat*, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x20): undefined reference to `vtable for icu_56::UnicodeString'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0xd1): undefined reference to `icu_56::NumberFormat::getCurrency() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0xe1): undefined reference to `icu_56::UnicodeString::UnicodeString(unsigned short const*)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x1ab): undefined reference to `icu_56::NumberingSystem::createInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x20b): undefined reference to `icu_56::NumberingSystem::getName() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x2c1): undefined reference to `icu_56::NumberFormat::isGroupingUsed() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x31f): undefined reference to `icu_56::NumberFormat::getMinimumIntegerDigits() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x379): undefined reference to `icu_56::NumberFormat::getMinimumFractionDigits() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x3d3): undefined reference to `icu_56::NumberFormat::getMaximumFractionDigits() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x50e): undefined reference to `icu_56::DecimalFormat::getMinimumSignificantDigits() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x63f): undefined reference to `icu_56::DecimalFormat::getMaximumSignificantDigits() const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x689): undefined reference to `uloc_toLanguageTag_56'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x766): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_125SetResolvedNumberSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13DecimalFormatENS0_6HandleINS0_8JSObjectEEE+0x773): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::Collator::InitializeCollator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x28): undefined reference to `icu_56::Locale::Locale()'
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x65): undefined reference to `uloc_forLanguageTag_56'
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x9d): undefined reference to `icu_56::Locale::Locale(char const*, char const*, char const*, char const*)'
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xaa): undefined reference to `icu_56::Locale::operator=(icu_56::Locale const&)'
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xb2): undefined reference to `icu_56::Locale::~Locale()'
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xe9): undefined reference to `icu_56::Locale::getBaseName() const'
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x103): undefined reference to `icu_56::Locale::Locale(char const*, char const*, char const*, char const*)'
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x13a): undefined reference to `icu_56::Locale::~Locale()'
../src/i18n.cc:(.text._ZN2v88internal8Collator18InitializeCollatorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x14e): undefined reference to `icu_56::Locale::~Locale()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::CreateICUCollator(v8::internal::Isolate*, icu_56::Locale const&, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x29): undefined reference to `icu_56::Collator::createInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xa9): undefined reference to `vtable for icu_56::UnicodeString'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xf6): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x14d): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x16e): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x1b1): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x208): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x229): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x29c): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x2f3): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x314): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x341): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x398): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x3b9): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x416): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x420): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x451): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x4a8): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_117CreateICUCollatorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x4c9): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::SetResolvedCollatorSettings(v8::internal::Isolate*, icu_56::Locale const&, icu_56::Collator*, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_127SetResolvedCollatorSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_8CollatorENS0_6HandleINS0_8JSObjectEEE+0x6ef): undefined reference to `uloc_toLanguageTag_56'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::BreakIterator::InitializeBreakIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x28): undefined reference to `icu_56::Locale::Locale()'
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x65): undefined reference to `uloc_forLanguageTag_56'
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x9d): undefined reference to `icu_56::Locale::Locale(char const*, char const*, char const*, char const*)'
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xaa): undefined reference to `icu_56::Locale::operator=(icu_56::Locale const&)'
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xb2): undefined reference to `icu_56::Locale::~Locale()'
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xe6): undefined reference to `icu_56::Locale::getBaseName() const'
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x100): undefined reference to `icu_56::Locale::Locale(char const*, char const*, char const*, char const*)'
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x136): undefined reference to `icu_56::Locale::~Locale()'
../src/i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x14a): undefined reference to `icu_56::Locale::~Locale()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::CreateICUBreakIterator(v8::internal::Isolate*, icu_56::Locale const&, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x1d): undefined reference to `vtable for icu_56::UnicodeString'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x6c): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xc3): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xe1): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0xf2): undefined reference to `icu_56::BreakIterator::createCharacterInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x115): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x16c): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x18a): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x19b): undefined reference to `icu_56::BreakIterator::createSentenceInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x1bb): undefined reference to `icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x20c): undefined reference to `icu_56::UnicodeString::doEquals(icu_56::UnicodeString const&, int) const'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x224): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x235): undefined reference to `icu_56::BreakIterator::createLineInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x23c): undefined reference to `icu_56::BreakIterator::createWordInstance(icu_56::Locale const&, UErrorCode&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_122CreateICUBreakIteratorEPNS0_7IsolateERKN6icu_566LocaleENS0_6HandleINS0_8JSObjectEEE+0x274): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::SetResolvedBreakIteratorSettings(v8::internal::Isolate*, icu_56::Locale const&, icu_56::BreakIterator*, v8::internal::Handle<v8::internal::JSObject>)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_132SetResolvedBreakIteratorSettingsEPNS0_7IsolateERKN6icu_566LocaleEPNS4_13BreakIteratorENS0_6HandleINS0_8JSObjectEEE+0x34): undefined reference to `uloc_toLanguageTag_56'
./v8/out/native/obj.target/v8_base/src/i18n.o: In function `v8::internal::(anonymous namespace)::ExtractStringSetting(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, icu_56::UnicodeString*)':
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_120ExtractStringSettingEPNS0_7IsolateENS0_6HandleINS0_8JSObjectEEEPKcPN6icu_5613UnicodeStringE+0x147): undefined reference to `icu_56::StringPiece::StringPiece(char const*)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_120ExtractStringSettingEPNS0_7IsolateENS0_6HandleINS0_8JSObjectEEEPKcPN6icu_5613UnicodeStringE+0x157): undefined reference to `icu_56::UnicodeString::fromUTF8(icu_56::StringPiece const&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_120ExtractStringSettingEPNS0_7IsolateENS0_6HandleINS0_8JSObjectEEEPKcPN6icu_5613UnicodeStringE+0x162): undefined reference to `icu_56::UnicodeString::moveFrom(icu_56::UnicodeString&)'
../src/i18n.cc:(.text._ZN2v88internal12_GLOBAL__N_120ExtractStringSettingEPNS0_7IsolateENS0_6HandleINS0_8JSObjectEEEPKcPN6icu_5613UnicodeStringE+0x16a): undefined reference to `icu_56::UnicodeString::~UnicodeString()'
collect2: error: ld returned 1 exit status
Makefile:19: recipe for target 'v8worker.test' failed
make: *** [v8worker.test] Error 2
root@ubuntu:~/gostuff/src/github.com/ry/v8worker# 

Env:

gcc version 6.2.0 20160901 (Ubuntu 6.2.0-3ubuntu11~16.04)
ubuntu 4.4.0-22-generic
x86_64

Default make (make GYPFLAGS="-Dcomponent=static_library") built successfully and passed all tests. Is shared_library supported? If not, are there any near term plans for support? Thanks!

Questions: cloning, binary size, namespace

Hello,

I have some questions.

  1. Cloning the worker state (variables)

I dream of doing something like:

  • js: $sendSync(...)
  • go: recvSync(...) {...}
  • clone the state of the worker at the point of the $sendSync was called
  • spin up another worker with the same cloned state
  • work in the clone, mess up everything, get some results
  • return to the original worker
  • have it just like it was.

Could that be made?

  1. Binary size

When I build my tiny project the binary is over 100M. I read that with gcc V8 will be under 10M but I understand my binary has everything linked statically. I'm a total noob with go, haven't really done anything with c++ and don't know where to start. Any info is appreciated.

  1. Namespace

Those $rect, $print etc. are fairly nice but I'd prefer these names customisable, perhaps having them inside an object (foo.print, foo.send, ...). Looking at the code this seems achievable but do you think this is a totally retarded idea?

Anyways, thanks for creating this fine tool. I will have lots of fun with it.

Observing strange issue with SendSync

At some moment SendSync returns an empty string instead of the result.
In my case, it happens right after calling another package with C bindings (https://github.com/gographics/imagick)
My code:
data := JSWorker.SendSync(opts)
with some probability, data contains empty string instead of a result. looks like a goroutines multithread issue.

v8worker and http.Handler [signal arrived during cgo execution]

hey @ry I am trying to make v8worker work with http.Handler it works for first request then it breaks, any thoughts about this?, thanks in advance.

package main

import (
    "log"
    "net/http"

    "github.com/ry/v8worker"
)

var (
    JSCode string
)

func init() {
    JSCode = `
        $send("hello world");
    `
}

func rootHandler(w http.ResponseWriter, r *http.Request) {
    V8Worker := v8worker.New(func(msg v8worker.Message) {
        log.Printf("msg: %v", msg)
    })
    if err := V8Worker.Load("code.js", JSCode); err != nil {
        log.Printf("failed to load js file. error: %v", err)
    }
    w.Write([]byte("ok"))
}

func main() {
    http.HandleFunc("/", rootHandler)
    http.ListenAndServe(":8080", nil)
}
> go run main.go 
2015/04/06 22:49:26 msg: hello world

#
# Fatal error in ../src/v8.cc, line 107
# Check failed: !platform_.
#

==== C stack trace ===============================

 1: V8_Fatal
 2: v8::internal::V8::InitializePlatform(v8::Platform*)
 3: v8::V8::InitializePlatform(v8::Platform*)
 4: worker_new
 5: _cgo_1173bb0b0aa9_Cfunc_worker_new
 6: runtime.asmcgocall
SIGILL: illegal instruction
PC=0x4006f61
signal arrived during cgo execution

goroutine 21 [syscall]:
runtime.cgocall(0x4001610, 0x5cf7b50)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/cgocall.c:143 +0xe5 fp=0x5cf7b38 sp=0x5cf7af0
github.com/ry/v8worker._Cfunc_worker_new(0x4001a20, 0xc2080008c0, 0x4845650)
    github.com/ry/v8worker/_obj/_cgo_defun.c:88 +0x31 fp=0x5cf7b50 sp=0x5cf7b38
github.com/ry/v8worker.New(0x4c88510, 0x485eb31)
    /Users/chris/go_packages/src/github.com/ry/v8worker/worker.go:45 +0x5e fp=0x5cf7b80 sp=0x5cf7b50
main.rootHandler(0x5e118a0, 0xc208062460, 0xc208038ea0)
    /Users/chris/Desktop/ok/v8workerdemo/main.go:23 +0x27 fp=0x5cf7c00 sp=0x5cf7b80
net/http.HandlerFunc.ServeHTTP(0x4c88518, 0x5e118a0, 0xc208062460, 0xc208038ea0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1235 +0x40 fp=0x5cf7c20 sp=0x5cf7c00
net/http.(*ServeMux).ServeHTTP(0xc208022600, 0x5e118a0, 0xc208062460, 0xc208038ea0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1511 +0x1a3 fp=0x5cf7c98 sp=0x5cf7c20
net/http.serverHandler.ServeHTTP(0xc208004240, 0x5e118a0, 0xc208062460, 0xc208038ea0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1673 +0x19f fp=0x5cf7cf0 sp=0x5cf7c98
net/http.(*conn).serve(0xc208060280)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1174 +0xa7e fp=0x5cf7fa0 sp=0x5cf7cf0
runtime.goexit()
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/proc.c:1445 fp=0x5cf7fa8 sp=0x5cf7fa0
created by net/http.(*Server).Serve
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1721 +0x313

goroutine 16 [IO wait]:
net.runtime_pollWait(0x5e11660, 0x72, 0x0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/netpoll.goc:146 +0x66
net.(*pollDesc).Wait(0xc20803a0d0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/fd_poll_runtime.go:84 +0x46
net.(*pollDesc).WaitRead(0xc20803a0d0, 0x0, 0x0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/fd_poll_runtime.go:89 +0x42
net.(*netFD).accept(0xc20803a070, 0x4c88638, 0x0, 0x5e103f0, 0x23)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/fd_unix.go:419 +0x343
net.(*TCPListener).AcceptTCP(0xc208042018, 0x4865b33, 0x0, 0x0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/tcpsock_posix.go:234 +0x5d
net/http.tcpKeepAliveListener.Accept(0xc208042018, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1947 +0x4b
net/http.(*Server).Serve(0xc208004240, 0x5e11710, 0xc208042018, 0x0, 0x0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1698 +0x91
net/http.(*Server).ListenAndServe(0xc208004240, 0x0, 0x0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1688 +0x14d
net/http.ListenAndServe(0x4c0aaf0, 0x5, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/net/http/server.go:1778 +0x79
main.main()
    /Users/chris/Desktop/ok/v8workerdemo/main.go:32 +0x64

goroutine 19 [finalizer wait]:
runtime.park(0x4837650, 0x5026a80, 0x500e229)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/proc.c:1369 +0x89
runtime.parkunlock(0x5026a80, 0x500e229)
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/proc.c:1385 +0x3b
runfinq()
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/mgc0.c:2644 +0xcf
runtime.goexit()
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/proc.c:1445

goroutine 17 [syscall]:
runtime.goexit()
    /usr/local/Cellar/go/1.3.3/libexec/src/pkg/runtime/proc.c:1445

rax     0x0
rbx     0x5cf7b50
rcx     0x0
rdx     0x7fff7c8c11f8
rdi     0x110000001203
rsi     0x120000001200
rbp     0xb0186b40
rsp     0xb0186b40
r8      0xb0186b00
r9      0xb0187000
r10     0x0
r11     0x246
r12     0xc2080008c0
r13     0x4b67060
r14     0xc208022cb0
r15     0x4001a20
rip     0x4006f61
rflags  0x10202
cs      0x2b
fs      0x0
gs      0x0
exit status 

Go 1.6 is more strict: cgo argument has Go pointer to Go pointer

Today, at FOSDEM in Brussel, I learned about a new compiler change regarding the use of pointers in cgo. Wondering if this would affect v8worker, I tried building the project using 1.6rc1. I hope we can find a way to play by the new rules.

panic: runtime error: cgo argument has Go pointer to Go pointer [recovered]
    panic: runtime error: cgo argument has Go pointer to Go pointer

goroutine 5 [running]:
testing.tRunner.func1(0xc820090000)
    /usr/local/go/src/testing/testing.go:467 +0x192
github.com/ry/v8worker._cgoCheckPointer0(0xb80740, 0xc82000a140, 0x0, 0x0, 0x0, 0x0)
    github.com/ry/v8worker/_obj/_cgo_gotypes.go:58 +0x4d
github.com/ry/v8worker.New(0xc8200105b0, 0xc8200105c0, 0xc820012390)
    /go/src/github.com/ry/v8worker/worker.go:70 +0xe2
bitbucket.org/emicklei/v8dispatcher.NewMessageDispatcher(0x0)
    /go/src/bitbucket.org/emicklei/v8dispatcher/dispatcher.go:34 +0x18c

Build failed -- unsupported reloc 42 against global symbol __gmon_start__

________ running '/usr/bin/python2 v8/third_party/binutils/download.py' in '/home/me/.go/src/github.com/ry/v8worker'
  File "/home/me/.go/src/github.com/ry/v8worker/v8/build/detect_v8_host_arch.py", line 37
    print DoMain([])
               ^
SyntaxError: invalid syntax
Traceback (most recent call last):
  File "v8/third_party/binutils/download.py", line 117, in <module>
    sys.exit(main(sys.argv))
  File "v8/third_party/binutils/download.py", line 104, in main
    arch = GetArch()
  File "v8/third_party/binutils/download.py", line 51, in GetArch
    return subprocess.check_output(['python', DETECT_HOST_ARCH]).strip()
  File "/usr/lib/python2.7/subprocess.py", line 573, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['python', '/home/me/.go/src/github.com/ry/v8worker/v8/build/detect_v8_host_arch.py']' returned non-zero exit status 1
Error: Command '/usr/bin/python2 v8/third_party/binutils/download.py' returned non-zero exit status 1 in /home/me/.go/src/github.com/ry/v8worker
Makefile:15: recipe for target 'v8' failed
make: *** [v8] Error 2

Running Arch Linux.

Slow compile time

One of the amazing things about Go is how fast it compiles. Since installing the great v8worker lib, my build time has slowed from <1 second to around 20 seconds. This really slows down the TDD workflow that I normally use, because I'm waiting 20 seconds for a unit test to run.

Any suggestions on how to avoid recompiling the v8worker every time I make the project?

Support building the entire project using only the `go build` command

I'm not an expert at V8 or Go, so forgive me if this is naive, but it seems like one of the pain points of v8worker is that it requires that users run make and therefore doesn't build with a simple go build (as seems to be standard in Go projects these days). This means that downstream projects can't use go build for their build system, as well as their downstream projects, and so on.

If you're open to it, I'd like to explore alternatives to the current solution. If any of them sound acceptable, I can do the legwork myself to implement it. Below are a few as I see them, please correct me if I'm wrong on something -- like I said, new to go, new to V8.

  • Allow users to build against system installations of V8, instead of building it specifically for the solution. This might require code changes to the C code that uses V8 to make it more compatible with later versions, or we might have to state our version dependencies right up front. We'll also have to figure out how we want to handle the pkg-config stuff we're generating -- I don't know the answer to that off the top of my head, aside from using more static flags in our cgo calls.
  • Add v8worker to the usual package manager suspects -- brew, apt-get, etc. Labor-intensive, and annoying to maintain, but possibly worth it. Nonstandard for go, but at least it is compatible with go build and involves only a few more commands, to get the packages themselves.
  • Add some support for v8worker "distributions", which possibly would avoid the problems of configuring and generating the configuration stuff, like pkg-config, but not the problem of building V8 itself. This could be used in conjunction with the first option.

Open to other suggestions as well. Let me know what you think.

Cannot create multiple workers

worker1 := v8worker.New(func(msg Message) {})
worker2 := v8worker.New(func(msg Message) {}) // <-- segfault

Cause is V8::InitializePlatform() being called in v8platform.New()... it should only ever be called once.

Probably the best thing to do is wrap it in sync.Once

A way to destroy a worker

I need to use multiple worker instances and when one worker finishes I need a way to destroy an instance and free the memory
Afaik in current implementation memory will never be freed

What would you suggest?

Workers not GCed when in tight loop

I'm running into a memory problem with v8worker when running this test program on go version go1.6 linux/amd64. It's replicating an issue that I see when many workers are created and 'destroyed' so that each script runs in a clean environment.

package main

import (
    "fmt"

    jsvm "github.com/ry/v8worker"
)

func main() {
    var i int
    for {
        i++
        fmt.Printf("Running, %d time\n", i)
        run()
    }
}

func run() {
    vm := jsvm.New(nil, nil)

    err := vm.Load("mytest.js", `
            // Do something
            var something = "Simple JavaScript";
    `)

    // Check for exceptions
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
}

Error:

.......
Running, 2345 time
Running, 2346 time
Running, 2347 time

#
# Fatal error in heap setup
# Allocation failed - process out of memory
#

SIGILL: illegal instruction
PC=0xbfbbff m=0
signal arrived during cgo execution

goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x6e0ac0, 0xc82006fd80, 0x0)
        /opt/go/src/runtime/cgocall.go:123 +0x11b fp=0xc82006fd40 sp=0xc82006fd10
github.com/ry/v8worker._Cfunc_worker_new(0x92a, 0x0)
        github.com/ry/v8worker/_obj/_cgo_gotypes.go:139 +0x42 fp=0xc82006fd80 sp=0xc82006fd40
github.com/ry/v8worker.New(0x0, 0x0, 0x20)
        /opt/gopkg/src/github.com/ry/v8worker/worker.go:94 +0x12a fp=0xc82006fde0 sp=0xc82006fd80
main.run()
        /opt/tmp/jsv8worker.go:27 +0x35 fp=0xc82006fe88 sp=0xc82006fde0
main.main()
        /opt/tmp/jsv8worker.go:22 +0x1d7 fp=0xc82006ff50 sp=0xc82006fe88
runtime.main()
        /opt/go/src/runtime/proc.go:188 +0x2b0 fp=0xc82006ffa0 sp=0xc82006ff50
runtime.goexit()
        /opt/go/src/runtime/asm_amd64.s:1998 +0x1 fp=0xc82006ffa8 sp=0xc82006ffa0

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
        /opt/go/src/runtime/asm_amd64.s:1998 +0x1

goroutine 5 [syscall]:
os/signal.signal_recv(0x0)
        /opt/go/src/runtime/sigqueue.go:116 +0x132
os/signal.loop()
        /opt/go/src/os/signal/signal_unix.go:22 +0x18
created by os/signal.init.1
        /opt/go/src/os/signal/signal_unix.go:28 +0x37

goroutine 6 [chan receive]:
github.com/davecheney/profile.Start.func4(0xc820010210)
        /opt/gopkg/src/github.com/davecheney/profile/profile.go:159 +0xef
created by github.com/davecheney/profile.Start
        /opt/gopkg/src/github.com/davecheney/profile/profile.go:165 +0xf45

goroutine 18 [select, locked to thread]:
runtime.gopark(0xc96490, 0xc820046728, 0xc603e0, 0x6, 0x18, 0x2)
        /opt/go/src/runtime/proc.go:262 +0x163
runtime.selectgoImpl(0xc820046728, 0x0, 0x18)
        /opt/go/src/runtime/select.go:392 +0xa67
runtime.selectgo(0xc820046728)
        /opt/go/src/runtime/select.go:215 +0x12
runtime.ensureSigM.func1()
        /opt/go/src/runtime/signal1_unix.go:279 +0x358
runtime.goexit()
        /opt/go/src/runtime/asm_amd64.s:1998 +0x1

rax    0x4e
rbx    0x32ae8020
rcx    0x7f629901b88d
rdx    0x0
rdi    0x7ffea7692200
rsi    0x0
rbp    0x0
rsp    0x7ffea7694a00
r8     0x7f629a365780
r9     0x20737365636f7270
r10    0x7f62992ecbe0
r11    0x0
r12    0x7ffea76951a0
r13    0x32ae8040
r14    0xcaf1b0
r15    0x7ffea76953b0
rip    0xbfbbff
rflags 0x10202
cs     0x33
fs     0x0
gs     0x0
exit status 2

'memset' was not declared

On Ubuntu 14.04 AMD64 platform, make to build v8 without problem, hit issue when install

$ go install
# github.com/ry/v8worker
./binding.cc: In member function 'virtual void* ArrayBufferAllocator::Allocate(size_t)':
./binding.cc:30:56: error: 'memset' was not declared in this scope
     return data == NULL ? data : memset(data, 0, length);
                                                        ^
    $git checkout HEAD^^
    $ go install
# github.com/ry/v8worker
./v8/out/native/obj.target/v8_libbase/src/base/logging.o: In function `v8::base::DumpBacktrace()':
../src/base/logging.cc:(.text._ZN2v84base13DumpBacktraceEv+0x67): undefined reference to `dladdr'
collect2: error: ld returned 1 exit status

Apply patch from mmurray@177013e fixed the dladdr issue.

Migrating from Otto to v8worker

In Otto we exposed a GO object to JavaScript so that the user can access the content and the object itself.

For example the content is stored in the variable 'data' and contains a 'time.Time' field named LastUpdate (actually several, based on many different data formats). To perform calculations on that object in JavaScript we need convert the time object to a unix timestamp and in Otto this is as simple as:

var lastUpdate = data.LastUpdate.Unix();

But in v8worker this will result in an error message as the object is not linked, which makes sense but implementation a lot harder, specially because a date object in GO does not become a JavaScript date but a textual representation (which we could parse).

Any suggestions how we could make this migration easier (without a need to rewrite all user scripts) or pass an object from GO to v8?

GOMAXPROCS and v8worker

Hi

I've quickly tried simple benchmark for parallel execution, and I found
increasing GOMAXPROCS don't improve performance for v8 as expected.
Is this expected as v8 is running in single thread? or this can be improved?

nueno-mbp15:go_javascript[master *]$ GOMAXPROCS=1 go run benchmark.go
otto parallel test
otto parallel thread : 32.483853059s
v8 parallel test
v8 parallel thread : 64.419895ms
golang parallel test
golang parallel thread : 3.3833ms

nueno-mbp15:go_javascript[master *]$ GOMAXPROCS=8 go run benchmark.go
otto parallel test
otto parallel thread : 7.675539588s
v8 parallel test
v8 parallel thread : 74.098425ms
golang parallel test
golang parallel thread : 962.457µs

Here is my simple benchmark code
https://github.com/nati/fun/blob/master/go_javascript/benchmark.go

Add support for node module loading

This is a feature request.

A major use case for v8worker might be to load a node.js module (which may itself require more node modules as dependencies) to perform work, and then return the result back to golang. It would make v8worker much more useful if it has node module loading built in.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.