Hi Joe,

This looks like an amazing contribution. Running Factor in 64-bit mode
on OS X is something I've been looking forward to for quite some time.

I tested and your changes and reproduced the bug. It is definitely a
problem in the compiler. Seems that passing structs > 16 bytes by
value doesn't work properly on x86-64. It should be an easy fix; I'll
keep you posted.

As an aside, is your 64-bit OS X machine always on and connected to
the Internet? If so, would you be interested in running the 'builder'
program once we work the kinks out? It would build and upload binary
packages to factorcode.org.

Slava

On Tue, Sep 9, 2008 at 1:08 AM, Joe Groff <[EMAIL PROTECTED]> wrote:
> I breezed through the cocoa.* libraries and updated them to use the
> new objc runtime functions from Leopard, which should in theory allow
> us to build x86-64 binaries for OS X with UI support. I tested my
> changes on x86-32 and they work fine. However, when I run the x86-64
> bootstrap, I get the error at the end of this message. My code changes
> are in git://repo.or.cz/factor/jcg.git under the "objective-c-2"
> branch. Is there a problem in my code or in the compiler?
>
> -Joe
>
> Generic word reg-class-variable does not define a method for the word
> class.
> Dispatching on object: stack-params
> ( scratchpad ) :s
> "resource:basis/bootstrap/stage2.factor"
> "bootstrap.help"
> "accessors"
> "alias"
> "alien"
> "alien.accessors"
> "alien.arrays"
> "alien.c-types"
> "alien.remote-control"
> "alien.strings"
> "alien.structs"
> "alien.structs.fields"
> "alien.syntax"
> "alien.syntax.private"
> "arrays"
> "assocs"
> "bootstrap.compiler"
> "bootstrap.help"
> "bootstrap.layouts"
> "bootstrap.math"
> "bootstrap.stage2"
> "bootstrap.syntax"
> "bootstrap.threads"
> "boxes"
> "byte-arrays"
> "byte-vectors"
> "checksums"
> "checksums.crc32"
> "classes"
> "classes.algebra"
> "classes.builtin"
> "classes.intersection"
> "classes.mixin"
> "classes.parser"
> "classes.predicate"
> "classes.private"
> "classes.singleton"
> "classes.tuple"
> "classes.tuple.parser"
> "classes.tuple.private"
> "classes.union"
> "colors"
> "colors.hsv"
> "colors.hsv.private"
> "columns"
> "combinators"
> "combinators.short-circuit"
> "command-line"
> "compiler"
> "compiler.constants"
> "compiler.errors"
> "compiler.errors.private"
> "compiler.generator"
> "compiler.generator.fixup"
> "compiler.generator.iterator"
> "compiler.generator.registers"
> "compiler.generator.registers.private"
> "compiler.intrinsics"
> "compiler.tree"
> "compiler.tree.builder"
> "compiler.tree.checker"
> "compiler.tree.cleanup"
> "compiler.tree.combinators"
> "compiler.tree.comparisons"
> "compiler.tree.dead-code"
> "compiler.tree.dead-code.branches"
> "compiler.tree.dead-code.liveness"
> "compiler.tree.dead-code.recursive"
> "compiler.tree.dead-code.simple"
> "compiler.tree.def-use"
> "compiler.tree.escape-analysis"
> "compiler.tree.escape-analysis.allocations"
> "compiler.tree.escape-analysis.branches"
> "compiler.tree.escape-analysis.nodes"
> "compiler.tree.escape-analysis.recursive"
> "compiler.tree.escape-analysis.simple"
> "compiler.tree.finalization"
> "compiler.tree.loop.detection"
> "compiler.tree.normalization"
> "compiler.tree.optimizer"
> "compiler.tree.propagation"
> "compiler.tree.propagation.branches"
> "compiler.tree.propagation.constraints"
> "compiler.tree.propagation.copy"
> "compiler.tree.propagation.info"
> "compiler.tree.propagation.inlining"
> "compiler.tree.propagation.known-words"
> "compiler.tree.propagation.nodes"
> "compiler.tree.propagation.recursive"
> "compiler.tree.propagation.simple"
> "compiler.tree.propagation.slots"
> "compiler.tree.strength-reduction"
> "compiler.tree.tuple-unboxing"
> "compiler.units"
> "continuations"
> "continuations.private"
> "cpu.architecture"
> "cpu.x86.64"
> "cpu.x86.allot"
> "cpu.x86.architecture"
> "cpu.x86.assembler"
> "cpu.x86.assembler.private"
> "cpu.x86.assembler.syntax"
> "cpu.x86.intrinsics"
> "cpu.x86.sse2"
> "debugger"
> "debugger.threads"
> "definitions"
> "deques"
> "destructors"
> "destructors.private"
> "disjoint-sets"
> "disjoint-sets.private"
> "dlists"
> "dlists.private"
> "effects"
> "effects.parser"
> "eval"
> "fry"
> "generalizations"
> "generic"
> "generic.math"
> "generic.parser"
> "generic.standard"
> "generic.standard.engines"
> "generic.standard.engines.predicate"
> "generic.standard.engines.tag"
> "generic.standard.engines.tuple"
> "graphs"
> "grouping"
> "growable"
> "hashtables"
> "hashtables.private"
> "heaps"
> "heaps.private"
> "help"
> "help.crossref"
> "help.definitions"
> "help.markup"
> "help.stylesheet"
> "help.syntax"
> "help.topics"
> "hints"
> "init"
> "io"
> "io.backend"
> "io.binary"
> "io.encodings"
> "io.encodings.binary"
> "io.encodings.private"
> "io.encodings.string"
> "io.encodings.utf16"
> "io.encodings.utf16.private"
> "io.encodings.utf8"
> "io.encodings.utf8.private"
> "io.files"
> "io.files.private"
> "io.streams.byte-array"
> "io.streams.c"
> "io.streams.memory"
> "io.streams.nested"
> "io.streams.plain"
> "io.streams.string"
> "io.styles"
> "io.thread"
> "kernel"
> "kernel.private"
> "layouts"
> "lexer"
> "libc"
> "libc.private"
> "listener"
> "locals"
> "locals.backend"
> "locals.private"
> "macros"
> "macros.expander"
> "macros.expander.private"
> "math"
> "math.bitwise"
> "math.bitwise.private"
> "math.complex"
> "math.complex.private"
> "math.constants"
> "math.floats"
> "math.floats.private"
> "math.functions"
> "math.functions.private"
> "math.integers"
> "math.integers.private"
> "math.intervals"
> "math.libm"
> "math.order"
> "math.parser"
> "math.parser.private"
> "math.partial-dispatch"
> "math.private"
> "math.ranges"
> "math.ratios"
> "math.ratios.private"
> "memoize"
> "memory"
> "namespaces"
> "namespaces.private"
> "none"
> "parser"
> "prettyprint"
> "prettyprint.backend"
> "prettyprint.config"
> "prettyprint.private"
> "prettyprint.sections"
> "qualified"
> "quotations"
> "quotations.private"
> "sbufs"
> "sbufs.private"
> "scratchpad"
> "search-deques"
> "sequences"
> "sequences.deep"
> "sequences.private"
> "sets"
> "slots"
> "slots.private"
> "sorting"
> "sorting.private"
> "source-files"
> "splitting"
> "stack-checker"
> "stack-checker.alien"
> "stack-checker.backend"
> "stack-checker.branches"
> "stack-checker.errors"
> "stack-checker.inlining"
> "stack-checker.known-words"
> "stack-checker.state"
> "stack-checker.transforms"
> "stack-checker.visitor"
> "stack-checker.visitor.dummy"
> "strings"
> "strings.parser"
> "strings.private"
> "summary"
> "syntax"
> "system"
> "system.private"
> "threads"
> "threads.private"
> "tools.profiler.private"
> "vectors"
> "vectors.private"
> "vocabs"
> "vocabs.loader"
> "words"
> "bootstrap.tools"
> "tools.deploy"
> "tools.deploy.macosx"
> { "! Copyright (C) 2007, 2008 Slava Pestov."...
> V{ }
> "cocoa"
> (( object object object -- object ))
> T{ alien-invoke-params f "id" ~array~ "cdecl" ~array~ ~array~ f...
> 16
> stack-params
> T{ no-method f stack-params reg-class-variable }
> ( scratchpad ) :r
> { "resource:basis/bootstrap/stage2.factor" }
> 1220939898094
> [ compiler-report ]
> 11
> [ ~array~ nth-unsafe "bootstrap." prepend require ]
> 5
> T{ vocab f "bootstrap.tools" ~hashtable~ f f t f }
> 15
> [ ~array~ nth-unsafe require ]
> 4
> T{ vocab f "tools.deploy" ~hashtable~ f f t f }
> T{ vocab f "tools.deploy.macosx" ~hashtable~ f f f f }
> [ finish-compilation-unit updated-definitions...
> f
> 19
> [ ~array~ nth-unsafe use+ ]
> 12
> T{ vocab f "cocoa" ~hashtable~ f f t f }
> [ ]
> [ ~search-deque~ pop-back (compile) yield ]
> [ ~search-deque~ deque-empty? not ]
> 4
> [ ~array~ nth-unsafe \...
> 2
> { }
> V{ 72 187 0 0 0 0 0 0 0 0 ~rel-fixup~ %prologue-later ~label~...
> [ current-node generate-node ]
> 5
> { 0 8 16 24 32 }
> { ~c-type~ ~c-type~ ~c-type~ ~c-type~ ~c-type~ }
> 2
> stack-params
> ( scratchpad ) :c
> [ [ dup parse-file call ] assert-depth -> drop ]
> [
>     >r datastack r>
>     dip ->
>     >r datastack r>
>     2dup [ length ] compare { ~array~ ~array~ ~array~ } case
> ]
> [ >r call -> r> ]
> [ swap >c call -> c> drop ]
> [
>     millis
>     >r default-image-name "output-image" set-global
>     "math compiler threads help io tools ui ui.tools random unicode
> handbook"
>     "include" set-global "" "exclude" set-global
>     parse-command-line "-no-crossref" cli-args member?
>     [ do-crossref ] unless os wince?
>     [ "windows.ce" require ] when os winnt?
>     [ "windows.nt" require ] when "deploy-vocab" get
>     [ "stage2: deployment mode" print ]
>     [ "listener" require "none" require ] if
>     [ load-components run-bootstrap-init ] with-compiler-errors
>     -> :errors f error set-global
>     f error-continuation set-global "deploy-vocab" get
>     [ "tools.deploy.shaker" run ] [
>         ~quotation~ set-boot-quot millis r>
>         - dup bootstrap-time set-global print-report
>         "output-image" get save-image-and-exit
>     ] if
> ]
> [ H{ } clone >n call -> ndrop ]
> [ over >r compose [ dip rethrow ] curry recover -> r> call ]
> [ swap >c call -> c> drop ]
> [ load-components -> run-bootstrap-init ]
> [ iterate-step -> iterate-next (each-integer) ]
> [ swap >r 2dup 2slip -> r> swap ]
> [ >r >r call -> r> r> ]
> [ load-vocab -> drop ]
> [ dup load-vocab-hook get call -> vocab ]
> [ swap >c call -> c> drop ]
> [
>     dup vocab-source-loaded? [ load-source ] unless
>     -> dup vocab-docs-loaded? [ load-docs ] unless drop
> ]
> [ >r call -> r> ]
> [ iterate-step -> iterate-next (each-integer) ]
> [ swap >r 2dup 2slip -> r> swap ]
> [ >r >r call -> r> r> ]
> [ load-vocab -> drop ]
> [ dup load-vocab-hook get call -> vocab ]
> [ swap >c call -> c> drop ]
> [
>     dup vocab-source-loaded? [ load-source ] unless
>     -> dup vocab-docs-loaded? [ load-docs ] unless drop
> ]
> [ >r call -> r> ]
> [ load-vocab -> drop ]
> [ dup load-vocab-hook get call -> vocab ]
> [ swap >c call -> c> drop ]
> [
>     dup vocab-source-loaded? [ load-source ] unless
>     -> dup vocab-docs-loaded? [ load-docs ] unless drop
> ]
> [
>     f over set-vocab-source-loaded?
>     [ vocab-source-path ~quotation~ ~quotation~ if* ] keep
>     -> t over set-vocab-source-loaded?
>     [ ~quotation~ ~quotation~ if-bootstrapping ] dip
> ]
> [ >r call -> r> ]
> [ swap >c call -> c> drop ]
> [ H{ } clone >n call -> ndrop ]
> [ over >r compose [ dip rethrow ] curry recover -> r> call ]
> [ swap >c call -> c> drop ]
> [ H{ } clone >n call -> ndrop ]
> [ swap >c call -> c> drop ]
> [ lines dup parse-fresh -> tuck finish-parsing forget-smudged ]
> [ H{ } clone >n call -> ndrop ]
> [ swap >c call -> c> drop ]
> [ f parse-until -> >quotation ]
> [ dup >r parse-step -> [ r> (parse-until) ] [ r> drop ] if ]
> [ nip execute-parsing -> t ]
> [ iterate-step -> iterate-next (each-integer) ]
> [ swap >r 2dup 2slip -> r> swap ]
> [ >r >r call -> r> r> ]
> [ load-vocab -> (use+) ]
> [ dup load-vocab-hook get call -> vocab ]
> [ swap >c call -> c> drop ]
> [
>     dup vocab-source-loaded? [ load-source ] unless
>     -> dup vocab-docs-loaded? [ load-docs ] unless drop
> ]
> [ >r call -> r> ]
> [ H{ } clone >n call -> ndrop ]
> [
>     finish-compilation-unit -> updated-definitions
>     notify-definition-observers
> ]
> [
>     call-recompile-hook -> call-update-tuples-hook
>     unxref-forgotten-definitions dup
>     [ drop crossref? ] assoc-contains? modify-code-heap
> ]
> [ H{ } clone >n call -> ndrop ]
> [
>     <hashed-dlist> compile-queue set H{ } clone compiled set
>     [ queue-compile ] each compile-queue get compile-loop
>     -> compiled get >alist
> ]
> [ >r tuck 2slip -> r> while ]
> [ >r >r call -> r> r> ]
> [ (compile) -> yield ]
> [ H{ } clone >n call -> ndrop ]
> [ iterate-step -> iterate-next (each-integer) ]
> [ swap >r 2dup 2slip -> r> swap ]
> [ >r >r call -> r> r> ]
> [ H{ } clone >n call -> ndrop ]
> [ >r begin-compiling r> { } make -> fixup save-machine-code ]
> [ H{ } clone >n call -> ndrop ]
> [ [ 1024 swap new-resizable ~quotation~ keep ] keep -> like ]
> [ >r call -> r> ]
> [ >r call -> r> ]
> [ >r associate >n r> call -> ndrop ]
> [
>     [ current-node generate-node ] iterate-nodes
>     -> end-basic-block
> ]
> [ [ swap >node call node> drop ] keep -> iterate-nodes ]
> [ >r call -> r> ]
> [ swap >node call -> node> drop ]
> [ swap set-stack-frame call -> f set-stack-frame ]
> [
>     end-basic-block %prepare-alien-invoke dup objects>registers
>     -> %prepare-var-args dup alien-invoke-dlsym %alien-invoke
>     dup %cleanup box-return* iterate-next
> ]
> objects>registers
> alloc-parameter
> reg-class-full?
> reg-class-variable
> no-method
> throw
> [
>     63 getenv error-thread set-global
>     continuation -> error-continuation set-global rethrow
> ]
>
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Factor-talk mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/factor-talk
>

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to