| @@ -20,3 +20,7 @@ todo.html | |||||
| /bin/slime | /bin/slime | ||||
| *.report | *.report | ||||
| *.svg | *.svg | ||||
| /tests/libslime/main | |||||
| /tests/fullslime/main | |||||
| *.o | |||||
| /bin/slime_d | |||||
| @@ -1,15 +0,0 @@ | |||||
| stages: | |||||
| - build | |||||
| - test | |||||
| build_my_stuff: | |||||
| stage: build | |||||
| variables: | |||||
| GIT_SUBMODULE_STRATEGY: recursive | |||||
| script: | |||||
| - echo hello | |||||
| - ./build.sh | |||||
| - echo finish | |||||
| image: prodromou87/llvm:70-1.69.0 | |||||
| tags: | |||||
| - linux | |||||
| @@ -1,3 +1,3 @@ | |||||
| [submodule "src/ftb"] | [submodule "src/ftb"] | ||||
| path = src/ftb | |||||
| path = 3rd/ftb | |||||
| url = https://github.com/FelixBrendel/ftb | url = https://github.com/FelixBrendel/ftb | ||||
| @@ -0,0 +1 @@ | |||||
| Subproject commit 7d8eabf47938ff4a056f94e8cbeb4a49ab9ea2d1 | |||||
| @@ -1,5 +1,8 @@ | |||||
| (import "alist.slime") | (import "alist.slime") | ||||
| (import "automata.slime") | |||||
| (import "interpolation.slime") | |||||
| (import "oo.slime") | (import "oo.slime") | ||||
| (import "math.slime") | (import "math.slime") | ||||
| (import "sets.slime") | |||||
| (generate-docs "../manual/built-in-docs.org") | (generate-docs "../manual/built-in-docs.org") | ||||
| @@ -43,7 +43,3 @@ | |||||
| (point-lerp (lerper1 t) | (point-lerp (lerper1 t) | ||||
| (lerper2 t) t)))) | (lerper2 t) t)))) | ||||
| ) | ) | ||||
| (define sl1 (interpolation::stepped-lerper 0 1 5)) | |||||
| (define sl2 (interpolation::stepped-lerper 10 -10 20)) | |||||
| @@ -5,11 +5,11 @@ | |||||
| `(set-type! | `(set-type! | ||||
| (define | (define | ||||
| ;; The function definition | ;; The function definition | ||||
| (,(string->symbol (concat-strings "make-" (symbol->string name))) @members) | |||||
| (,(string->symbol (concat-strings "make-" (symbol->string name))) ,@members) | |||||
| ;; The docstring | ;; The docstring | ||||
| ,(concat-strings "This is the handle to an object of the class " (symbol->string name)) | ,(concat-strings "This is the handle to an object of the class " (symbol->string name)) | ||||
| ;; the body | ;; the body | ||||
| @body | |||||
| ,@body | |||||
| (let ,(zip members members) | (let ,(zip members members) | ||||
| (set-type! | (set-type! | ||||
| (lambda args | (lambda args | ||||
| @@ -22,4 +22,4 @@ | |||||
| :constructor))) | :constructor))) | ||||
| (define-syntax (-> obj meth . args) | (define-syntax (-> obj meth . args) | ||||
| `(,obj ',meth @args)) | |||||
| `(,obj ',meth ,@args)) | |||||
| @@ -7,6 +7,18 @@ | |||||
| (define-syntax (pe expr) | (define-syntax (pe expr) | ||||
| `(print ',expr "evaluates to" ,expr)) | `(print ',expr "evaluates to" ,expr)) | ||||
| (define the-empty-stream ()) | |||||
| (define (stream-null? s) (if s t ())) | |||||
| (define-syntax (delay expr) | |||||
| `(,lambda () ,expr)) | |||||
| (define (force promise) | |||||
| (promise)) | |||||
| (define-syntax (mac a) (list + 1 1)) | |||||
| (define-syntax (when condition . body) | (define-syntax (when condition . body) | ||||
| :doc "Special form for when multiple actions should be done if a | :doc "Special form for when multiple actions should be done if a | ||||
| condition is true. | condition is true. | ||||
| @@ -23,22 +35,22 @@ condition is true. | |||||
| {{{example_end}}} | {{{example_end}}} | ||||
| " | " | ||||
| (if (= (rest body) ()) | (if (= (rest body) ()) | ||||
| `(if ,condition @body nil) | |||||
| `(if ,condition (begin @body) nil))) | |||||
| `(if ,condition ,@body nil) | |||||
| `(if ,condition (begin ,@body) nil))) | |||||
| (define-syntax (unless condition . body) | (define-syntax (unless condition . body) | ||||
| :doc "Special form for when multiple actions should be done if a | :doc "Special form for when multiple actions should be done if a | ||||
| condition is false." | condition is false." | ||||
| (if (= (rest body) ()) | (if (= (rest body) ()) | ||||
| `(if ,condition nil @body) | |||||
| `(if ,condition nil (begin @body)))) | |||||
| `(if ,condition nil ,@body) | |||||
| `(if ,condition nil (begin ,@body)))) | |||||
| (define-syntax (n-times times action) | (define-syntax (n-times times action) | ||||
| :doc "Executes action times times." | :doc "Executes action times times." | ||||
| (define (repeat times elem) | (define (repeat times elem) | ||||
| (unless (> 1 times) | (unless (> 1 times) | ||||
| (pair elem (repeat (- times 1) elem)))) | (pair elem (repeat (- times 1) elem)))) | ||||
| `(begin @(repeat times action))) | |||||
| `(begin ,@(repeat times action))) | |||||
| (define-syntax (let bindings . body) | (define-syntax (let bindings . body) | ||||
| (define (unzip lists) | (define (unzip lists) | ||||
| @@ -54,7 +66,7 @@ condition is false." | |||||
| (define unzipped (unzip bindings)) | (define unzipped (unzip bindings)) | ||||
| `((,lambda ,(first unzipped) @body) @(first (rest unzipped)))) | |||||
| `((,lambda ,(first unzipped) ,@body) ,@(first (rest unzipped)))) | |||||
| (define-syntax (cond . clauses) | (define-syntax (cond . clauses) | ||||
| (define (rec clauses) | (define (rec clauses) | ||||
| @@ -66,7 +78,7 @@ condition is false." | |||||
| (error :syntax-error "There are additional clauses after the else clause!") | (error :syntax-error "There are additional clauses after the else clause!") | ||||
| (pair 'begin (rest (first clauses))))) | (pair 'begin (rest (first clauses))))) | ||||
| `(if ,(first (first clauses)) | `(if ,(first (first clauses)) | ||||
| (begin @(rest (first clauses))) | |||||
| (begin ,@(rest (first clauses))) | |||||
| ,(rec (rest clauses)))))) | ,(rec (rest clauses)))))) | ||||
| (rec clauses)) | (rec clauses)) | ||||
| @@ -81,13 +93,10 @@ condition is false." | |||||
| (error :syntax-error "There are additional clauses after the else clause!") | (error :syntax-error "There are additional clauses after the else clause!") | ||||
| (pair 'begin (rest (first clauses))))) | (pair 'begin (rest (first clauses))))) | ||||
| `(if (member? ,var ',(first (first clauses))) | `(if (member? ,var ',(first (first clauses))) | ||||
| (begin @(rest (first clauses))) | |||||
| (begin ,@(rest (first clauses))) | |||||
| ,(rec (rest clauses)))))) | ,(rec (rest clauses)))))) | ||||
| (rec clauses)) | (rec clauses)) | ||||
| (define-syntax (define-special name-and-args . body) | |||||
| `(define ,(first name-and-args) (special-lambda ,(rest name-and-args) @body))) | |||||
| (define-syntax (construct-list . body) | (define-syntax (construct-list . body) | ||||
| :doc " | :doc " | ||||
| {{{example_start}}} | {{{example_start}}} | ||||
| @@ -142,14 +151,14 @@ condition is false." | |||||
| (let ((name (first args)) | (let ((name (first args)) | ||||
| (lambda-list (rest args)) | (lambda-list (rest args)) | ||||
| (arg-names (get-arg-names (rest args)))) | (arg-names (get-arg-names (rest args)))) | ||||
| `(define (,name @arg-names) | |||||
| (assert-types= @lambda-list) | |||||
| @body))) | |||||
| `(define (,name ,@arg-names) | |||||
| (assert-types= ,@lambda-list) | |||||
| ,@body))) | |||||
| (define-syntax (define-module module-name (:imports ()) :exports . body) | (define-syntax (define-module module-name (:imports ()) :exports . body) | ||||
| (let ((module-prefix (concat-strings (symbol->string module-name) "::"))) | (let ((module-prefix (concat-strings (symbol->string module-name) "::"))) | ||||
| (eval `(begin @(map (lambda (x) `(,import ,x)) imports) @body)) | |||||
| (eval `(begin ,@(map (lambda (x) `(,import ,x)) imports) ,@body)) | |||||
| (pair 'begin | (pair 'begin | ||||
| (map (lambda (orig-export-name) | (map (lambda (orig-export-name) | ||||
| (let ((export-name (string->symbol | (let ((export-name (string->symbol | ||||
| @@ -182,8 +191,8 @@ condition is false." | |||||
| (let ((generic-map-name (string->symbol | (let ((generic-map-name (string->symbol | ||||
| (concat-strings "generic-" (symbol->string fun-name) "-map")))) | (concat-strings "generic-" (symbol->string fun-name) "-map")))) | ||||
| (unless (bound? generic-map-name) | (unless (bound? generic-map-name) | ||||
| (define generic-map-name (create-hash-map))) | |||||
| (hm/set! generic-map-name types (eval `(,lambda ,names @body))) | |||||
| (define generic-map-name (hash-map))) | |||||
| (hm/set! generic-map-name types (eval `(,lambda ,names ,@body))) | |||||
| ;; now check if the generic procedure already exists | ;; now check if the generic procedure already exists | ||||
| (if (bound? fun-name) | (if (bound? fun-name) | ||||
| (let ((exisiting-fun (eval fun-name))) | (let ((exisiting-fun (eval fun-name))) | ||||
| @@ -368,17 +377,17 @@ by the key =from= and ends with the number defined in =to=." | |||||
| (when (< from to) | (when (< from to) | ||||
| (pair from (range :from (+ 1 from) :to to)))) | (pair from (range :from (+ 1 from) :to to)))) | ||||
| (define (range-while (:from 0) to) | |||||
| (define (range-while (:from 0) :to) | |||||
| :doc "Returns a sequence of numbers starting with the number defined | :doc "Returns a sequence of numbers starting with the number defined | ||||
| by the key 'from' and ends with the number defined in 'to'." | by the key 'from' and ends with the number defined in 'to'." | ||||
| (define result (list (copy from))) | (define result (list (copy from))) | ||||
| (define head result) | (define head result) | ||||
| (mutate from (increment from)) | |||||
| (set! from (increment from)) | |||||
| (while (< from to) | (while (< from to) | ||||
| (begin | (begin | ||||
| (mutate head (pair (first head) (pair (copy from) nil))) | (mutate head (pair (first head) (pair (copy from) nil))) | ||||
| (define head (rest head)) | (define head (rest head)) | ||||
| (mutate from (increment from)))) | |||||
| (set! from (increment from)))) | |||||
| result) | result) | ||||
| (define (map fun seq) | (define (map fun seq) | ||||
| @@ -471,7 +480,6 @@ added to a list, which in the end is returned." | |||||
| ;; (vector-ref v2 0)))) | ;; (vector-ref v2 0)))) | ||||
| ;; (unless (bound? generic-+-map) | ;; (unless (bound? generic-+-map) | ||||
| ;; (set! generic-+-map (create-hash-map))) | ;; (set! generic-+-map (create-hash-map))) | ||||
| ;; (hm/set! generic-+-map '(:vector :vector) (lambda (v1 v2) | ;; (hm/set! generic-+-map '(:vector :vector) (lambda (v1 v2) | ||||
| @@ -6,27 +6,33 @@ | |||||
| (define-syntax (pe expr) `(print ',expr "evaluates to" ,expr)) | (define-syntax (pe expr) `(print ',expr "evaluates to" ,expr)) | ||||
| (define-syntax (when condition . body) :doc "Special form for when multiple actions should be done if a\ncondition is true.\n\n{{{example_start}}}\n(when (not ())\n (print "Hello ")\n (print "from ")\n (print "when!"))\n\n(when ()\n (print "Goodbye ")\n (print "World!"))\n{{{example_end}}}\n" (if (= (rest body) ()) `(if ,condition (unquote-splicing body) nil) `(if ,condition (begin (unquote-splicing body)) nil))) | |||||
| (define the-empty-stream ()) | |||||
| (define-syntax (unless condition . body) :doc "Special form for when multiple actions should be done if a\ncondition is false." (if (= (rest body) ()) `(if ,condition nil (unquote-splicing body)) `(if ,condition nil (begin (unquote-splicing body))))) | |||||
| (define (stream-null? s) (if s t ())) | |||||
| (define-syntax (n-times times action) :doc "Executes action times times." (define (repeat times elem) (unless (> 1 times) (pair elem (repeat (- times 1) elem)))) `(begin (unquote-splicing (repeat times action)))) | |||||
| (define-syntax (delay expr) `(,lambda () ,expr)) | |||||
| (define-syntax (let bindings . body) (define (unzip lists) (when lists (define (iter lists l1 l2) (define elem (first lists)) (if elem (iter (rest lists) (pair (first elem) l1) (pair (first (rest elem)) l2)) (list l1 l2)))) (iter lists () ())) (define unzipped (unzip bindings)) `((,lambda ,(first unzipped) (unquote-splicing body)) (unquote-splicing (first (rest unzipped))))) | |||||
| (define (force promise) (promise)) | |||||
| (define-syntax (cond . clauses) (define (rec clauses) (if (= nil clauses) nil (if (= (first (first clauses)) 'else) (begin (if (not (= (rest clauses) ())) (error :syntax-error "There are additional clauses after the else clause!") (pair 'begin (rest (first clauses))))) `(if ,(first (first clauses)) (begin (unquote-splicing (rest (first clauses)))) ,(rec (rest clauses)))))) (rec clauses)) | |||||
| (define-syntax (when condition . body) :doc "Special form for when multiple actions should be done if a\ncondition is true.\n\n{{{example_start}}}\n(when (not ())\n (print "Hello ")\n (print "from ")\n (print "when!"))\n\n(when ()\n (print "Goodbye ")\n (print "World!"))\n{{{example_end}}}\n" (if (= (rest body) ()) `(if ,condition ,@body nil) `(if ,condition (begin ,@body) nil))) | |||||
| (define-syntax (case var . clauses) (define (rec clauses) (if (= nil clauses) nil (if (= (first (first clauses)) 'else) (begin (if (not (= (rest clauses) ())) (error :syntax-error "There are additional clauses after the else clause!") (pair 'begin (rest (first clauses))))) `(if (member? ,var ',(first (first clauses))) (begin (unquote-splicing (rest (first clauses)))) ,(rec (rest clauses)))))) (rec clauses)) | |||||
| (define-syntax (unless condition . body) :doc "Special form for when multiple actions should be done if a\ncondition is false." (if (= (rest body) ()) `(if ,condition nil ,@body) `(if ,condition nil (begin ,@body)))) | |||||
| (define-syntax (define-special name-and-args . body) `(define ,(first name-and-args) (special-lambda ,(rest name-and-args) (unquote-splicing body)))) | |||||
| (define-syntax (n-times times action) :doc "Executes action times times." (define (repeat times elem) (unless (> 1 times) (pair elem (repeat (- times 1) elem)))) `(begin ,@(repeat times action))) | |||||
| (define-syntax (let bindings . body) (define (unzip lists) (when lists (define (iter lists l1 l2) (define elem (first lists)) (if elem (iter (rest lists) (pair (first elem) l1) (pair (first (rest elem)) l2)) (list l1 l2)))) (iter lists () ())) (define unzipped (unzip bindings)) `((,lambda ,(first unzipped) ,@body) ,@(first (rest unzipped)))) | |||||
| (define-syntax (cond . clauses) (define (rec clauses) (if (= nil clauses) nil (if (= (first (first clauses)) 'else) (begin (if (not (= (rest clauses) ())) (error :syntax-error "There are additional clauses after the else clause!") (pair 'begin (rest (first clauses))))) `(if ,(first (first clauses)) (begin ,@(rest (first clauses))) ,(rec (rest clauses)))))) (rec clauses)) | |||||
| (define-syntax (case var . clauses) (define (rec clauses) (if (= nil clauses) nil (if (= (first (first clauses)) 'else) (begin (if (not (= (rest clauses) ())) (error :syntax-error "There are additional clauses after the else clause!") (pair 'begin (rest (first clauses))))) `(if (member? ,var ',(first (first clauses))) (begin ,@(rest (first clauses))) ,(rec (rest clauses)))))) (rec clauses)) | |||||
| (define-syntax (construct-list . body) :doc "\n{{{example_start}}}\n(construct-list\n i <- '(1 2 3 4 5)\n yield (* i i))\n{{{example_end}}}\n\n(construct-list\n i <- '(1 2 3 4)\n j <- '(A B)\n yield (pair i j))\n\n(construct-list\n i <- '(1 2 3 4 5 6 7 8)\n if (= 0 (% i 2))\n yield i)\n" (define (append-map f ll) (unless (= ll ()) (define val (f (first ll))) (if (= (first val) ()) (append-map f (rest ll)) (extend val (append-map f (rest ll)))))) (define (rec body) (cond ((= () body) ()) ((= () (rest body)) (first body)) ((= (first (rest body)) '<-) `(,append-map (lambda (,(first body)) (list ,(rec (rest (rest (rest body)))))) ,(first (rest (rest body))))) ((= (first body) 'if) `(when ,(first (rest body)) ,(rec (rest (rest body))))) ((= (first (rest body)) 'yield) (first (rest body))) (else (error :syntax-error "Not a do-able expression")))) (rec body)) | (define-syntax (construct-list . body) :doc "\n{{{example_start}}}\n(construct-list\n i <- '(1 2 3 4 5)\n yield (* i i))\n{{{example_end}}}\n\n(construct-list\n i <- '(1 2 3 4)\n j <- '(A B)\n yield (pair i j))\n\n(construct-list\n i <- '(1 2 3 4 5 6 7 8)\n if (= 0 (% i 2))\n yield i)\n" (define (append-map f ll) (unless (= ll ()) (define val (f (first ll))) (if (= (first val) ()) (append-map f (rest ll)) (extend val (append-map f (rest ll)))))) (define (rec body) (cond ((= () body) ()) ((= () (rest body)) (first body)) ((= (first (rest body)) '<-) `(,append-map (lambda (,(first body)) (list ,(rec (rest (rest (rest body)))))) ,(first (rest (rest body))))) ((= (first body) 'if) `(when ,(first (rest body)) ,(rec (rest (rest body))))) ((= (first (rest body)) 'yield) (first (rest body))) (else (error :syntax-error "Not a do-able expression")))) (rec body)) | ||||
| (define-syntax (define-typed args . body) (define (get-arg-names args) (when args (pair (first args) (get-arg-names (rest (rest args)))))) (let ((name (first args)) (lambda-list (rest args)) (arg-names (get-arg-names (rest args)))) `(define (,name (unquote-splicing arg-names)) (assert-types= (unquote-splicing lambda-list)) (unquote-splicing body)))) | |||||
| (define-syntax (define-typed args . body) (define (get-arg-names args) (when args (pair (first args) (get-arg-names (rest (rest args)))))) (let ((name (first args)) (lambda-list (rest args)) (arg-names (get-arg-names (rest args)))) `(define (,name ,@arg-names) (assert-types= ,@lambda-list) ,@body))) | |||||
| (define-syntax (define-module module-name (:imports ()) :exports . body) (let ((module-prefix (concat-strings (symbol->string module-name) "::"))) (eval `(begin (unquote-splicing (map (lambda (x) `(,import ,x)) imports)) (unquote-splicing body))) (pair 'begin (map (lambda (orig-export-name) (let ((export-name (string->symbol (concat-strings module-prefix (symbol->string orig-export-name))))) `(define ,export-name ,(mytry (eval orig-export-name) (error :module-error "The module does not contain a key it tries to export"))))) exports)))) | |||||
| (define-syntax (define-module module-name (:imports ()) :exports . body) (let ((module-prefix (concat-strings (symbol->string module-name) "::"))) (eval `(begin ,@(map (lambda (x) `(,import ,x)) imports) ,@body)) (pair 'begin (map (lambda (orig-export-name) (let ((export-name (string->symbol (concat-strings module-prefix (symbol->string orig-export-name))))) `(define ,export-name ,(mytry (eval orig-export-name) (error :module-error "The module does not contain a key it tries to export"))))) exports)))) | |||||
| (define-syntax (generic-extend args . body) (let ((fun-name (first args)) (params (rest args)) (types ()) (names ())) (define (process-params params) (when params (let ((_name (first params)) (_type (first (rest params)))) (assert (symbol? _name)) (assert (keyword? _type)) (set! types (append types _type)) (set! names (append names _name)) (process-params (rest (rest params)))))) (process-params params) (let ((generic-map-name (string->symbol (concat-strings "generic-" (symbol->string fun-name) "-map")))) (unless (bound? generic-map-name) (define generic-map-name (create-hash-map))) (hm/set! generic-map-name types (eval `(,lambda ,names (unquote-splicing body)))) (if (bound? fun-name) (let ((exisiting-fun (eval fun-name))) (unless (type=? exisiting-fun :generic-procedure) (unless (procedure? exisiting-fun) (error :macro-expand-error "can only generic-extend procedures.")) (define orig-proc exisiting-fun) (define fun-name (eval `(,lambda args (let ((fun (hm/get (map type args)))) (if (procedure? fun) (fun . args) (,orig-proc . args)))))))))))) | |||||
| (define-syntax (generic-extend args . body) (let ((fun-name (first args)) (params (rest args)) (types ()) (names ())) (define (process-params params) (when params (let ((_name (first params)) (_type (first (rest params)))) (assert (symbol? _name)) (assert (keyword? _type)) (set! types (append types _type)) (set! names (append names _name)) (process-params (rest (rest params)))))) (process-params params) (let ((generic-map-name (string->symbol (concat-strings "generic-" (symbol->string fun-name) "-map")))) (unless (bound? generic-map-name) (define generic-map-name (hash-map))) (hm/set! generic-map-name types (eval `(,lambda ,names ,@body))) (if (bound? fun-name) (let ((exisiting-fun (eval fun-name))) (unless (type=? exisiting-fun :generic-procedure) (unless (procedure? exisiting-fun) (error :macro-expand-error "can only generic-extend procedures.")) (define orig-proc exisiting-fun) (define fun-name (eval `(,lambda args (let ((fun (hm/get (map type args)))) (if (procedure? fun) (fun . args) (,orig-proc . args)))))))))))) | |||||
| (define (null? x) :doc "Checks if the argument is =nil=." (= x ())) | (define (null? x) :doc "Checks if the argument is =nil=." (= x ())) | ||||
| @@ -82,7 +88,7 @@ | |||||
| (define (range (:from 0) :to) :doc "Returns a sequence of numbers starting with the number defined\nby the key =from= and ends with the number defined in =to=." (when (< from to) (pair from (range :from (+ 1 from) :to to)))) | (define (range (:from 0) :to) :doc "Returns a sequence of numbers starting with the number defined\nby the key =from= and ends with the number defined in =to=." (when (< from to) (pair from (range :from (+ 1 from) :to to)))) | ||||
| (define (range-while (:from 0) to) :doc "Returns a sequence of numbers starting with the number defined\nby the key 'from' and ends with the number defined in 'to'." (define result (list (copy from))) (define head result) (mutate from (increment from)) (while (< from to) (begin (mutate head (pair (first head) (pair (copy from) nil))) (define head (rest head)) (mutate from (increment from)))) result) | |||||
| (define (range-while (:from 0) :to) :doc "Returns a sequence of numbers starting with the number defined\nby the key 'from' and ends with the number defined in 'to'." (define result (list (copy from))) (define head result) (set! from (increment from)) (while (< from to) (begin (mutate head (pair (first head) (pair (copy from) nil))) (define head (rest head)) (set! from (increment from)))) result) | |||||
| (define (map fun seq) :doc "Takes a function and a sequence as arguments and returns a new\nsequence which contains the results of using the first sequences\nelemens as argument to that function." (if (null? seq) seq (pair (fun (first seq)) (map fun (rest seq))))) | (define (map fun seq) :doc "Takes a function and a sequence as arguments and returns a new\nsequence which contains the results of using the first sequences\nelemens as argument to that function." (if (null? seq) seq (pair (fun (first seq)) (map fun (rest seq))))) | ||||
| @@ -1,670 +0,0 @@ | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| @@ -1,670 +0,0 @@ | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| -> Slime::apply_arguments_to_function d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 240 | |||||
| -> Slime::create_extended_environment_for_function_application d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 5 | |||||
| -> Slime::eval_arguments d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 367 | |||||
| <- | |||||
| <- | |||||
| -> Slime::eval_expr d:\code\gitlab\tallshipengine\external\slime\src\./eval.cpp 402 | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| <- | |||||
| @@ -89,13 +89,13 @@ | |||||
| ;; :key2 value2, | ;; :key2 value2, | ||||
| ;; :key1 value1)) | ;; :key1 value1)) | ||||
| (assert (= (length (first p)) 6)) | |||||
| (assert (= (ds::plist::get p :key1) 'value4)) | |||||
| ;; (assert (= (length (first p)) 6)) | |||||
| ;; (assert (= (ds::plist::get p :key1) 'value4)) | |||||
| (ds::plist::remove! p :key1) | |||||
| ;; p == ((:key2 value2, | |||||
| ;; :key1 value1)) | |||||
| ;; (ds::plist::remove! p :key1) | |||||
| ;; ;; p == ((:key2 value2, | |||||
| ;; ;; :key1 value1)) | |||||
| (assert (= (length (first p)) 4)) | |||||
| (assert (= (ds::plist::get p :key1) 'value1)) | |||||
| (assert (= (ds::plist::get p :key2) 'value2)) | |||||
| ;; (assert (= (length (first p)) 4)) | |||||
| ;; (assert (= (ds::plist::get p :key1) 'value1)) | |||||
| ;; (assert (= (ds::plist::get p :key2) 'value2)) | |||||
| @@ -1,12 +1,12 @@ | |||||
| (define hm1 (create-hash-map)) | |||||
| (define hm1 (hash-map)) | |||||
| (hm/set! hm1 1 "a") | (hm/set! hm1 1 "a") | ||||
| (hm/set! hm1 "a" (lambda (x) (+ x 1))) | (hm/set! hm1 "a" (lambda (x) (+ x 1))) | ||||
| (assert (= ((hm/get hm1 (hm/get hm1 1)) 2) 3)) | (assert (= ((hm/get hm1 (hm/get hm1 1)) 2) 3)) | ||||
| (define hm2 (create-hash-map)) | |||||
| (define hm2 (hash-map)) | |||||
| (hm/set! hm2 'yes :yes) | (hm/set! hm2 'yes :yes) | ||||
| (hm/set! hm2 :yes 'yes) | (hm/set! hm2 :yes 'yes) | ||||
| @@ -17,7 +17,7 @@ | |||||
| (assert (= (hm/get hm2 (hm/get hm2 (hm/get hm2 'yes))) :yes)) | (assert (= (hm/get hm2 (hm/get hm2 (hm/get hm2 'yes))) :yes)) | ||||
| (assert (= (hm/get hm2 (hm/get hm2 (hm/get hm2 :yes))) 'yes)) | (assert (= (hm/get hm2 (hm/get hm2 (hm/get hm2 :yes))) 'yes)) | ||||
| (define hm3 (create-hash-map)) | |||||
| (define hm3 (hash-map)) | |||||
| (hm/set! hm3 + 'plus) | (hm/set! hm3 + 'plus) | ||||
| (hm/set! hm3 - 'minus) | (hm/set! hm3 - 'minus) | ||||
| @@ -0,0 +1,3 @@ | |||||
| (define a 1111) | |||||
| (define (get-a-1) a) | |||||
| @@ -0,0 +1,7 @@ | |||||
| (import "tests/import1.slime") | |||||
| (define (set-a-2 s) | |||||
| (set! a s)) | |||||
| (define (get-a-2) a) | |||||
| @@ -0,0 +1,20 @@ | |||||
| (import "tests/import1.slime") | |||||
| (assert (= a 1111)) | |||||
| (assert (= (get-a-1) 1111)) | |||||
| (import "tests/import2.slime") | |||||
| (assert (= a 1111)) | |||||
| (assert (= (get-a-1) 1111)) | |||||
| (assert (= (get-a-2) 1111)) | |||||
| (set-a-2 11) | |||||
| (assert (= a 11)) | |||||
| (assert (= (get-a-1) 11)) | |||||
| (assert (= (get-a-2) 11)) | |||||
| @@ -7,9 +7,19 @@ set exeName=slime.exe | |||||
| taskkill /F /IM %exeName% > NUL 2> NUL | taskkill /F /IM %exeName% > NUL 2> NUL | ||||
| echo ---------- Compiling ---------- | echo ---------- Compiling ---------- | ||||
| call ..\timecmd cl ../src/main.cpp /D_PROFILING /D_DEBUG /D_DONT_BREAK_ON_ERRORS /Zi /std:c++latest /Fe%exeName% /W3 /wd4003 /nologo /EHsc /link /NODEFAULTLIB:libucrt libucrtd.lib | |||||
| rem call ..\timecmd clang-cl ../src/main.cpp -o %exeName% /O2 /std:c++latest /W3 /Zi /EHsc | |||||
| call timecmd cl ^ | |||||
| ../src/main.cpp^ | |||||
| /I../3rd/ ^ | |||||
| /D_PROFILING /D_DEBUG ^ | |||||
| /Zi /std:c++latest /Fe%exeName% /W3 /wd4003 /nologo /EHsc | |||||
| rem call ..\timecmd cl ^ | |||||
| rem ../src/main.cpp^ | |||||
| rem /I../3rd/ ^ | |||||
| rem /O2 /D_DONT_BREAK_ON_ERRORS ^ | |||||
| rem /std:c++latest /Fe%exeName% /W3 /wd4003 /nologo /EHsc | |||||
| rem call ..\timecmd clang-cl ../src/main.cpp -o %exeName% /O2 /std:c++latest /W3 /Zi /EHsc | |||||
| if %errorlevel% == 0 ( | if %errorlevel% == 0 ( | ||||
| echo. | echo. | ||||
| @@ -1,15 +1,51 @@ | |||||
| TIMEFORMAT=%3lR | |||||
| TIMEFORMAT=%3lU | |||||
| SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" | SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" | ||||
| pushd $SCRIPTPATH > /dev/null | pushd $SCRIPTPATH > /dev/null | ||||
| # _DEBUG | |||||
| # time g++ -fpermissive src/main.cpp -g -o ./bin/slime --std=c++17 || exit 1 | |||||
| time clang++ -D_DEBUG -D_PROFILING -D_DONT_BREAK_ON_ERRORS src/main.cpp -g -o ./bin/slime --std=c++17 || exit 1 | |||||
| echo "" | |||||
| echo "----------------------" | |||||
| echo " compiling libslime " | |||||
| echo "----------------------" | |||||
| time clang++ --std=c++17 \ | |||||
| src/libslime.cpp -c -o libslime.o \ | |||||
| -I3rd/ || exit 1 | |||||
| echo "" | |||||
| echo "------------------------------" | |||||
| echo " compiling fullslime (debug) " | |||||
| echo "------------------------------" | |||||
| time clang++ -D_DEBUG -D_DONT_BREAK_ON_ERRORS \ | |||||
| src/main.cpp -gfull -gdwarf -o ./bin/slime_d --std=c++17 \ | |||||
| -I3rd/ || exit 1 | |||||
| echo "" | echo "" | ||||
| echo "--------------------------------" | |||||
| echo " compiling fullslime (release) " | |||||
| echo "--------------------------------" | |||||
| time clang++ -D_DONT_BREAK_ON_ERRORS -O3 \ | |||||
| src/main.cpp -g -o ./bin/slime --std=c++17 \ | |||||
| -I3rd/ || exit 1 | |||||
| pushd ./bin > /dev/null | pushd ./bin > /dev/null | ||||
| time ./slime --run-tests | |||||
| # echo "" | |||||
| # echo "----------------------" | |||||
| # echo " generating docs " | |||||
| # echo "----------------------" | |||||
| # time valgrind -q ./slime_d --generate-docs || exit 1 | |||||
| echo "" | |||||
| echo "----------------------" | |||||
| echo " running tests " | |||||
| echo "----------------------" | |||||
| time valgrind -q --track-origins=yes --leak-check=full --show-leak-kinds=all ./slime_d --run-tests || exit 1 | |||||
| echo "" | |||||
| echo "------------------------" | |||||
| echo " running benches " | |||||
| echo "------------------------" | |||||
| hyperfine -s color --warmup 5 "./slime --run-tests > /dev/null" | |||||
| popd > /dev/null | popd > /dev/null | ||||
| popd > /dev/null | |||||
| # popd > /dev/null | |||||
| unset TIMEFORMAT | unset TIMEFORMAT | ||||
| @@ -0,0 +1,5 @@ | |||||
| -std=c++17 | |||||
| -D_DEBUG | |||||
| -D_DONT_BREAK_ON_ERRORS | |||||
| -I3rd/ | |||||
| -include=libslime.cpp | |||||
| @@ -0,0 +1,54 @@ | |||||
| /** | |||||
| Usage of the create_error_macros: | |||||
| */ | |||||
| #define __create_error(keyword, ...) \ | |||||
| create_error( \ | |||||
| __FUNCTION__, __FILE__, __LINE__, \ | |||||
| Memory::get_keyword(keyword), \ | |||||
| __VA_ARGS__) | |||||
| #define create_out_of_memory_error(...) \ | |||||
| __create_error("out-of-memory", __VA_ARGS__) | |||||
| #define create_generic_error(...) \ | |||||
| __create_error("generic", __VA_ARGS__) | |||||
| #define create_not_yet_implemented_error() \ | |||||
| __create_error("not-yet-implemented", "This feature has not yet been implemented.") | |||||
| #define create_parsing_error(...) \ | |||||
| __create_error("parsing-error", __VA_ARGS__) | |||||
| #define create_symbol_undefined_error(...) \ | |||||
| __create_error("symbol-undefined", __VA_ARGS__) | |||||
| #define create_type_missmatch_error(expected, actual) \ | |||||
| __create_error("type-missmatch", \ | |||||
| "Type missmatch: expected %s, got %s", \ | |||||
| expected, actual) | |||||
| #ifdef _DEBUG | |||||
| #define assert_type(_node, _type) \ | |||||
| do { \ | |||||
| if (Memory::get_type(_node) != _type) { \ | |||||
| create_type_missmatch_error( \ | |||||
| Lisp_Object_Type_to_string(_type), \ | |||||
| Lisp_Object_Type_to_string(Memory::get_type(_node))); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #define assert(condition) \ | |||||
| do { \ | |||||
| if (!(condition)) { \ | |||||
| create_generic_error("Assertion-error."); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #else | |||||
| # define assert_arguments_length(expected, actual) do {} while (0) | |||||
| # define assert_arguments_length_less_equal(expected, actual) do {} while (0) | |||||
| # define assert_arguments_length_greater_equal(expected, actual) do {} while (0) | |||||
| # define assert_type(_node, _type) do {} while (0) | |||||
| # define assert(condition) do {} while (0) | |||||
| #endif | |||||
| @@ -0,0 +1,154 @@ | |||||
| #define concat_( a, b) a##b | |||||
| #define label(prefix, lnum) concat_(prefix,lnum) | |||||
| #define log_location() \ | |||||
| do { \ | |||||
| if (Globals::log_level == Log_Level::Debug) { \ | |||||
| printf("in"); \ | |||||
| int spacing = 30-(int)strlen(__FILE__); \ | |||||
| if (spacing < 1) spacing = 1; \ | |||||
| for (int i = 0; i < spacing;++i) \ | |||||
| printf(" "); \ | |||||
| printf("%s (%d) ", __FILE__, __LINE__); \ | |||||
| printf("-> %s\n",__FUNCTION__); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #define if_error_log_location_and_return(val) \ | |||||
| do { \ | |||||
| if (Globals::error) { \ | |||||
| log_location(); \ | |||||
| return val; \ | |||||
| } \ | |||||
| } while(0) | |||||
| #ifdef _DEBUG | |||||
| #define try_or_else_return(val) \ | |||||
| if (1) \ | |||||
| goto label(body,__LINE__); \ | |||||
| else \ | |||||
| while (1) \ | |||||
| if (1) { \ | |||||
| if (Globals::error) { \ | |||||
| log_location(); \ | |||||
| return val; \ | |||||
| } \ | |||||
| break; \ | |||||
| } \ | |||||
| else label(body,__LINE__): | |||||
| ; | |||||
| #else | |||||
| #define try_or_else_return(val) | |||||
| #endif | |||||
| #define try_struct try_or_else_return({}) | |||||
| #define try_void try_or_else_return() | |||||
| #define try try_or_else_return(0) | |||||
| #define dont_break_on_errors fluid_let(Globals::breaking_on_errors, false) | |||||
| #define ignore_logging fluid_let(Globals::log_level, Log_Level::None) | |||||
| #define fetch1(var) \ | |||||
| Lisp_Object* var##_symbol = Memory::get_symbol(#var); \ | |||||
| Lisp_Object* var = lookup_symbol(var##_symbol, get_current_environment()); \ | |||||
| if (Globals::error) printf("in %s:%d\n", __FILE__, __LINE__) | |||||
| #define fetch2(var1, var2) fetch1(var1); fetch1(var2) | |||||
| #define fetch3(var1, var2, var3) fetch2(var1, var2); fetch1(var3) | |||||
| #define fetch4(var1, var2, var3, var4) fetch3(var1, var2, var3); fetch1(var4) | |||||
| #define fetch5(var1, var2, var3, var4, var5) fetch4(var1, var2, var3, var4); fetch1(var5) | |||||
| #define fetch6(var1, var2, var3, var4, var5, var6) fetch5(var1, var2, var3, var4, var5); fetch1(var6) | |||||
| #define fetch7(var1, var2, var3, var4, var5, var6, var7) fetch6(var1, var2, var3, var4, var5, var6); fetch1(var7) | |||||
| #define fetch8(var1, var2, var3, var4, var5, var6, var7, var8) fetch7(var1, var2, var3, var4, var5, var6, var7); fetch1(var8) | |||||
| #define fetch9(var1, var2, var3, var4, var5, var6, var7, var8, var9) fetch8(var1, var2, var3, var4, var5, var6, var7, var8); fetch1(var9) | |||||
| #define fetch10(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10) fetch9(var1, var2, var3, var4, var5, var6, var7, var8, var9); fetch1(var10) | |||||
| #define fetch11(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11) fetch10(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10); fetch1(var11) | |||||
| #define fetch12(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12) fetch11(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); fetch1(var12) | |||||
| #define fetch13(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13) fetch12(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12); fetch1(var13) | |||||
| #define fetch14(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14) fetch13(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13); fetch1(var14) | |||||
| #define fetch15(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15) fetch14(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14); fetch1(var15) | |||||
| #define fetch16(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16) fetch15(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15); fetch1(var16) | |||||
| #define fetch17(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17) fetch16(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16); fetch1(var17) | |||||
| #define fetch18(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18) fetch17(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17); fetch1(var18) | |||||
| #define fetch19(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19) fetch18(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18); fetch1(var19) | |||||
| #define fetch20(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20) fetch19(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19); fetch1(var20) | |||||
| #define fetch21(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21) fetch20(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20); fetch1(var21) | |||||
| #define fetch22(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22) fetch21(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21); fetch1(var22) | |||||
| #define fetch23(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23) fetch22(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22); fetch1(var23) | |||||
| #define fetch24(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23, var24) fetch23(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23); fetch1(var24) | |||||
| #define GET_MACRO( \ | |||||
| _1, _2, _3, _4, _5, _6, \ | |||||
| _7, _8, _9, _10, _11, _12, \ | |||||
| _13, _14, _15, _16, _17, _18, \ | |||||
| _19, _20, _21, _22, _23, _24, \ | |||||
| NAME, ...) NAME | |||||
| #ifdef _MSC_VER | |||||
| #define EXPAND( x ) x | |||||
| #define fetch(...) EXPAND( \ | |||||
| GET_MACRO( \ | |||||
| __VA_ARGS__, \ | |||||
| fetch24, fetch23, fetch22, fetch21, fetch20, fetch19, \ | |||||
| fetch18, fetch17, fetch16, fetch15, fetch14, fetch13, \ | |||||
| fetch12, fetch11, fetch10, fetch9, fetch8, fetch7, \ | |||||
| fetch6, fetch5, fetch4, fetch3, fetch2, fetch1 \ | |||||
| )(__VA_ARGS__)) | |||||
| #else | |||||
| #define fetch(...) \ | |||||
| GET_MACRO( \ | |||||
| __VA_ARGS__, \ | |||||
| fetch24, fetch23, fetch22, fetch21, fetch20, fetch19, \ | |||||
| fetch18, fetch17, fetch16, fetch15, fetch14, fetch13, \ | |||||
| fetch12, fetch11, fetch10, fetch9, fetch8, fetch7, \ | |||||
| fetch6, fetch5, fetch4, fetch3, fetch2, fetch1 \ | |||||
| )(__VA_ARGS__) | |||||
| #endif | |||||
| // NOTE(Felix): we have to copy the string because we need it to be | |||||
| // mutable for the parser to work, because the parser relys on being | |||||
| // able to temporaily put in markers in the code and also it will fill | |||||
| // out the source code location | |||||
| #define _define_helper(def, docs, special) \ | |||||
| Parser::parser_file = file_name_built_ins; \ | |||||
| Parser::parser_line = __LINE__; \ | |||||
| Parser::parser_col = 0; \ | |||||
| auto label(params,__LINE__) = Parser::parse_single_expression( \ | |||||
| Memory::get_c_str(Memory::create_string(#def))); \ | |||||
| if_error_log_location_and_return(nullptr); \ | |||||
| assert_type(label(params,__LINE__), Lisp_Object_Type::Pair); \ | |||||
| assert_type(label(params,__LINE__)->value.pair.first, Lisp_Object_Type::Symbol); \ | |||||
| auto label(sym,__LINE__) = label(params,__LINE__)->value.pair.first; \ | |||||
| auto label(sfun,__LINE__) = Memory::create_lisp_object_cfunction(special); \ | |||||
| create_arguments_from_lambda_list_and_inject(label(params,__LINE__)->value.pair.rest, label(sfun,__LINE__)); \ | |||||
| if_error_log_location_and_return(nullptr); \ | |||||
| label(sfun,__LINE__)->docstring = Memory::create_string(docs); \ | |||||
| define_symbol(label(sym,__LINE__), label(sfun,__LINE__)); \ | |||||
| label(sfun,__LINE__)->value.cFunction->body = []() -> Lisp_Object* | |||||
| #define define(def, docs) _define_helper(def, docs, false) | |||||
| #define define_special(def, docs) _define_helper(def, docs, true) | |||||
| #define in_caller_env fluid_let( \ | |||||
| Globals::Current_Execution::envi_stack.next_index, \ | |||||
| Globals::Current_Execution::envi_stack.next_index-1) | |||||
| /* | |||||
| * iterate over lisp vectors | |||||
| */ | |||||
| #define for_lisp_vector(v) \ | |||||
| if (!v); else \ | |||||
| if (int it_index = 0); else \ | |||||
| for (auto it = v->value.vector.data; \ | |||||
| it_index < v->value.vector.length; \ | |||||
| it=v->value.vector.data+(++it_index)) | |||||
| /* | |||||
| * iterate over lisp lists | |||||
| */ | |||||
| #define for_lisp_list(l) \ | |||||
| if (!l); else \ | |||||
| if (int it_index = 0); else \ | |||||
| for (Lisp_Object* head = l, *it; \ | |||||
| Memory::get_type(head) == Lisp_Object_Type::Pair && (it = head->value.pair.first); \ | |||||
| head = head->value.pair.rest, ++it_index) | |||||
| @@ -0,0 +1,237 @@ | |||||
| #pragma once | |||||
| // #include <functional> | |||||
| #include "ftb/arraylist.hpp" | |||||
| #include "ftb/hashmap.hpp" | |||||
| namespace Slime { | |||||
| struct Lisp_Object; | |||||
| struct String; | |||||
| struct Environment; | |||||
| enum struct Thread_Type { | |||||
| Main, | |||||
| GarbageCollection | |||||
| }; | |||||
| enum struct Lisp_Object_Type { | |||||
| Nil, | |||||
| T, | |||||
| Symbol, | |||||
| Keyword, | |||||
| Number, | |||||
| String, | |||||
| Pair, | |||||
| Vector, | |||||
| Continuation, | |||||
| Pointer, | |||||
| HashMap, | |||||
| // OwningPointer, | |||||
| Function, | |||||
| CFunction, | |||||
| }; | |||||
| enum class Lisp_Object_Flags | |||||
| { | |||||
| // bits 1 to 5 (including) will be reserved for the type | |||||
| Already_Garbage_Collected = 1 << 5, | |||||
| Under_Construction = 1 << 6, | |||||
| }; | |||||
| enum struct Function_Type { | |||||
| Lambda, | |||||
| Macro | |||||
| }; | |||||
| enum struct Log_Level { | |||||
| None, | |||||
| Critical, | |||||
| Warning, | |||||
| Info, | |||||
| Debug, | |||||
| }; | |||||
| struct Continuation { | |||||
| Array_List<Lisp_Object*> call_stack; | |||||
| Array_List<Environment*> envi_stack; | |||||
| }; | |||||
| struct String { | |||||
| int length; | |||||
| char data; | |||||
| }; | |||||
| struct Source_Code_Location { | |||||
| String* file; | |||||
| int line; | |||||
| int column; | |||||
| }; | |||||
| struct Pair { | |||||
| Lisp_Object* first; | |||||
| Lisp_Object* rest; | |||||
| }; | |||||
| struct Vector { | |||||
| int length; | |||||
| Lisp_Object* data; | |||||
| }; | |||||
| struct Positional_Arguments { | |||||
| Array_List<Lisp_Object*> symbols; | |||||
| }; | |||||
| struct Keyword_Arguments { | |||||
| // Array of Pointers to Lisp_Object<Keyword> | |||||
| Array_List<Lisp_Object*> keywords; | |||||
| // NOTE(Felix): values[i] will be nullptr if no defalut value was | |||||
| // declared for key identifiers[i] | |||||
| Array_List<Lisp_Object*> values; | |||||
| }; | |||||
| struct Arguments { | |||||
| Positional_Arguments positional; | |||||
| Keyword_Arguments keyword; | |||||
| // NOTE(Felix): rest_argument will be nullptr if no rest argument | |||||
| // is declared otherwise its a symbol | |||||
| Lisp_Object* rest; | |||||
| }; | |||||
| struct Environment { | |||||
| Array_List<Environment*> parents; | |||||
| Hash_Map<void*, Lisp_Object*> hm; | |||||
| ~Environment() { | |||||
| parents.~Array_List(); | |||||
| hm.~Hash_Map(); | |||||
| } | |||||
| }; | |||||
| struct Function { | |||||
| Function_Type type; | |||||
| Arguments args; | |||||
| Lisp_Object* body; // maybe implicit begin | |||||
| Environment* parent_environment; // we are doing closures now!! | |||||
| }; | |||||
| struct cFunction { | |||||
| Lisp_Object* (*body)(); | |||||
| Arguments args; | |||||
| bool is_special_form; | |||||
| }; | |||||
| struct Lisp_Object { | |||||
| Source_Code_Location* sourceCodeLocation; | |||||
| u64 flags; | |||||
| Lisp_Object* userType; // keyword | |||||
| String* docstring; | |||||
| union value { | |||||
| String* symbol; // used for symbols and keywords | |||||
| double number; | |||||
| String* string; | |||||
| Pair pair; | |||||
| Vector vector; | |||||
| Function* function; | |||||
| cFunction* cFunction; | |||||
| void* pointer; | |||||
| Continuation* continuation; | |||||
| Hash_Map<Lisp_Object*, Lisp_Object*>* hashMap; | |||||
| ~value() {} | |||||
| } value; | |||||
| ~Lisp_Object(); | |||||
| }; | |||||
| struct Error { | |||||
| Lisp_Object* position; | |||||
| // type has to be a keyword | |||||
| Lisp_Object* type; | |||||
| String* message; | |||||
| }; | |||||
| const wchar_t* char_to_wchar(const char* c); | |||||
| char* read_entire_file(char* filename); | |||||
| void add_to_load_path(const char*); | |||||
| bool lisp_object_equal(Lisp_Object*,Lisp_Object*); | |||||
| Lisp_Object* built_in_load(String*); | |||||
| Lisp_Object* built_in_import(String*); | |||||
| void delete_error(); | |||||
| void create_error(const char* c_func_name, const char* c_file_name, int c_file_line, Lisp_Object* type, const char* format, ...); | |||||
| void create_error(const char* c_func_name, const char* c_file_name, int c_file_line, Lisp_Object* type, String* message); | |||||
| void create_error(Lisp_Object* type, const char* message, const char* c_file_name, int c_file_line); | |||||
| Lisp_Object* eval_arguments(Lisp_Object*); | |||||
| Lisp_Object* eval_expr(Lisp_Object*); | |||||
| bool is_truthy (Lisp_Object*); | |||||
| int list_length(Lisp_Object*); | |||||
| void* load_built_ins_into_environment(); | |||||
| void create_arguments_from_lambda_list_and_inject(Lisp_Object* formal_arguments, Lisp_Object* function); | |||||
| Lisp_Object* lookup_symbol(Lisp_Object* symbol, Environment*); | |||||
| void define_symbol(Lisp_Object* symbol, Lisp_Object* value); | |||||
| void print(Lisp_Object* node, bool print_repr = false, FILE* file = stdout); | |||||
| void print_environment(Environment*); | |||||
| bool run_all_tests(); | |||||
| inline Environment* get_root_environment(); | |||||
| inline Environment* get_current_environment(); | |||||
| inline void push_environment(Environment*); | |||||
| inline void pop_environment(); | |||||
| const char* Lisp_Object_Type_to_string(Lisp_Object_Type type); | |||||
| void visualize_lisp_machine(); | |||||
| void generate_docs(String* path); | |||||
| void log_error(); | |||||
| namespace Memory { | |||||
| Environment* create_built_ins_environment(); | |||||
| Lisp_Object* create_lisp_object_cfunction(bool is_special); | |||||
| inline Lisp_Object_Type get_type(Lisp_Object* node); | |||||
| void init(int); | |||||
| char* get_c_str(String*); | |||||
| void free_everything(); | |||||
| String* create_string(const char*); | |||||
| Lisp_Object* get_symbol(String* identifier); | |||||
| Lisp_Object* get_symbol(const char*); | |||||
| Lisp_Object* get_keyword(String* identifier); | |||||
| Lisp_Object* get_keyword(const char*); | |||||
| Lisp_Object* create_lisp_object(double); | |||||
| Lisp_Object* create_lisp_object(const char*); | |||||
| Lisp_Object* create_lisp_object_vector(Lisp_Object*); | |||||
| Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*); | |||||
| Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*, Lisp_Object*); | |||||
| Lisp_Object* create_lisp_object_vector(int, Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); | |||||
| } | |||||
| namespace Parser { | |||||
| // extern Environment* environment_for_macros; | |||||
| extern String* standard_in; | |||||
| extern String* parser_file; | |||||
| extern int parser_line; | |||||
| extern int parser_col; | |||||
| Lisp_Object* parse_single_expression(char* text); | |||||
| Lisp_Object* parse_single_expression(wchar_t* text); | |||||
| } | |||||
| namespace Globals { | |||||
| extern char* bin_path; | |||||
| extern Log_Level log_level; | |||||
| extern Array_List<void*> load_path; | |||||
| namespace Current_Execution { | |||||
| extern Array_List<Lisp_Object*> call_stack; | |||||
| extern Array_List<Environment*> envi_stack; | |||||
| } | |||||
| extern Error* error; | |||||
| extern bool breaking_on_errors; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,398 @@ | |||||
| namespace Parser { | |||||
| String* standard_in; | |||||
| String* parser_file; | |||||
| int parser_line; | |||||
| int parser_col; | |||||
| proc eat_comment_line(char* text, int* index_in_text) -> void { | |||||
| // safety check if we are actually starting a comment here | |||||
| if (text[*index_in_text] != ';') | |||||
| return; | |||||
| // eat the comment line | |||||
| do { | |||||
| ++(*index_in_text); | |||||
| ++parser_col; | |||||
| } while (text[(*index_in_text)] != '\n' && | |||||
| text[(*index_in_text)] != '\r' && | |||||
| text[(*index_in_text)] != '\0'); | |||||
| } | |||||
| proc step_char(char* text, int* index_in_text, int steps = 1) { | |||||
| for (int i = 0; i < steps; ++i) { | |||||
| if (text[(*index_in_text)] == '\n') { | |||||
| ++parser_line; | |||||
| parser_col = 0; | |||||
| } | |||||
| ++parser_col; | |||||
| ++(*index_in_text); | |||||
| } | |||||
| } | |||||
| proc eat_whitespace(char* text, int* index_in_text) -> void { | |||||
| // skip whitespaces | |||||
| while (text[(*index_in_text)] == ' ' || | |||||
| text[(*index_in_text)] == '\t' || | |||||
| text[(*index_in_text)] == '\n' || | |||||
| text[(*index_in_text)] == '\r') | |||||
| { | |||||
| step_char(text, index_in_text); | |||||
| } | |||||
| } | |||||
| proc eat_until_code(char* text, int* index_in_text) -> void { | |||||
| profile_this(); | |||||
| int position_before; | |||||
| do { | |||||
| position_before = *index_in_text; | |||||
| eat_comment_line(text, index_in_text); | |||||
| eat_whitespace(text, index_in_text); | |||||
| } while (position_before != *index_in_text); | |||||
| } | |||||
| proc step_char_and_eat_until_code(char* text, int* index_in_text) { | |||||
| step_char(text, index_in_text); | |||||
| eat_until_code(text, index_in_text); | |||||
| } | |||||
| proc parse_fancy_delimiter(char* text, int* index_in_text, char l_delimiter, char r_delimiter, Lisp_Object* first_elem) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| if (text[*index_in_text] != l_delimiter) { | |||||
| create_parsing_error("a fancy cannot be parsed here"); | |||||
| return nullptr; | |||||
| } | |||||
| Lisp_Object* ret; | |||||
| Lisp_Object* head; | |||||
| try ret = Memory::create_lisp_object_pair(first_elem, Memory::nil); | |||||
| head = ret; | |||||
| step_char(text, index_in_text); | |||||
| eat_until_code(text, index_in_text); | |||||
| while (text[*index_in_text] != r_delimiter) { | |||||
| Lisp_Object* element; | |||||
| try element = parse_expression(text, index_in_text); | |||||
| try head->value.pair.rest = Memory::create_lisp_object_pair(element, Memory::nil); | |||||
| head = head->value.pair.rest; | |||||
| eat_until_code(text, index_in_text); | |||||
| } | |||||
| step_char(text, index_in_text); | |||||
| return ret; | |||||
| } | |||||
| proc get_atom_text_length(char* text, int* index_in_text) -> int { | |||||
| int atom_length = 0; | |||||
| while (text[*index_in_text+atom_length] != ' ' && | |||||
| text[*index_in_text+atom_length] != ')' && | |||||
| text[*index_in_text+atom_length] != '(' && | |||||
| text[*index_in_text+atom_length] != '[' && | |||||
| text[*index_in_text+atom_length] != ']' && | |||||
| text[*index_in_text+atom_length] != '{' && | |||||
| text[*index_in_text+atom_length] != '}' && | |||||
| text[*index_in_text+atom_length] != '\0' && | |||||
| text[*index_in_text+atom_length] != '\n' && | |||||
| text[*index_in_text+atom_length] != '\r' && | |||||
| text[*index_in_text+atom_length] != '\t') | |||||
| { | |||||
| ++atom_length; | |||||
| } | |||||
| return atom_length; | |||||
| } | |||||
| proc parse_number(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| Lisp_Object* ret; | |||||
| try ret = Memory::create_lisp_object(0.0); | |||||
| sscanf(text+*index_in_text, "%lf", &ret->value.number); | |||||
| int atom_length = get_atom_text_length(text, index_in_text); | |||||
| step_char(text, index_in_text, atom_length); | |||||
| return ret; | |||||
| } | |||||
| proc parse_symbol_or_keyword(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| bool keyword = false; | |||||
| if (text[*index_in_text] == ':') { | |||||
| keyword = true; | |||||
| step_char(text, index_in_text); | |||||
| } | |||||
| int atom_length = get_atom_text_length(text, index_in_text); | |||||
| char orig = text[*index_in_text+atom_length]; | |||||
| text[*index_in_text+atom_length] = '\0'; | |||||
| String* str_keyword; | |||||
| Lisp_Object* ret; | |||||
| try str_keyword = Memory::create_string("", atom_length); | |||||
| strcpy(&str_keyword->data, text+*index_in_text); | |||||
| if (keyword) { | |||||
| try ret = Memory::get_keyword(str_keyword); | |||||
| } else { | |||||
| try ret = Memory::get_symbol(str_keyword); | |||||
| } | |||||
| text[*index_in_text+atom_length] = orig; | |||||
| step_char(text, index_in_text, atom_length); | |||||
| return ret; | |||||
| } | |||||
| proc parse_string(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| // the first character is the '"' | |||||
| step_char(text, index_in_text); | |||||
| // now we are at the first letter, if this is the closing '"' then | |||||
| // it's easy | |||||
| if (text[*index_in_text] == '"') { | |||||
| Lisp_Object* ret; | |||||
| try ret = Memory::create_lisp_object(Memory::create_string("", 0)); | |||||
| // inject_scl(ret); | |||||
| // plus one because we want to go after the quotes | |||||
| step_char(text, index_in_text); | |||||
| return ret; | |||||
| } | |||||
| // okay so the first letter was not actually closing the string... | |||||
| int string_length = 0; | |||||
| bool escaping = false; | |||||
| while (escaping || text[*index_in_text+string_length] != '"') { | |||||
| if (escaping) { | |||||
| escaping = false; | |||||
| } | |||||
| else | |||||
| if (text[*index_in_text+string_length] == '\\') | |||||
| escaping = true; | |||||
| ++string_length; | |||||
| } | |||||
| // we found the end of the string | |||||
| text[*index_in_text+string_length] = '\0'; | |||||
| // NOTE(Felix): Tactic: Through unescaping the string will | |||||
| // only get shorter, so we replace it inplace and later jump | |||||
| // to the original end of the string. | |||||
| int new_len; | |||||
| try new_len = unescape_string(text+(*index_in_text)); | |||||
| String* string = Memory::create_string("", new_len); | |||||
| strcpy(&string->data, text+(*index_in_text)); | |||||
| // printf("------ %s\n", &string->data); | |||||
| text[*index_in_text+string_length] = '"'; | |||||
| // plus one because we want to go after the quotes | |||||
| step_char(text, index_in_text, string_length+1); | |||||
| Lisp_Object* ret; | |||||
| try ret = Memory::create_lisp_object(string); | |||||
| // inject_scl(ret); | |||||
| return ret; | |||||
| } | |||||
| proc parse_atom(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| Lisp_Object* ret; | |||||
| // numbers | |||||
| if ((text[*index_in_text] <= 57 && // if number | |||||
| text[*index_in_text] >= 48) | |||||
| || | |||||
| ((text[*index_in_text] == '+' || // or if sign and then number | |||||
| text[*index_in_text] == '-') | |||||
| && | |||||
| (text[*index_in_text +1] <= 57 && | |||||
| text[*index_in_text +1] >= 48)) | |||||
| || | |||||
| ((text[*index_in_text] == '.') // or if . and then number | |||||
| && | |||||
| (text[*index_in_text +1] <= 57 && | |||||
| text[*index_in_text +1] >= 48))) | |||||
| { | |||||
| try ret = parse_number(text, index_in_text); | |||||
| } | |||||
| else if (text[*index_in_text] == '"') | |||||
| try ret = parse_string(text, index_in_text); | |||||
| else | |||||
| try ret = parse_symbol_or_keyword(text, index_in_text); | |||||
| return ret; | |||||
| } | |||||
| proc parse_list(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| if (text[*index_in_text] != '(') { | |||||
| create_parsing_error("a list cannot be parsed here"); | |||||
| return nullptr; | |||||
| } | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| if (text[*index_in_text] == ')') { | |||||
| step_char(text, index_in_text); | |||||
| return Memory::nil; | |||||
| } | |||||
| Lisp_Object* first_elem; | |||||
| Lisp_Object* ret; | |||||
| Lisp_Object* head; | |||||
| try first_elem = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(first_elem, Memory::nil); | |||||
| head = ret; | |||||
| eat_until_code(text, index_in_text); | |||||
| while (text[*index_in_text] != ')') { | |||||
| Lisp_Object* element; | |||||
| if (text[*index_in_text+0] == '.' && | |||||
| text[*index_in_text+1] == ' ') | |||||
| { | |||||
| step_char(text, index_in_text, 2); | |||||
| try element = parse_expression(text, index_in_text); | |||||
| head->value.pair.rest = element; | |||||
| eat_until_code(text, index_in_text); | |||||
| if (text[*index_in_text] != ')') { | |||||
| create_parsing_error("expected the list to end after the dotted end."); | |||||
| return nullptr; | |||||
| } | |||||
| step_char(text, index_in_text); | |||||
| return ret; | |||||
| } | |||||
| try element = parse_expression(text, index_in_text); | |||||
| try head->value.pair.rest = Memory::create_lisp_object_pair(element, Memory::nil); | |||||
| head = head->value.pair.rest; | |||||
| eat_until_code(text, index_in_text); | |||||
| } | |||||
| step_char(text, index_in_text); | |||||
| return ret; | |||||
| } | |||||
| proc maybe_expand_short_form(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| Lisp_Object* vector_sym = Memory::get_symbol("vector"); | |||||
| Lisp_Object* hash_map_sym = Memory::get_symbol("hash-map"); | |||||
| Lisp_Object* quote_sym = Memory::get_symbol("quote"); | |||||
| Lisp_Object* quasiquote_sym = Memory::get_symbol("quasiquote"); | |||||
| Lisp_Object* unquote_sym = Memory::get_symbol("unquote"); | |||||
| Lisp_Object* unquote_splicing_sym = Memory::get_symbol("unquote-splicing"); | |||||
| Lisp_Object* ret = nullptr; | |||||
| Lisp_Object* expr; | |||||
| switch (text[*index_in_text]) { | |||||
| case '\'': { | |||||
| // quote | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| try expr = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(expr, Memory::nil); | |||||
| try ret = Memory::create_lisp_object_pair(quote_sym, ret); | |||||
| } break; | |||||
| case '`': { | |||||
| // quasiquote | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| try expr = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(expr, Memory::nil); | |||||
| try ret = Memory::create_lisp_object_pair(quasiquote_sym, ret); | |||||
| } break; | |||||
| case ',': { | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| if (text[*index_in_text] == '@') { | |||||
| // unquote-splicing | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| try expr = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(expr, Memory::nil); | |||||
| try ret = Memory::create_lisp_object_pair(unquote_splicing_sym, ret); | |||||
| } else { | |||||
| // unquote | |||||
| try expr = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(expr, Memory::nil); | |||||
| try ret = Memory::create_lisp_object_pair(unquote_sym, ret); | |||||
| } | |||||
| } break; | |||||
| case '[': { | |||||
| // vector | |||||
| try ret = parse_fancy_delimiter(text, index_in_text, '[', ']', vector_sym); | |||||
| } break; | |||||
| case '{': { | |||||
| // hashmap | |||||
| try ret = parse_fancy_delimiter(text, index_in_text, '{', '}', hash_map_sym); | |||||
| } break; | |||||
| default: break; | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| proc parse_expression(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| Lisp_Object* ret; | |||||
| eat_until_code(text, index_in_text); | |||||
| try ret = maybe_expand_short_form(text, index_in_text); | |||||
| if (ret) | |||||
| return ret; | |||||
| if (text[*index_in_text] == '(') { | |||||
| try ret = parse_list(text, index_in_text); | |||||
| } else { | |||||
| try ret = parse_atom(text, index_in_text); | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| proc parse_single_expression(wchar_t* text) -> Lisp_Object* { | |||||
| char* res = wchar_to_char(text); | |||||
| defer {free(res);}; | |||||
| return parse_single_expression(res); | |||||
| } | |||||
| proc parse_single_expression(char* text) -> Lisp_Object* { | |||||
| parser_file = standard_in; | |||||
| parser_line = 1; | |||||
| parser_col = 1; | |||||
| int index_in_text = 0; | |||||
| Lisp_Object* ret; | |||||
| try ret = parse_expression(text, &index_in_text); | |||||
| return ret; | |||||
| } | |||||
| proc parse_program(String* file_name, char* text) -> Array_List<Lisp_Object*>* { | |||||
| profile_this(); | |||||
| parser_file = file_name; | |||||
| parser_line = 1; | |||||
| parser_col = 0; | |||||
| Array_List<Lisp_Object*>* program = new Array_List<Lisp_Object*>; | |||||
| int index_in_text = 0; | |||||
| Lisp_Object* parsed; | |||||
| eat_until_code(text, &index_in_text); | |||||
| while (text[index_in_text] != '\0') { | |||||
| try parsed = parse_expression(text, &index_in_text); | |||||
| program->append(parsed); | |||||
| eat_until_code(text, &index_in_text); | |||||
| } | |||||
| return program; | |||||
| } | |||||
| } | |||||
| @@ -1,42 +1,120 @@ | |||||
| (require 'cl-lib) | (require 'cl-lib) | ||||
| (require 'company) | (require 'company) | ||||
| ;; "= . args" | |||||
| ;; "> . args" | |||||
| ;; ">= . args" | |||||
| ;; "< . args" | |||||
| ;; "<= . args" | |||||
| ;; "+ . args" | |||||
| ;; "- . args" | |||||
| ;; "* . args" | |||||
| ;; "/ . args" | |||||
| ;; "** a b" | |||||
| ;; "% a b" | |||||
| ;; "get-random-between a b" | |||||
| ;; "assert test" | |||||
| ;; "define-syntax form (:doc \"\") . body" | |||||
| ;; "define definee (:doc \"\") . body" | |||||
| ;; "mutate target source" | |||||
| ;; "vector-length v" | |||||
| ;; "vector-ref vec idx" | |||||
| ;; "vector-set! vec idx val" | |||||
| ;; "set! sym val" | |||||
| ;; "set-car! target source" | |||||
| ;; "set-cdr! target source" | |||||
| ;; "if test then_part else_part" | |||||
| ;; "quote datum" | |||||
| ;; "quasiquote expr" | |||||
| ;; "and . args" | |||||
| ;; "or . args" | |||||
| ;; "not test" | |||||
| ;; "lambda args . body" | |||||
| ;; "apply fun args" | |||||
| ;; "eval expr" | |||||
| ;; "begin . args" | |||||
| ;; "list . args" | |||||
| ;; "pair car cdr" | |||||
| ;; "first seq" | |||||
| ;; "rest seq" | |||||
| ;; "set-type! node new_type" | |||||
| ;; "delete-type! n" | |||||
| ;; "type n" | |||||
| ;; "mem-reset" | |||||
| ;; "info n" | |||||
| ;; "show n" | |||||
| ;; "addr-of var" | |||||
| ;; "generate-docs file_name" | |||||
| ;; "print (:sep \" \") (:end \"\\n\") . things" | |||||
| ;; "read (:prompt \">\"" | |||||
| ;; "exit (:code 0)" | |||||
| ;; "break" | |||||
| ;; "memstat" | |||||
| ;; "mytry try_part catch_part" | |||||
| ;; "load file" | |||||
| ;; "import f" | |||||
| ;; "copy obj" | |||||
| ;; "error type message" | |||||
| ;; "symbol->keyword sym" | |||||
| ;; "string->symbol str" | |||||
| ;; "symbol->string sym" | |||||
| ;; "concat-strings . strings" | |||||
| (defconst slime-built-ins | (defconst slime-built-ins | ||||
| '("=" ">" ">=" "<" "<=" "+" "-" "*" "/" "**" "%" | |||||
| "assert" "define" "define-syntax" "mutate" "if" | |||||
| "quote" "quasiquote" "unquote" "unquote-splicing" "and" "or" "not" "while" "let" | |||||
| "lambda" "special-lambda" "eval" "begin" "list" "pair" | |||||
| "first" "rest" "set-type" "delete-type" "type" "info" | |||||
| "show" "addr-of" "generate-docs" "print" "read" "exit" "break" "memstat" "try" | |||||
| "load" "import" "copy" "error" "symbol->keyword" "string->symbol" | |||||
| '("=" ">" ">=" "<" "<=" "+" "-" "*" "/" "**" "%" "get-random-between" | |||||
| "assert" "define" "define-syntax" "mutate" "if" "vector-length" | |||||
| "vector-ref" "vector-set!" "set!" "set-car!" "set-cdr!" | |||||
| "quote" "quasiquote" "unquote" "unquote-splicing" "and" "or" "not" "let" | |||||
| "lambda" "apply" "eval" "begin" "list" "pair" "create-hash-map" | |||||
| "hash-map-get" "hash-map-set!" "hash-map-delete!" "vector" | |||||
| "first" "rest" "set-type!" "delete-type!" "type" "info" "mem-reset" | |||||
| "show" "addr-of" "generate-docs" "print" "read" "exit" "break" "memstat" | |||||
| "mytry" "load" "import" "copy" "error" "symbol->keyword" "string->symbol" | |||||
| "symbol->string" "concat-strings")) | "symbol->string" "concat-strings")) | ||||
| (defun my-slime-eldoc-function () | |||||
| (let ((symbol (symbol-name (car (read (thing-at-point 'sexp)))))) | |||||
| (if (member symbol slime-built-ins) | |||||
| (sample-meta symbol) | |||||
| (concat symbol " ?")))) | |||||
| (defun sample-meta (s) | |||||
| (defun get-args (s) | |||||
| (cond | (cond | ||||
| ((string= s "=") "(= :rest <objects>)") | |||||
| ((string= s ">") "(> :rest <numbers>)") | |||||
| ((string= s ">=") "(>= :rest <numbers>)") | |||||
| ((string= s "<") "(< :rest <numbers>)") | |||||
| ((string= s "<=") "(<= :rest <numbers>)") | |||||
| ((string= s "+") "(+ :rest <numbers>)") | |||||
| ((string= s "-") "(- :rest <numbers>)") | |||||
| ((string= s "*") "(* :rest <numbers>)") | |||||
| ((string= s "/") "(/ :rest <numbers>)") | |||||
| ((string= s "**") "(** <number> <exponent>)") | |||||
| ((string= s "assert") "(assert <condition>)") | |||||
| ((string= s "define") "(define <name-or-lambda-list> [doc-string] <expression-or-bodx>)") | |||||
| ((string= s "define-syntax") "(define-syntax <name-and-lambda-list> [doc-string] <bodx>)") | |||||
| ((string= s "=") ". objects") | |||||
| ((string= s ">") ". objects") | |||||
| ((string= s ">=") ". objects") | |||||
| ((string= s "<") ". objects") | |||||
| ((string= s "<=") ". objects") | |||||
| ((string= s "+") ". objects") | |||||
| ((string= s "-") ". objects") | |||||
| ((string= s "*") ". objects") | |||||
| ((string= s "/") ". objects") | |||||
| ((string= s "**") "a b") | |||||
| ((string= s "%") "a b") | |||||
| ((string= s "get-random-between") "a b") | |||||
| ((string= s "assert") "test") | |||||
| ((string= s "define") "definee (:doc \"\") . body") | |||||
| ((string= s "define-syntax") "form (:doc \"\") . body") | |||||
| ((string= s "mutate") "(mutate <expression> <expression>)") | ((string= s "mutate") "(mutate <expression> <expression>)") | ||||
| ((string= s "if") "(if <test> <consequence> <alternative>)") | ((string= s "if") "(if <test> <consequence> <alternative>)") | ||||
| (t ""))) | |||||
| (t '()))) | |||||
| (defun sample-meta (s) | |||||
| (message "%s%s%s%s" | |||||
| (propertize "(" 'face '(:foreground "orange")) | |||||
| (propertize s 'face '(:foreground "#859900")) | |||||
| (let ((args (get-args s))) | |||||
| (if args | |||||
| (concat " " args) | |||||
| "")) | |||||
| (propertize ")" 'face '(:foreground "orange")) | |||||
| )) | |||||
| (defun my-slime-eldoc-function () | |||||
| (let ((sexp-text (thing-at-point 'sexp))) | |||||
| (when sexp-text | |||||
| (let* ((sexp (read sexp-text)) | |||||
| (symbol (if (listp sexp) | |||||
| (symbol-name (car sexp)) | |||||
| (symbol-name sexp)))) | |||||
| (when (member symbol slime-built-ins) | |||||
| (sample-meta symbol)))))) | |||||
| (add-to-list 'auto-mode-alist '("\\.slime\\'" . slime-mode)) | (add-to-list 'auto-mode-alist '("\\.slime\\'" . slime-mode)) | ||||
| @@ -124,12 +202,16 @@ | |||||
| (setq-local electric-quote-string t)) | (setq-local electric-quote-string t)) | ||||
| (setq imenu-case-fold-search nil) | (setq imenu-case-fold-search nil) | ||||
| (add-function :before-until (local 'eldoc-documentation-function) | (add-function :before-until (local 'eldoc-documentation-function) | ||||
| #'elisp-eldoc-documentation-function) | |||||
| #'my-slime-eldoc-function) | |||||
| (add-hook 'xref-backend-functions #'elisp--xref-backend nil t) | (add-hook 'xref-backend-functions #'elisp--xref-backend nil t) | ||||
| (setq-local project-vc-external-roots-function #'elisp-load-path-roots) | (setq-local project-vc-external-roots-function #'elisp-load-path-roots) | ||||
| (add-hook 'completion-at-point-functions #'elisp-completion-at-point nil 'local) | (add-hook 'completion-at-point-functions #'elisp-completion-at-point nil 'local) | ||||
| (add-hook 'flymake-diagnostic-functions #'elisp-flymake-checkdoc nil t) | (add-hook 'flymake-diagnostic-functions #'elisp-flymake-checkdoc nil t) | ||||
| (add-hook 'flymake-diagnostic-functions #'elisp-flymake-byte-compile nil t)) | |||||
| (add-hook 'flymake-diagnostic-functions #'elisp-flymake-byte-compile nil t) | |||||
| (modify-syntax-entry ?\{ "(}") | |||||
| (modify-syntax-entry ?\} "){") | |||||
| (modify-syntax-entry ?\[ "(]") | |||||
| (modify-syntax-entry ?\] ")[")) | |||||
| (defun company-simple-backend (command &optional arg &rest ignored) | (defun company-simple-backend (command &optional arg &rest ignored) | ||||
| @@ -156,7 +238,7 @@ | |||||
| (add-hook 'slime-mode-hook | (add-hook 'slime-mode-hook | ||||
| (lambda () | (lambda () | ||||
| ;; (set (make-local-variable 'eldoc-documentation-function) 'my-slime-eldoc-function) | |||||
| (set (make-local-variable 'eldoc-documentation-function) 'my-slime-eldoc-function) | |||||
| (set (make-local-variable 'company-backends) '(company-sample-backend)))) | (set (make-local-variable 'company-backends) '(company-sample-backend)))) | ||||
| (provide 'slime-mode) | (provide 'slime-mode) | ||||
| @@ -945,11 +945,11 @@ embedded scripting language. | |||||
| # end: | # end: | ||||
| #+author: Felix Brendel | #+author: Felix Brendel | ||||
| #+mail: felix.brendel@airmail.cc | |||||
| #+mail: felixbrendel@airmail.cc | |||||
| #+options: H:2 toc:nil | #+options: H:2 toc:nil | ||||
| #+macro: slime_header (eval (concat "#+header: :cache yes :exports both" "\n" "#+attr_latex: :options keywordstyle=\\color{slimeKeyword}, commentstyle=\\color{slimeComment}, stringstyle=\\color{slimeString}")) | #+macro: slime_header (eval (concat "#+header: :cache yes :exports both" "\n" "#+attr_latex: :options keywordstyle=\\color{slimeKeyword}, commentstyle=\\color{slimeComment}, stringstyle=\\color{slimeString}")) | ||||
| #+macro: ditaa_header (eval (concat "#+header: :exports results :cmdline --no-separation --no-shadows")) | |||||
| #+macro: ditaa_header (eval (concat "#+header: :cache yes :exports results :cmdline --no-separation --no-shadows")) | |||||
| #+latex_class:article | #+latex_class:article | ||||
| @@ -0,0 +1,36 @@ | |||||
| * mallocs | |||||
| |------------------------------------------+------------------------| | |||||
| | location | always freed | | |||||
| |------------------------------------------+------------------------| | |||||
| | [[file:3rd\ftb\arraylist.hpp::11]]: | yes | | |||||
| | [[file:.\3rd\ftb\bucket_allocator.hpp::17]]: | yes | | |||||
| | [[file:.\3rd\ftb\bucket_allocator.hpp::44]]: | yes | | |||||
| | [[file:.\3rd\ftb\bucket_allocator.hpp::46]]: | yes | | |||||
| | [[file:.\src\io.cpp::49]]: | yes | | |||||
| | [[file:.\src\io.cpp::164]]: | yes | | |||||
| | [[file:.\src\io.cpp::209]]: | yes | | |||||
| | [[file:.\src\io.cpp::285]]: | yes | | |||||
| | [[file:.\src\memory.cpp::158]]: | yes in free_everything | | |||||
| | [[file:.\src\platform.cpp::3]]: | yes | | |||||
| | [[file:.\src\platform.cpp::27]]: | yes | | |||||
| | [[file:.\src\platform.cpp::47]]: | yes | | |||||
| | [[file:.\src\platform.cpp::81]]: | yes | | |||||
| |------------------------------------------+------------------------| | |||||
| * news | |||||
| |----------------------------------+-------------------------------------------------------------------------------------| | |||||
| | location | always deleted | | |||||
| |----------------------------------+-------------------------------------------------------------------------------------| | |||||
| | [[file:.\src\eval.cpp::262]]: | ::new (&(result->positional.symbols)) Array_List<Lisp_Object*>; | | |||||
| | [[file:.\src\eval.cpp::263]]: | ::new (&(result->keyword.keywords)) Array_List<Lisp_Object*>; | | |||||
| | [[file:.\src\eval.cpp:264]]: | ::new (&(result->keyword.values)) Array_List<Lisp_Object*>; | | |||||
| | [[file:.\src\io.cpp:284]]: | // allocate a new block of memory size char (1 byte) instead of wide char (2 bytes) | | |||||
| | [[file:.\src\io.cpp:306]]: | wchar_t* wc = new wchar_t[cSize]; | | |||||
| | [[file:.\src\memory.cpp:336]]: | // node->value.lambdaWrapper = new Lambda_Wrapper(function); | | |||||
| | [[file:.\src\memory.cpp:383]]: | // inject a new array list; | | |||||
| | [[file:.\src\parse.cpp:195]]: | // better for keeping track of the encountered new lines and | | |||||
| | [[file:.\src\parse.cpp:196]]: | // characters since last new line so we can update the parser | | |||||
| | [[file:.\src\parse.cpp:208]]: | /* new col = (count chars since last \n) + 1 */ | | |||||
| |----------------------------------+-------------------------------------------------------------------------------------| | |||||
| @@ -1,149 +0,0 @@ | |||||
| nconst,character,start,end | |||||
| nm0221046,Actor2,53000,237000 | |||||
| nm0330687,Actor1,53000,237000 | |||||
| nm0569501,Narrator,64000,237000 | |||||
| nm0932891,Actor3,72000,237000 | |||||
| nm3068638,Actor1 - Age 12,81000,237000 | |||||
| nm2788212,Actor2 - Age 12,97000,237000 | |||||
| nm1631269,Actor4,240000,424000 | |||||
| nm0034309,Actor5,258000,424000 | |||||
| nm1131557,Actor6,258000,424000 | |||||
| nm0330687,Actor1,273000,424000 | |||||
| nm0221046,Actor2,305000,424000 | |||||
| nm0034309,Actor5,425000,558000 | |||||
| nm0329622,Office Worker,427000,558000 | |||||
| nm0330687,Actor1,427000,558000 | |||||
| nm0932891,Actor3,427000,558000 | |||||
| nm0381763,Actor7,433000,558000 | |||||
| nm0803331,Usher,433000,558000 | |||||
| nm0163988,Actor8,443000,558000 | |||||
| nm0221046,Actor2,449000,558000 | |||||
| nm0569501,Narrator,472000,558000 | |||||
| nm0221046,Actor2,560000,647000 | |||||
| nm0034309,Actor5,561000,647000 | |||||
| nm0330687,Actor1,564000,647000 | |||||
| nm0163988,Actor8,650000,813000 | |||||
| nm0735538,Employee #1,650000,813000 | |||||
| nm0330687,Actor1,652000,813000 | |||||
| nm0006970,Actor9,654000,813000 | |||||
| nm0803331,Usher,656000,813000 | |||||
| nm0221046,Actor2,660000,813000 | |||||
| nm0034309,Actor5,661000,813000 | |||||
| nm0932891,Actor3,699000,813000 | |||||
| nm0330687,Actor1,815000,1013000 | |||||
| nm1131557,Actor6,815000,1013000 | |||||
| nm0221046,Actor2,821000,1013000 | |||||
| nm1631269,Actor4,865000,1013000 | |||||
| nm0034309,Actor5,888000,1013000 | |||||
| nm0034309,Actor5,1014000,1119000 | |||||
| nm0330687,Actor1,1014000,1119000 | |||||
| nm0221046,Actor2,1048000,1119000 | |||||
| nm0330687,Actor1,1119000,1348000 | |||||
| nm0034309,Actor5,1126000,1348000 | |||||
| nm0221046,Actor2,1126000,1348000 | |||||
| nm0006970,Actor9,1279000,1348000 | |||||
| nm0330687,Actor1,1348000,1469000 | |||||
| nm0221046,Actor2,1348000,1469000 | |||||
| nm0034309,Actor5,1348000,1469000 | |||||
| nm0221046/trivia,nt0447626,1377000,1469000 | |||||
| nm0330687,Actor1,1470000,1619000 | |||||
| nm0221046,Actor2,1471000,1619000 | |||||
| nm1131557,Actor6,1547000,1619000 | |||||
| nm0330687,Actor1,1622000,1839000 | |||||
| nm0221046,Actor2,1627000,1839000 | |||||
| nm2124215,Actor10,1752000,1839000 | |||||
| nm0330687,Actor1,1839000,2006000 | |||||
| nm0221046,Actor2,1839000,2006000 | |||||
| nm0000148,Self,1910000,2006000 | |||||
| nm0330687,Actor1,2008000,2066000 | |||||
| nm0163988,Actor8,2019000,2066000 | |||||
| nm1304328,New Secretary,2019000,2066000 | |||||
| nm0034309,Actor5,2025000,2066000 | |||||
| nm0221046,Actor2,2052000,2066000 | |||||
| nm0034309,Actor5,2068000,2293000 | |||||
| nm0221046,Actor2,2068000,2293000 | |||||
| nm0330687,Actor1,2074000,2293000 | |||||
| nm0221046,Actor2,2295000,2482000 | |||||
| nm0330687,Actor1,2295000,2482000 | |||||
| nm0569501,Narrator,2315000,2482000 | |||||
| nm1131557,Actor6,2433000,2482000 | |||||
| nm0034309,Actor5,2437000,2482000 | |||||
| nm0330687,Actor1,2483000,2626000 | |||||
| nm1631269,Actor4,2483000,2626000 | |||||
| nm0330687/trivia,nt0127470,2539000,2626000 | |||||
| nm0221046,Actor2,2557000,2626000 | |||||
| nm0221046,Actor2,2630000,2853000 | |||||
| nm0330687,Actor1,2630000,2853000 | |||||
| nm1071303,Douche,2656000,2853000 | |||||
| nm3300012,Girl on the Stairs,2835000,2853000 | |||||
| nm0330687,Actor1,2853000,2984000 | |||||
| nm0221046,Actor2,2861000,2984000 | |||||
| nm0221046/trivia,nt0085270,2908000,2984000 | |||||
| nm0221046,Actor2,2985000,3072000 | |||||
| nm0330687,Actor1,2987000,3072000 | |||||
| nm2622767,Actor11,3050000,3072000 | |||||
| nm0330687,Actor1,3072000,3143000 | |||||
| nm0221046,Actor2,3073000,3143000 | |||||
| nm0221046,Actor2,3148000,3278000 | |||||
| nm0330687,Actor1,3148000,3278000 | |||||
| nm0897096,Actor12,3194000,3278000 | |||||
| nm0533467,Actor13,3209000,3278000 | |||||
| nm3505105,Actor14,3249000,3278000 | |||||
| nm1304328,New Secretary,3279000,3406000 | |||||
| nm0330687,Actor1,3282000,3406000 | |||||
| nm0163988,Actor8,3289000,3406000 | |||||
| nm0330687,Actor1,3410000,3625000 | |||||
| nm0034309,Actor5,3413000,3625000 | |||||
| nm0932891,Actor3,3414000,3625000 | |||||
| nm0735538,Employee #1,3438000,3625000 | |||||
| nm0006970,Actor9,3443000,3625000 | |||||
| nm0381763,Actor7,3443000,3625000 | |||||
| nm0281068,Actor15,3446000,3625000 | |||||
| nm0221046,Actor2,3450000,3625000 | |||||
| nm0715377,Bus Driver,3483000,3625000 | |||||
| nm1036340,Actor16,3488000,3625000 | |||||
| nm0330687,Actor1,3629000,3841000 | |||||
| nm0034309,Actor5,3642000,3841000 | |||||
| nm0221046,Actor2,3677000,3841000 | |||||
| nm0006970,Actor9,3827000,3841000 | |||||
| nm2306384,Minister,3827000,3841000 | |||||
| nm3505110,Actor9's New Husband,3827000,3841000 | |||||
| nm0221046,Actor2,3841000,3984000 | |||||
| nm0006970,Actor9,3847000,3984000 | |||||
| nm3505110,Actor9's New Husband,3847000,3984000 | |||||
| nm0330687,Actor1,3851000,3984000 | |||||
| nm3505106,Wedding Singer,3892000,3984000 | |||||
| nm1131557,Actor6,3984000,4054000 | |||||
| nm0034309,Actor5,3999000,4054000 | |||||
| nm0163988,Actor8,4009000,4054000 | |||||
| nm0330687,Actor1,4045000,4054000 | |||||
| nm0330687,Actor1,4054000,4249000 | |||||
| nm0569501,Narrator,4066000,4249000 | |||||
| nm0221046,Actor2,4089000,4249000 | |||||
| nm1656122,Partygoer,4134000,4249000 | |||||
| nm1497668,Rooftop Guy #1,4168000,4249000 | |||||
| nm3107009,Another Partygoer,4194000,4249000 | |||||
| nm0330687,Actor1,4254000,4305000 | |||||
| nm0330687,Actor1,4305000,4514000 | |||||
| nm0034309,Actor5,4305000,4514000 | |||||
| nm0381763,Actor7,4310000,4514000 | |||||
| nm0281068,Actor10,4328000,4514000 | |||||
| nm0803331,Usher,4328000,4514000 | |||||
| nm0163988,Actor8,4334000,4514000 | |||||
| nm0329622,Office Worker,4334000,4514000 | |||||
| nm0330687/trivia,nt0127468,4362000,4514000 | |||||
| nm0330687,Actor1,4516000,4740000 | |||||
| nm1631269,Actor4,4520000,4740000 | |||||
| nm1631269/trivia,nt0787786,4533000,4740000 | |||||
| nm0221046,Actor2,4583000,4740000 | |||||
| nm1071303,Douche,4593000,4740000 | |||||
| nm0000163,Ben,4620000,4740000 | |||||
| nm0001684,Elaine,4620000,4740000 | |||||
| nm0330687,Actor1,4743000,4882000 | |||||
| nm0330687/trivia,nt0920755,4751000,4882000 | |||||
| nm0221046,Actor2,4851000,4882000 | |||||
| nm0330687,Actor1,4885000,5228000 | |||||
| nm0221046,Actor2,4907000,5228000 | |||||
| nm0330687,Actor1,5230000,5426000 | |||||
| nm0569501,Narrator,5240000,5426000 | |||||
| nm1310368,Girl at interview,5263000,5426000 | |||||
| @@ -1,27 +0,0 @@ | |||||
| import plotly.figure_factory as ff | |||||
| df = [ | |||||
| {"Task": "call depth 4", "Start": 9321, "Finish": 9326}, | |||||
| {"Task": "call depth 3", "Start": 9288, "Finish": 9311}, | |||||
| {"Task": "call depth 2", "Start": 9126, "Finish": 9141}, | |||||
| {"Task": "call depth 1", "Start": 9088, "Finish": 9099}, | |||||
| {"Task": "call depth 0", "Start": 9076, "Finish": 9337}, | |||||
| {"Task": "call depth 1", "Start": 9109, "Finish": 9179}, | |||||
| {"Task": "call depth 1", "Start": 9194, "Finish": 9334}, | |||||
| {"Task": "call depth 2", "Start": 9206, "Finish": 9231}, | |||||
| {"Task": "call depth 2", "Start": 9237, "Finish": 9269}, | |||||
| {"Task": "call depth 2", "Start": 9274, "Finish": 9331}, | |||||
| {"Task": "call depth 3", "Start": 9255, "Finish": 9266}, | |||||
| {"Task": "call depth 3", "Start": 9279, "Finish": 9284}, | |||||
| {"Task": "call depth 4", "Start": 9299, "Finish": 9309}, | |||||
| {"Task": "call depth 3", "Start": 9316, "Finish": 9329}, | |||||
| ] | |||||
| fig = ff.create_gantt(df, group_tasks=True, bar_width=0.4, width=1700, height=720) | |||||
| fig["data"][0].update(text="apply_arguments_to_function", hoverinfo="text+x+y") | |||||
| fig["data"][1].update(text="apply_arguments_to_function", hoverinfo="text+x+y") | |||||
| fig["data"][2].update(text="apply_arguments_to_function", hoverinfo="text+x+y") | |||||
| fig.show() | |||||
| @@ -0,0 +1,63 @@ | |||||
| import json | |||||
| import csv | |||||
| import sys | |||||
| class FancyFloat(float): | |||||
| def __repr__(self): | |||||
| return format(Decimal(self), "f") | |||||
| class JsonRpcEncoder(json.JSONEncoder): | |||||
| def decimalize(self, val): | |||||
| if isinstance(val, dict): | |||||
| return {k:self.decimalize(v) for k,v in val.items()} | |||||
| if isinstance(val, (list, tuple)): | |||||
| return type(val)(self.decimalize(v) for v in val) | |||||
| if isinstance(val, float): | |||||
| return FancyFloat(val) | |||||
| return val | |||||
| def encode(self, val): | |||||
| return super().encode(self.decimalize(val)) | |||||
| if len(sys.argv) == 1: | |||||
| print("No file was provided") | |||||
| else: | |||||
| trace_events = [] | |||||
| call_stack = [] | |||||
| with open(sys.argv[1], "r") as in_file: | |||||
| csv_reader = csv.reader(in_file, delimiter=',') | |||||
| pf = 1 | |||||
| first_line = True | |||||
| for line in csv_reader: | |||||
| if first_line: | |||||
| pf = float(line[0]) / 1000 | |||||
| first_line = False | |||||
| continue | |||||
| if line[0] == "->": | |||||
| call_stack.append(line) | |||||
| elif line[0] == "<-": | |||||
| call = call_stack.pop() | |||||
| dict = { | |||||
| "pid": 1, | |||||
| "tid": 1, | |||||
| "ts" : float(call[1]), | |||||
| "dur": (float(line[1])-float(call[1])), | |||||
| "ph" : "X", | |||||
| "name": call[2], | |||||
| "args": { | |||||
| "file": f"({call[3]}:{call[4]})", | |||||
| } | |||||
| } | |||||
| if call[5]: | |||||
| dict["args"]["info1"] = call[5] | |||||
| if call[6]: | |||||
| dict["args"]["info2"] = call[6] | |||||
| trace_events.append(dict) | |||||
| else: | |||||
| print("invalid syntax") | |||||
| break | |||||
| with open("out.json", "w") as out_file: | |||||
| out_file.write(json.dumps({"traceEvents": trace_events})) | |||||
| @@ -0,0 +1,21 @@ | |||||
| MIT License | |||||
| Copyright (c) 2018 Jamie Wong | |||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||||
| of this software and associated documentation files (the "Software"), to deal | |||||
| in the Software without restriction, including without limitation the rights | |||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||||
| copies of the Software, and to permit persons to whom the Software is | |||||
| furnished to do so, subject to the following conditions: | |||||
| The above copyright notice and this permission notice shall be included in all | |||||
| copies or substantial portions of the Software. | |||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||||
| SOFTWARE. | |||||
| @@ -0,0 +1,2 @@ | |||||
| This is a self-contained release of https://github.com/jlfwong/speedscope. | |||||
| To use it, open index.html in Chrome or Firefox. | |||||
| @@ -0,0 +1,324 @@ | |||||
| { | |||||
| "$schema": "http://json-schema.org/draft-06/schema#", | |||||
| "definitions": { | |||||
| "FileFormat.Profile": { | |||||
| "anyOf": [ | |||||
| { | |||||
| "$ref": "#/definitions/FileFormat.EventedProfile" | |||||
| }, | |||||
| { | |||||
| "$ref": "#/definitions/FileFormat.SampledProfile" | |||||
| } | |||||
| ] | |||||
| }, | |||||
| "FileFormat.File": { | |||||
| "title": "FileFormat.File", | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "$schema": { | |||||
| "type": "string", | |||||
| "enum": [ | |||||
| "https://www.speedscope.app/file-format-schema.json" | |||||
| ], | |||||
| "title": "$schema" | |||||
| }, | |||||
| "shared": { | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "frames": { | |||||
| "type": "array", | |||||
| "items": { | |||||
| "$ref": "#/definitions/FileFormat.Frame" | |||||
| }, | |||||
| "title": "frames" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "frames" | |||||
| ], | |||||
| "title": "shared" | |||||
| }, | |||||
| "profiles": { | |||||
| "type": "array", | |||||
| "items": { | |||||
| "anyOf": [ | |||||
| { | |||||
| "$ref": "#/definitions/FileFormat.EventedProfile" | |||||
| }, | |||||
| { | |||||
| "$ref": "#/definitions/FileFormat.SampledProfile" | |||||
| } | |||||
| ] | |||||
| }, | |||||
| "title": "profiles" | |||||
| }, | |||||
| "name": { | |||||
| "type": "string", | |||||
| "title": "name" | |||||
| }, | |||||
| "activeProfileIndex": { | |||||
| "type": "number", | |||||
| "title": "activeProfileIndex" | |||||
| }, | |||||
| "exporter": { | |||||
| "type": "string", | |||||
| "title": "exporter" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "$schema", | |||||
| "profiles", | |||||
| "shared" | |||||
| ] | |||||
| }, | |||||
| "FileFormat.Frame": { | |||||
| "title": "FileFormat.Frame", | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "name": { | |||||
| "type": "string", | |||||
| "title": "name" | |||||
| }, | |||||
| "file": { | |||||
| "type": "string", | |||||
| "title": "file" | |||||
| }, | |||||
| "line": { | |||||
| "type": "number", | |||||
| "title": "line" | |||||
| }, | |||||
| "col": { | |||||
| "type": "number", | |||||
| "title": "col" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "name" | |||||
| ] | |||||
| }, | |||||
| "FileFormat.ProfileType": { | |||||
| "title": "FileFormat.ProfileType", | |||||
| "enum": [ | |||||
| "evented", | |||||
| "sampled" | |||||
| ], | |||||
| "type": "string" | |||||
| }, | |||||
| "FileFormat.IProfile": { | |||||
| "title": "FileFormat.IProfile", | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "type": { | |||||
| "$ref": "#/definitions/FileFormat.ProfileType", | |||||
| "title": "type" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "type" | |||||
| ] | |||||
| }, | |||||
| "FileFormat.EventedProfile": { | |||||
| "title": "FileFormat.EventedProfile", | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "type": { | |||||
| "type": "string", | |||||
| "enum": [ | |||||
| "evented" | |||||
| ], | |||||
| "title": "type" | |||||
| }, | |||||
| "name": { | |||||
| "type": "string", | |||||
| "title": "name" | |||||
| }, | |||||
| "unit": { | |||||
| "$ref": "#/definitions/FileFormat.ValueUnit", | |||||
| "title": "unit" | |||||
| }, | |||||
| "startValue": { | |||||
| "type": "number", | |||||
| "title": "startValue" | |||||
| }, | |||||
| "endValue": { | |||||
| "type": "number", | |||||
| "title": "endValue" | |||||
| }, | |||||
| "events": { | |||||
| "type": "array", | |||||
| "items": { | |||||
| "anyOf": [ | |||||
| { | |||||
| "$ref": "#/definitions/OpenFrameEvent" | |||||
| }, | |||||
| { | |||||
| "$ref": "#/definitions/CloseFrameEvent" | |||||
| } | |||||
| ] | |||||
| }, | |||||
| "title": "events" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "endValue", | |||||
| "events", | |||||
| "name", | |||||
| "startValue", | |||||
| "type", | |||||
| "unit" | |||||
| ] | |||||
| }, | |||||
| "SampledStack": { | |||||
| "type": "array", | |||||
| "items": { | |||||
| "type": "number" | |||||
| } | |||||
| }, | |||||
| "FileFormat.SampledProfile": { | |||||
| "title": "FileFormat.SampledProfile", | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "type": { | |||||
| "type": "string", | |||||
| "enum": [ | |||||
| "sampled" | |||||
| ], | |||||
| "title": "type" | |||||
| }, | |||||
| "name": { | |||||
| "type": "string", | |||||
| "title": "name" | |||||
| }, | |||||
| "unit": { | |||||
| "$ref": "#/definitions/FileFormat.ValueUnit", | |||||
| "title": "unit" | |||||
| }, | |||||
| "startValue": { | |||||
| "type": "number", | |||||
| "title": "startValue" | |||||
| }, | |||||
| "endValue": { | |||||
| "type": "number", | |||||
| "title": "endValue" | |||||
| }, | |||||
| "samples": { | |||||
| "type": "array", | |||||
| "items": { | |||||
| "type": "array", | |||||
| "items": { | |||||
| "type": "number" | |||||
| } | |||||
| }, | |||||
| "title": "samples" | |||||
| }, | |||||
| "weights": { | |||||
| "type": "array", | |||||
| "items": { | |||||
| "type": "number" | |||||
| }, | |||||
| "title": "weights" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "endValue", | |||||
| "name", | |||||
| "samples", | |||||
| "startValue", | |||||
| "type", | |||||
| "unit", | |||||
| "weights" | |||||
| ] | |||||
| }, | |||||
| "FileFormat.ValueUnit": { | |||||
| "title": "FileFormat.ValueUnit", | |||||
| "enum": [ | |||||
| "bytes", | |||||
| "microseconds", | |||||
| "milliseconds", | |||||
| "nanoseconds", | |||||
| "none", | |||||
| "seconds" | |||||
| ], | |||||
| "type": "string" | |||||
| }, | |||||
| "FileFormat.EventType": { | |||||
| "title": "FileFormat.EventType", | |||||
| "enum": [ | |||||
| "C", | |||||
| "O" | |||||
| ], | |||||
| "type": "string" | |||||
| }, | |||||
| "IEvent": { | |||||
| "title": "IEvent", | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "type": { | |||||
| "$ref": "#/definitions/FileFormat.EventType", | |||||
| "title": "type" | |||||
| }, | |||||
| "at": { | |||||
| "type": "number", | |||||
| "title": "at" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "at", | |||||
| "type" | |||||
| ] | |||||
| }, | |||||
| "OpenFrameEvent": { | |||||
| "title": "OpenFrameEvent", | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "type": { | |||||
| "type": "string", | |||||
| "enum": [ | |||||
| "O" | |||||
| ], | |||||
| "title": "type" | |||||
| }, | |||||
| "frame": { | |||||
| "type": "number", | |||||
| "title": "frame" | |||||
| }, | |||||
| "at": { | |||||
| "type": "number", | |||||
| "title": "at" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "at", | |||||
| "frame", | |||||
| "type" | |||||
| ] | |||||
| }, | |||||
| "CloseFrameEvent": { | |||||
| "title": "CloseFrameEvent", | |||||
| "type": "object", | |||||
| "properties": { | |||||
| "type": { | |||||
| "type": "string", | |||||
| "enum": [ | |||||
| "C" | |||||
| ], | |||||
| "title": "type" | |||||
| }, | |||||
| "frame": { | |||||
| "type": "number", | |||||
| "title": "frame" | |||||
| }, | |||||
| "at": { | |||||
| "type": "number", | |||||
| "title": "at" | |||||
| } | |||||
| }, | |||||
| "required": [ | |||||
| "at", | |||||
| "frame", | |||||
| "type" | |||||
| ] | |||||
| } | |||||
| }, | |||||
| "$ref": "#/definitions/FileFormat.File" | |||||
| } | |||||
| @@ -0,0 +1 @@ | |||||
| <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>speedscope</title> <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet"> <script></script> <link rel="stylesheet" href="reset.7ae984ff.css"> <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.c68a0a43.png"> <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.d02bd490.png"> </head> <body> <script src="speedscope.f741b731.js"></script> </body> </html> | |||||
| @@ -0,0 +1,199 @@ | |||||
| java;read;check_events_[k];hypercall_page_[k] 1 | |||||
| java;start_thread;java_start;GCTaskThread::run;ScavengeRootsTask::do_it;ClassLoaderDataGraph::oops_do;ClassLoaderData::oops_do;PSScavengeKlassClosure::do_klass 1 | |||||
| java;start_thread;java_start;GCTaskThread::run;StealTask::do_it;PSPromotionManager::drain_stacks_depth;oopDesc* PSPromotionManager::copy_to_survivor_space<false>;InstanceKlass::oop_push_contents 1 | |||||
| java;start_thread;java_start;GCTaskThread::run;StealTask::do_it;ParallelTaskTerminator::offer_termination 5 | |||||
| java;start_thread;java_start;GCTaskThread::run;StealTask::do_it;SpinPause 7 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/buffer/AbstractByteBufAllocator:.directBuffer_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/AbstractReferenceCountedByteBuf:.release_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];io/netty/buffer/PooledByteBuf:.internalNioBuffer_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/NativeThread:.current_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j]; 3 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];Java_sun_nio_ch_FileDispatcherImpl_write0 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;sys_write_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];fget_light_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];__srcu_read_lock_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];__tcp_push_pending_frames_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];ktime_get_real_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];skb_clone_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_set_skb_tso_segs_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_hard_start_xmit_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_pick_tx_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];dev_hard_start_xmit_[k];dev_queue_xmit_nit_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];dev_hard_start_xmit_[k];loopback_xmit_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];dev_hard_start_xmit_[k];loopback_xmit_[k];netif_rx_[k];netif_rx.part.82_[k];xen_restore_fl_direct_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];dev_hard_start_xmit_[k];loopback_xmit_[k];netif_rx_[k];netif_rx.part.82_[k];xen_restore_fl_direct_end_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];dma_issue_pending_all_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];__inet_lookup_established_[k] 3 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_event_data_recv_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];sock_def_readable_[k];__wake_up_sync_key_[k];check_events_[k];hypercall_page_[k] 19 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k] 3 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];bictcp_acked_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];ktime_get_real_[k];getnstimeofday_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];ktime_get_real_[k];getnstimeofday_[k];xen_clocksource_get_cycles_[k];xen_clocksource_read_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];tcp_rtt_estimator_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];tcp_valid_rtt_meas_[k];tcp_rtt_estimator_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_finish_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];rcu_bh_qs_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];netif_skb_features_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_output_[k] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ktime_get_real_[k];getnstimeofday_[k];xen_clocksource_get_cycles_[k];pvclock_clocksource_read_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ktime_get_real_[k];getnstimeofday_[k];xen_clocksource_get_cycles_[k];xen_clocksource_read_[k];pvclock_clocksource_read_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ktime_get_real_[k];xen_clocksource_get_cycles_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];skb_dst_set_noref_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];lock_sock_nested_[k];_raw_spin_lock_bh_[k];local_bh_disable_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];__kmalloc_node_track_caller_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];__kmalloc_node_track_caller_[k];arch_local_irq_save_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];__phys_addr_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];get_slab_[k] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];kmem_cache_alloc_node_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];ksize_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];tcp_send_mss_[k];tcp_current_mss_[k];ipv4_mtu_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];tcp_send_mss_[k];tcp_current_mss_[k];tcp_established_options_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];tcp_send_mss_[k];tcp_xmit_size_goal_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];tcp_xmit_size_goal_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];fsnotify_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];fsnotify_[k];__srcu_read_lock_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];rw_verify_area_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];rw_verify_area_[k];apparmor_file_permission_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];rw_verify_area_[k];security_file_permission_[k];apparmor_file_permission_[k];common_file_perm_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];sock_aio_write_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/SocketChannelImpl:.writerCleanup_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.writerCleanup_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/util/Recycler:.recycle_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/buffer/AbstractReferenceCountedByteBuf:.release_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];java/util/concurrent/ConcurrentHashMap:.get_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/mozilla/javascript/Context:.getWrapFactory_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j] 3 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/ScriptableObject:.getParentScope_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/WrapFactory:.wrapAsJavaObject_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/WrapFactory:.wrapAsJavaObject_[j];java/util/HashMap:.get_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/WrapFactory:.wrap_[j];java/util/HashMap:.get_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j];org/mozilla/javascript/ScriptableObject$RelinkedSlot:.getValue_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j];vtable chunks_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.nameOrFunction_[j];org/mozilla/javascript/ScriptableObject$Slot:.getValue_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.name_[j];org/mozilla/javascript/IdScriptableObject:.get_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getPropFunctionAndThis_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.findInstanceIdInfo_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.has_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.has_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.setAttributes_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/MemberBox:.invoke_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/WrapFactory:.wrap_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.findFunction_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaObject:.get_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.get_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.setAttributes_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j];org/mozilla/javascript/ScriptableObject$Slot:.getValue_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getPropFunctionAndThis_[j];org/mozilla/javascript/NativeJavaObject:.get_[j];java/util/HashMap:.get_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];jint_disjoint_arraycopy_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.get_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.has_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.setAttributes_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.get_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.nameOrFunction_[j];org/mozilla/javascript/IdScriptableObject:.get_[j];org/mozilla/javascript/ScriptableObject$RelinkedSlot:.getValue_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.findInstanceIdInfo_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 3 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];vtable chunks_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/NativeFunction:.initScriptFunction_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.get_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.has_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 6 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptableObject:.getParentScope_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.has_[j] 4 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.has_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 5 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 6 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptableObject:.getPrototype_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptableObject:.getParentScope_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/TopLevel:.getBuiltinPrototype_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/ScriptRuntime:.name_[j];org/mozilla/javascript/ScriptRuntime:.nameOrFunction_[j];vtable chunks_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.has_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.setAttributes_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/TopLevel:.getBuiltinPrototype_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/ScriptRuntime:.indexFromString_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/ScriptRuntime:.setObjectElem_[j];org/mozilla/javascript/ScriptRuntime:.indexFromString_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];io/netty/handler/codec/http/DefaultHttpHeaders:.set_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j] 3 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/buffer/AbstractByteBuf:.writeBytes_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/handler/codec/http/HttpObjectEncoder:.encode_[j];io/netty/buffer/AbstractByteBuf:.writeBytes_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/handler/codec/http/HttpObjectEncoder:.encode_[j];io/netty/buffer/AbstractByteBufAllocator:.directBuffer_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/handler/codec/http/HttpObjectEncoder:.encode_[j];io/netty/buffer/AbstractByteBufAllocator:.directBuffer_[j];io/netty/util/concurrent/FastThreadLocal:.get_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/handler/codec/http/HttpObjectEncoder:.encode_[j];java/util/ArrayList:.add_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/util/internal/RecyclableArrayList:.newInstance_[j];io/netty/util/concurrent/FastThreadLocal:.get_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];java/util/ArrayList:.ensureExplicitCapacity_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];vtable chunks_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/handler/codec/http/DefaultHttpHeaders:.add0_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/handler/codec/http/DefaultHttpHeaders:.set_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];sun/nio/cs/UTF_8$Encoder:.<init>_[j];jbyte_disjoint_arraycopy_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.name_[j];org/mozilla/javascript/ScriptRuntime:.nameOrFunction_[j];org/mozilla/javascript/IdScriptableObject:.get_[j];org/mozilla/javascript/ScriptableObject$RelinkedSlot:.getValue_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/buffer/AbstractByteBuf:.forEachByteAsc0_[j];io/netty/util/internal/AppendableCharSequence:.append_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpHeaders:.isTransferEncodingChunked_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.findWhitespace_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j];io/netty/buffer/AbstractByteBuf:.forEachByteAsc0_[j] 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j];io/netty/handler/codec/http/HttpHeaders:.hash_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j];io/netty/handler/codec/http/HttpObjectDecoder:.splitHeader_[j] 5 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j];java/util/Arrays:.fill_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];java/nio/channels/spi/AbstractInterruptibleChannel:.end_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read 2 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;sys_read_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];do_sync_read_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];__kfree_skb_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_rcv_space_adjust_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];__kfree_skb_[k];skb_release_data_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];__kfree_skb_[k];skb_release_head_state_[k];dst_release_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];_raw_spin_lock_bh_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];skb_copy_datagram_iovec_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];skb_copy_datagram_iovec_[k];copy_user_enhanced_fast_string_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];tcp_cleanup_rbuf_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];tcp_cleanup_rbuf_[k];__tcp_select_window_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];rw_verify_area_[k] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j] 1 | |||||
| java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j] 1 | |||||
| java;start_thread;java_start;VMThread::run;VMThread::loop;VMThread::evaluate_operation;VM_Operation::evaluate;VM_ParallelGCFailedAllocation::doit;ParallelScavengeHeap::failed_mem_allocate;PSScavenge::invoke;PSScavenge::invoke_no_policy;PSIsAliveClosure::do_object_b 1 | |||||
| java;start_thread;java_start;VMThread::run;VMThread::loop;VMThread::evaluate_operation;VM_Operation::evaluate;VM_ParallelGCFailedAllocation::doit;ParallelScavengeHeap::failed_mem_allocate;PSScavenge::invoke;PSScavenge::invoke_no_policy;StringTable::unlink_or_oops_do 2 | |||||
| java;start_thread;java_start;VMThread::run;VMThread::loop;VMThread::evaluate_operation;VM_Operation::evaluate;VM_ParallelGCFailedAllocation::doit;ParallelScavengeHeap::failed_mem_allocate;PSScavenge::invoke;PSScavenge::invoke_no_policy;pthread_cond_signal@@GLIBC_2.3.2;system_call_fastpath_[k];sys_futex_[k];do_futex_[k];futex_wake_op_[k] 1 | |||||
| java;write;check_events_[k];hypercall_page_[k] 3 | |||||
| @@ -0,0 +1,3 @@ | |||||
| speedscope@1.5.2 | |||||
| Thu Oct 10 18:34:24 PDT 2019 | |||||
| c3074b73436eddc789b96d0142c6ee56b34ff399 | |||||
| @@ -0,0 +1 @@ | |||||
| a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}html{overflow:hidden}body,html{height:100%}body{overflow:auto} | |||||
| @@ -1,88 +0,0 @@ | |||||
| import pandas as pd | |||||
| import plotly.graph_objs as go | |||||
| call_depths = [0] | |||||
| datas = [] | |||||
| def ensure_big_enough(list, idx, el): | |||||
| l = len(list) | |||||
| if (idx >= l): | |||||
| list.extend([el]*(idx-l+1)) | |||||
| def incr_call_depth(thread): | |||||
| ensure_big_enough(call_depths, thread, 0) | |||||
| call_depths[thread] += 1 | |||||
| def append_to_datas(thread, data): | |||||
| ensure_big_enough(datas, thread, []) | |||||
| datas[thread].append(data) | |||||
| with open("../src/profiler_reports/04.10.2019-13.29.21-140737348403048-profiler.report", "r") as file: | |||||
| for line in file: | |||||
| infos = line.split() | |||||
| if infos[1] == "->": | |||||
| incr_call_depth(thread) | |||||
| append_to_datas(thread, { | |||||
| "task": f"[T{thread}] - {'{:03d}'.format(call_depths[thread])}", | |||||
| "start": int(infos[5]), | |||||
| "end": None | |||||
| }) | |||||
| elif infos[1] == "<-": | |||||
| call_depths[thread] -= 1 | |||||
| for set in datas[thread][::-1]: | |||||
| if set["end"] == None: | |||||
| set["end"] = int(infos[2]) | |||||
| break | |||||
| else: | |||||
| print("couldn't find task that finished") | |||||
| break | |||||
| else: | |||||
| print("neither -> nor <-") | |||||
| fig = go.Figure( | |||||
| layout = { | |||||
| 'barmode': 'stack', | |||||
| "dragmode" : "pan", | |||||
| } | |||||
| ) | |||||
| flat_datas= [item for sublist in datas for item in sublist] | |||||
| # i = 1 | |||||
| # df = flat_datas[:20] | |||||
| # for call in df: | |||||
| # name = call["task"] | |||||
| # start = call["start"] | |||||
| # end = call["end"] | |||||
| # duration = end,start | |||||
| # fig.add_bar(x=(i,duration), | |||||
| # y=(i,name), | |||||
| # base=(i,start), | |||||
| # orientation='h', | |||||
| # showlegend=False, | |||||
| # name=name, | |||||
| # hovertext=f"yes", | |||||
| # text="" | |||||
| # ) | |||||
| # i += 1 | |||||
| df = pd.DataFrame(flat_datas[:20]) | |||||
| df['duration'] = df['end'] - df['start'] | |||||
| for stackdepth, stackdepth_df in df.groupby('task'): | |||||
| params = {"x": stackdepth_df.duration, | |||||
| "y": stackdepth_df.task, | |||||
| "name": stackdepth, | |||||
| "base": stackdepth_df.start | |||||
| } | |||||
| print(params) | |||||
| fig.add_bar(**params, | |||||
| orientation='h', | |||||
| showlegend=False, | |||||
| hovertext=f"yes", | |||||
| text="" | |||||
| ) | |||||
| fig.show(config={'scrollZoom': True}) | |||||
| @@ -1,21 +0,0 @@ | |||||
| #lang racket | |||||
| (require racket/gui mrlib/snip-canvas plot) | |||||
| (define ((make-current-value-renderer fn) snip event x y) | |||||
| (define overlays | |||||
| (and x y (eq? (send event get-event-type) 'motion) | |||||
| (list (vrule x #:style 'long-dash) | |||||
| (point-label (vector x (fn x)) #:anchor 'auto)))) | |||||
| (send snip set-overlay-renderers overlays)) | |||||
| (define (make-plot-snip width height) | |||||
| (define snip (plot-snip (function sin) | |||||
| #:x-min 0 #:x-max (* 2 pi) #:y-min -1.5 #:y-max 1.5 | |||||
| #:width width #:height height)) | |||||
| (send snip set-mouse-event-callback (make-current-value-renderer sin)) | |||||
| snip) | |||||
| (define toplevel (new frame% [label "Plot"] [width 500] [height 200])) | |||||
| (define canvas (new snip-canvas% [parent toplevel] [make-snip make-plot-snip])) | |||||
| (send toplevel show #t) | |||||
| @@ -1,173 +0,0 @@ | |||||
| #!/usr/bin/env python3 | |||||
| # -*- coding: utf-8-unix -*- | |||||
| import datetime | |||||
| import gantt | |||||
| # Change font default | |||||
| gantt.define_font_attributes(fill='black', | |||||
| stroke='black', | |||||
| stroke_width=0, | |||||
| font_family="Verdana") | |||||
| # Add vacations for everyone | |||||
| gantt.add_vacations(datetime.date(2014, 12, 25)) | |||||
| gantt.add_vacations(datetime.date(2015, 1, 1)) | |||||
| gantt.add_vacations(datetime.date(2015, 1, 13)) | |||||
| # Create two resources | |||||
| rANO = gantt.Resource('ANO') | |||||
| rJLS = gantt.Resource('JLS') | |||||
| # Add vacations for one lucky resource | |||||
| rANO.add_vacations( | |||||
| dfrom=datetime.date(2014, 12, 29), | |||||
| dto=datetime.date(2015, 1, 4) | |||||
| ) | |||||
| rANO.add_vacations( | |||||
| dfrom=datetime.date(2015, 1, 6), | |||||
| dto=datetime.date(2015, 1, 8) | |||||
| ) | |||||
| # Test if this resource is avalaible for some dates | |||||
| print(rANO.is_available(datetime.date(2015, 1, 5))) | |||||
| print(rANO.is_available(datetime.date(2015, 1, 8))) | |||||
| print(rANO.is_available(datetime.date(2015, 1, 6))) | |||||
| print(rANO.is_available(datetime.date(2015, 1, 2))) | |||||
| print(rANO.is_available(datetime.date(2015, 1, 1))) | |||||
| # Create some tasks | |||||
| t1 = gantt.Task(name='tache1', | |||||
| start=datetime.date(2014, 12, 25), | |||||
| duration=4, | |||||
| percent_done=44, | |||||
| resources=[rANO], | |||||
| color="#FF8080") | |||||
| t2 = gantt.Task(name='tache2', | |||||
| start=datetime.date(2014, 12, 28), | |||||
| duration=6, | |||||
| resources=[rJLS]) | |||||
| t7 = gantt.Task(name='tache7', | |||||
| start=datetime.date(2014, 12, 28), | |||||
| duration=5, | |||||
| percent_done=50) | |||||
| t3 = gantt.Task(name='tache3', | |||||
| start=datetime.date(2014, 12, 25), | |||||
| duration=4, | |||||
| depends_of=[t1, t7, t2], | |||||
| resources=[rJLS]) | |||||
| t4 = gantt.Task(name='tache4', | |||||
| start=datetime.date(2015, 1, 1), | |||||
| duration=4, | |||||
| depends_of=t1, | |||||
| resources=[rJLS]) | |||||
| t5 = gantt.Task(name='tache5', | |||||
| start=datetime.date(2014, 12, 23), | |||||
| duration=3) | |||||
| t6 = gantt.Task(name='tache6', | |||||
| start=datetime.date(2014, 12, 25), | |||||
| duration=4, | |||||
| depends_of=t7, | |||||
| resources=[rANO]) | |||||
| t8 = gantt.Task(name='tache8', | |||||
| start=datetime.date(2014, 12, 25), | |||||
| duration=4, | |||||
| depends_of=t7, | |||||
| resources=[rANO, rJLS]) | |||||
| # Create a project | |||||
| p1 = gantt.Project(name='Projet 1') | |||||
| # Add tasks to this project | |||||
| p1.add_task(t1) | |||||
| p1.add_task(t7) | |||||
| p1.add_task(t2) | |||||
| p1.add_task(t3) | |||||
| p1.add_task(t5) | |||||
| p1.add_task(t8) | |||||
| # Create another project | |||||
| p2 = gantt.Project(name='Projet 2', color='#FFFF40') | |||||
| # Add tasks to this project | |||||
| p2.add_task(t2) | |||||
| p2.add_task(t4) | |||||
| # Create another project | |||||
| p = gantt.Project(name='Gantt') | |||||
| # wich contains the first two projects | |||||
| # and a single task | |||||
| p.add_task(p1) | |||||
| p.add_task(p2) | |||||
| p.add_task(t6) | |||||
| # Test cases for milestones | |||||
| # Create another project | |||||
| ptcm = gantt.Project(name='Test case for milestones') | |||||
| tcm11 = gantt.Task(name='tcm11', | |||||
| start=datetime.date(2014, 12, 25), | |||||
| duration=4) | |||||
| tcm12 = gantt.Task(name='tcm12', | |||||
| start=datetime.date(2014, 12, 26), | |||||
| duration=5) | |||||
| ms1 = gantt.Milestone(name=' ', | |||||
| depends_of=[tcm11, tcm12]) | |||||
| tcm21 = gantt.Task(name='tcm21', | |||||
| start=datetime.date(2014, 12, 30), | |||||
| duration=4, | |||||
| depends_of=[ms1]) | |||||
| tcm22 = gantt.Task(name='tcm22', | |||||
| start=datetime.date(2014, 12, 30), | |||||
| duration=6, | |||||
| depends_of=[ms1]) | |||||
| ms2 = gantt.Milestone(name='MS2', | |||||
| depends_of=[ms1, tcm21, tcm22]) | |||||
| tcm31 = gantt.Task(name='tcm31', | |||||
| start=datetime.date(2014, 12, 30), | |||||
| duration=6, | |||||
| depends_of=[ms2]) | |||||
| ms3 = gantt.Milestone(name='MS3', depends_of=[ms1]) | |||||
| ptcm.add_task(tcm11) | |||||
| ptcm.add_task(tcm12) | |||||
| ptcm.add_task(ms1) | |||||
| ptcm.add_task(tcm21) | |||||
| ptcm.add_task(tcm22) | |||||
| ptcm.add_task(ms2) | |||||
| ptcm.add_task(tcm31) | |||||
| ptcm.add_task(ms3) | |||||
| p.add_task(ptcm) | |||||
| ##########################$ MAKE DRAW ############### | |||||
| p.make_svg_for_tasks(filename='test_full.svg', | |||||
| today=datetime.date(2014, 12, 31), | |||||
| start=datetime.date(2014, 8, 22), | |||||
| end=datetime.date(2015, 1, 14)) | |||||
| p.make_svg_for_tasks(filename='test_full2.svg', | |||||
| today=datetime.date(2014, 12, 31)) | |||||
| p.make_svg_for_tasks(filename='test.svg', | |||||
| today=datetime.date(2014, 12, 31), | |||||
| start=datetime.date(2015, 1, 3), | |||||
| end=datetime.date(2015, 1, 6)) | |||||
| p1.make_svg_for_tasks(filename='test_p1.svg', | |||||
| today=datetime.date(2014, 12, 31)) | |||||
| p2.make_svg_for_tasks(filename='test_p2.svg', | |||||
| today=datetime.date(2014, 12, 31)) | |||||
| p.make_svg_for_resources(filename='test_resources.svg', | |||||
| today=datetime.date(2014, 12, 31), | |||||
| resources=[rANO, rJLS]) | |||||
| p.make_svg_for_tasks(filename='test_weekly.svg', | |||||
| today=datetime.date(2014, 12, 31), | |||||
| scale=gantt.DRAW_WITH_WEEKLY_SCALE) | |||||
| ##########################$ /MAKE DRAW ############### | |||||
| @@ -0,0 +1,54 @@ | |||||
| /** | |||||
| Usage of the create_error_macros: | |||||
| */ | |||||
| #define __create_error(keyword, ...) \ | |||||
| create_error( \ | |||||
| __FUNCTION__, __FILE__, __LINE__, \ | |||||
| Memory::get_keyword(keyword), \ | |||||
| __VA_ARGS__) | |||||
| #define create_out_of_memory_error(...) \ | |||||
| __create_error("out-of-memory", __VA_ARGS__) | |||||
| #define create_generic_error(...) \ | |||||
| __create_error("generic", __VA_ARGS__) | |||||
| #define create_not_yet_implemented_error() \ | |||||
| __create_error("not-yet-implemented", "This feature has not yet been implemented.") | |||||
| #define create_parsing_error(...) \ | |||||
| __create_error("parsing-error", __VA_ARGS__) | |||||
| #define create_symbol_undefined_error(...) \ | |||||
| __create_error("symbol-undefined", __VA_ARGS__) | |||||
| #define create_type_missmatch_error(expected, actual) \ | |||||
| __create_error("type-missmatch", \ | |||||
| "Type missmatch: expected %s, got %s", \ | |||||
| expected, actual) | |||||
| #ifdef _DEBUG | |||||
| #define assert_type(_node, _type) \ | |||||
| do { \ | |||||
| if (Memory::get_type(_node) != _type) { \ | |||||
| create_type_missmatch_error( \ | |||||
| Lisp_Object_Type_to_string(_type), \ | |||||
| Lisp_Object_Type_to_string(Memory::get_type(_node))); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #define assert(condition) \ | |||||
| do { \ | |||||
| if (!(condition)) { \ | |||||
| create_generic_error("Assertion-error."); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #else | |||||
| # define assert_arguments_length(expected, actual) do {} while (0) | |||||
| # define assert_arguments_length_less_equal(expected, actual) do {} while (0) | |||||
| # define assert_arguments_length_greater_equal(expected, actual) do {} while (0) | |||||
| # define assert_type(_node, _type) do {} while (0) | |||||
| # define assert(condition) do {} while (0) | |||||
| #endif | |||||
| @@ -0,0 +1,153 @@ | |||||
| #define concat_( a, b) a##b | |||||
| #define label(prefix, lnum) concat_(prefix,lnum) | |||||
| #define log_location() \ | |||||
| do { \ | |||||
| if (Globals::log_level == Log_Level::Debug) { \ | |||||
| printf("in"); \ | |||||
| int spacing = 30-((int)strlen(__FILE__) + (int)log10(__LINE__));\ | |||||
| if (spacing < 1) spacing = 1; \ | |||||
| for (int i = 0; i < spacing;++i) \ | |||||
| printf(" "); \ | |||||
| printf("%s (%d) ", __FILE__, __LINE__); \ | |||||
| printf("-> %s\n",__FUNCTION__); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #define if_error_log_location_and_return(val) \ | |||||
| do { \ | |||||
| if (Globals::error) { \ | |||||
| log_location(); \ | |||||
| return val; \ | |||||
| } \ | |||||
| } while(0) | |||||
| #ifdef _DEBUG | |||||
| #define try_or_else_return(val) \ | |||||
| if (1) \ | |||||
| goto label(body,__LINE__); \ | |||||
| else \ | |||||
| while (1) \ | |||||
| if (1) { \ | |||||
| if (Globals::error) { \ | |||||
| log_location(); \ | |||||
| return val; \ | |||||
| } \ | |||||
| break; \ | |||||
| } \ | |||||
| else label(body,__LINE__): | |||||
| ; | |||||
| #else | |||||
| #define try_or_else_return(val) | |||||
| #endif | |||||
| #define try_struct try_or_else_return({}) | |||||
| #define try_void try_or_else_return() | |||||
| #define try try_or_else_return(0) | |||||
| #define dont_break_on_errors fluid_let(Globals::breaking_on_errors, false) | |||||
| #define ignore_logging fluid_let(Globals::log_level, Log_Level::None) | |||||
| #define fetch1(var) \ | |||||
| Lisp_Object* var##_symbol = Memory::get_symbol(#var); \ | |||||
| Lisp_Object* var = lookup_symbol(var##_symbol, get_current_environment()); \ | |||||
| if_error_log_location_and_return(nullptr) | |||||
| #define fetch2(var1, var2) fetch1(var1); fetch1(var2) | |||||
| #define fetch3(var1, var2, var3) fetch2(var1, var2); fetch1(var3) | |||||
| #define fetch4(var1, var2, var3, var4) fetch3(var1, var2, var3); fetch1(var4) | |||||
| #define fetch5(var1, var2, var3, var4, var5) fetch4(var1, var2, var3, var4); fetch1(var5) | |||||
| #define fetch6(var1, var2, var3, var4, var5, var6) fetch5(var1, var2, var3, var4, var5); fetch1(var6) | |||||
| #define fetch7(var1, var2, var3, var4, var5, var6, var7) fetch6(var1, var2, var3, var4, var5, var6); fetch1(var7) | |||||
| #define fetch8(var1, var2, var3, var4, var5, var6, var7, var8) fetch7(var1, var2, var3, var4, var5, var6, var7); fetch1(var8) | |||||
| #define fetch9(var1, var2, var3, var4, var5, var6, var7, var8, var9) fetch8(var1, var2, var3, var4, var5, var6, var7, var8); fetch1(var9) | |||||
| #define fetch10(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10) fetch9(var1, var2, var3, var4, var5, var6, var7, var8, var9); fetch1(var10) | |||||
| #define fetch11(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11) fetch10(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10); fetch1(var11) | |||||
| #define fetch12(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12) fetch11(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); fetch1(var12) | |||||
| #define fetch13(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13) fetch12(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12); fetch1(var13) | |||||
| #define fetch14(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14) fetch13(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13); fetch1(var14) | |||||
| #define fetch15(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15) fetch14(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14); fetch1(var15) | |||||
| #define fetch16(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16) fetch15(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15); fetch1(var16) | |||||
| #define fetch17(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17) fetch16(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16); fetch1(var17) | |||||
| #define fetch18(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18) fetch17(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17); fetch1(var18) | |||||
| #define fetch19(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19) fetch18(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18); fetch1(var19) | |||||
| #define fetch20(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20) fetch19(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19); fetch1(var20) | |||||
| #define fetch21(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21) fetch20(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20); fetch1(var21) | |||||
| #define fetch22(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22) fetch21(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21); fetch1(var22) | |||||
| #define fetch23(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23) fetch22(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22); fetch1(var23) | |||||
| #define fetch24(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23, var24) fetch23(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23); fetch1(var24) | |||||
| #define GET_MACRO( \ | |||||
| _1, _2, _3, _4, _5, _6, \ | |||||
| _7, _8, _9, _10, _11, _12, \ | |||||
| _13, _14, _15, _16, _17, _18, \ | |||||
| _19, _20, _21, _22, _23, _24, \ | |||||
| NAME, ...) NAME | |||||
| #ifdef _MSC_VER | |||||
| #define EXPAND( x ) x | |||||
| #define fetch(...) EXPAND( \ | |||||
| GET_MACRO( \ | |||||
| __VA_ARGS__, \ | |||||
| fetch24, fetch23, fetch22, fetch21, fetch20, fetch19, \ | |||||
| fetch18, fetch17, fetch16, fetch15, fetch14, fetch13, \ | |||||
| fetch12, fetch11, fetch10, fetch9, fetch8, fetch7, \ | |||||
| fetch6, fetch5, fetch4, fetch3, fetch2, fetch1 \ | |||||
| )(__VA_ARGS__)) | |||||
| #else | |||||
| #define fetch(...) \ | |||||
| GET_MACRO( \ | |||||
| __VA_ARGS__, \ | |||||
| fetch24, fetch23, fetch22, fetch21, fetch20, fetch19, \ | |||||
| fetch18, fetch17, fetch16, fetch15, fetch14, fetch13, \ | |||||
| fetch12, fetch11, fetch10, fetch9, fetch8, fetch7, \ | |||||
| fetch6, fetch5, fetch4, fetch3, fetch2, fetch1 \ | |||||
| )(__VA_ARGS__) | |||||
| #endif | |||||
| // NOTE(Felix): we have to copy the string because we need it to be | |||||
| // mutable for the parser to work, because the parser relys on being | |||||
| // able to temporaily put in markers in the code and also it will fill | |||||
| // out the source code location | |||||
| #define _define_helper(def, docs, special) \ | |||||
| Parser::parser_file = file_name_built_ins; \ | |||||
| Parser::parser_line = __LINE__; \ | |||||
| Parser::parser_col = 0; \ | |||||
| auto label(params,__LINE__) = Parser::parse_single_expression( \ | |||||
| Memory::get_c_str(Memory::create_string(#def))); \ | |||||
| if_error_log_location_and_return(nullptr); \ | |||||
| assert_type(label(params,__LINE__), Lisp_Object_Type::Pair); \ | |||||
| assert_type(label(params,__LINE__)->value.pair.first, Lisp_Object_Type::Symbol); \ | |||||
| auto label(sym,__LINE__) = label(params,__LINE__)->value.pair.first; \ | |||||
| auto label(sfun,__LINE__) = Memory::create_lisp_object_cfunction(special); \ | |||||
| create_arguments_from_lambda_list_and_inject(label(params,__LINE__)->value.pair.rest, label(sfun,__LINE__)); \ | |||||
| if_error_log_location_and_return(nullptr); \ | |||||
| label(sfun,__LINE__)->docstring = Memory::create_string(docs); \ | |||||
| define_symbol(label(sym,__LINE__), label(sfun,__LINE__)); \ | |||||
| label(sfun,__LINE__)->value.cFunction->body = []() -> Lisp_Object* | |||||
| #define define(def, docs) _define_helper(def, docs, false) | |||||
| #define define_special(def, docs) _define_helper(def, docs, true) | |||||
| #define in_caller_env fluid_let( \ | |||||
| Globals::Current_Execution::envi_stack.next_index, \ | |||||
| Globals::Current_Execution::envi_stack.next_index-1) | |||||
| /* | |||||
| * iterate over lisp vectors | |||||
| */ | |||||
| #define for_lisp_vector(v) \ | |||||
| if (!v); else \ | |||||
| if (int it_index = 0); else \ | |||||
| for (auto it = v->value.vector.data; \ | |||||
| it_index < v->value.vector.length; \ | |||||
| it=v->value.vector.data+(++it_index)) | |||||
| /* | |||||
| * iterate over lisp lists | |||||
| */ | |||||
| #define for_lisp_list(l) \ | |||||
| if (!l); else \ | |||||
| if (int it_index = 0); else \ | |||||
| for (Lisp_Object* head = l, *it; \ | |||||
| Memory::get_type(head) == Lisp_Object_Type::Pair && (it = head->value.pair.first); \ | |||||
| head = head->value.pair.rest, ++it_index) | |||||
| @@ -1,4 +1,3 @@ | |||||
| #define new(type) new type | |||||
| #define proc auto | #define proc auto | ||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||
| @@ -7,7 +6,6 @@ | |||||
| # define if_debug if constexpr (false) | # define if_debug if constexpr (false) | ||||
| #endif | #endif | ||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||
| # define debug_break() if_debug __debugbreak() | # define debug_break() if_debug __debugbreak() | ||||
| # define if_windows if constexpr (true) | # define if_windows if constexpr (true) | ||||
| @@ -18,262 +16,8 @@ | |||||
| # define if_linux if constexpr (true) | # define if_linux if constexpr (true) | ||||
| #endif | #endif | ||||
| #define concat_( a, b) a##b | |||||
| #define label(prefix, lnum) concat_(prefix,lnum) | |||||
| #define try_or_else_return(val) \ | |||||
| if (1) \ | |||||
| goto label(body,__LINE__); \ | |||||
| else \ | |||||
| while (1) \ | |||||
| if (1) { \ | |||||
| if (Globals::error) { \ | |||||
| if (Globals::log_level == Log_Level::Debug) { \ | |||||
| printf("in %s:%d\n", __FILE__, __LINE__); \ | |||||
| } \ | |||||
| return val; \ | |||||
| } \ | |||||
| break; \ | |||||
| } \ | |||||
| else label(body,__LINE__): | |||||
| ; | |||||
| #define try_struct try_or_else_return({}) | |||||
| #define try_void try_or_else_return() | |||||
| #define try try_or_else_return(0) | |||||
| #define dont_break_on_errors fluid_let(Globals::breaking_on_errors, false) | |||||
| #define ignore_logging fluid_let(Globals::log_level, Log_Level::None) | |||||
| #define define_array_list(type, name) \ | |||||
| \ | |||||
| struct name##_Array_List { \ | |||||
| type* data; \ | |||||
| int length; \ | |||||
| int next_index; \ | |||||
| }; \ | |||||
| \ | |||||
| proc remove_index_from_array_list(name##_Array_List* arraylist, int index) -> void { \ | |||||
| arraylist->data[index] = \ | |||||
| arraylist->data[--(arraylist->next_index)]; \ | |||||
| } \ | |||||
| \ | |||||
| proc append_to_array_list(name##_Array_List* arraylist, type element) -> void { \ | |||||
| if (arraylist->next_index == arraylist->length) { \ | |||||
| arraylist->length *= 2; \ | |||||
| arraylist->data = \ | |||||
| (type*)realloc(arraylist->data, arraylist->length * sizeof(type)); \ | |||||
| } \ | |||||
| arraylist->data[arraylist->next_index] = element; \ | |||||
| arraylist->next_index++; \ | |||||
| } \ | |||||
| \ | |||||
| proc _merge_array_lists(name##_Array_List* arr, int start, int mid, int end) -> void { \ | |||||
| int start2 = mid + 1; \ | |||||
| \ | |||||
| /* If the direct merge is already sorted */ \ | |||||
| if ((size_t)arr->data[mid] <= (size_t)arr->data[start2]) { \ | |||||
| return; \ | |||||
| } \ | |||||
| \ | |||||
| /* Two pointers to maintain start of both arrays to merge */ \ | |||||
| while (start <= mid && start2 <= end) { \ | |||||
| if ((size_t)arr->data[start] <= (size_t)arr->data[start2]) { \ | |||||
| start++; \ | |||||
| } \ | |||||
| else { \ | |||||
| type value = arr->data[start2]; \ | |||||
| int index = start2; \ | |||||
| \ | |||||
| /* Shift all the elements between element 1; element 2, right by 1. */ \ | |||||
| while (index != start) { \ | |||||
| arr->data[index] = arr->data[index - 1]; \ | |||||
| index--; \ | |||||
| } \ | |||||
| arr->data[start] = value; \ | |||||
| \ | |||||
| /* Update all the pointers */ \ | |||||
| start++; \ | |||||
| mid++; \ | |||||
| start2++; \ | |||||
| } \ | |||||
| } \ | |||||
| } \ | |||||
| \ | |||||
| proc sort_array_list(name##_Array_List* arraylist, int left=-1, int right=-1) -> void { \ | |||||
| if (left == -1) { \ | |||||
| sort_array_list(arraylist, 0, arraylist->next_index - 1); \ | |||||
| return; \ | |||||
| } else if (left == right) { \ | |||||
| return; \ | |||||
| } \ | |||||
| \ | |||||
| int middle = left + (right-left) / 2; \ | |||||
| \ | |||||
| sort_array_list(arraylist, left, middle); \ | |||||
| sort_array_list(arraylist, middle+1, right); \ | |||||
| \ | |||||
| _merge_array_lists(arraylist, left, middle, right); \ | |||||
| } \ | |||||
| \ | |||||
| proc sorted_array_list_find(name##_Array_List* arraylist, type elem, int left=-1, int right=-1) -> int { \ | |||||
| if (left == -1) { \ | |||||
| return sorted_array_list_find(arraylist, elem, 0, arraylist->next_index - 1); \ | |||||
| } else if (left == right) { \ | |||||
| if ((size_t)arraylist->data[left] == (size_t)elem) \ | |||||
| return left; \ | |||||
| return -1; \ | |||||
| } else if (right < left) \ | |||||
| return -1; \ | |||||
| \ | |||||
| int middle = left + (right-left) / 2; \ | |||||
| \ | |||||
| if ((size_t)arraylist->data[middle] < (size_t)elem) \ | |||||
| return sorted_array_list_find(arraylist, elem, middle+1, right); \ | |||||
| if ((size_t)arraylist->data[middle] > (size_t)elem) \ | |||||
| return sorted_array_list_find(arraylist, elem, left, middle-1); \ | |||||
| return middle; \ | |||||
| } \ | |||||
| \ | |||||
| proc create_##name##_array_list(int initial_capacity = 16) -> name##_Array_List { \ | |||||
| name##_Array_List ret; \ | |||||
| ret.data = (type*)malloc(initial_capacity * sizeof(type)); \ | |||||
| ret.next_index = 0; \ | |||||
| ret.length = initial_capacity; \ | |||||
| return ret; \ | |||||
| } | |||||
| /* | |||||
| * iterate over array lists | |||||
| */ | |||||
| #define for_array_list(l) \ | |||||
| if (int it_index = 0); else \ | |||||
| for (auto it = (l).data[0]; \ | |||||
| it_index < (l).next_index; \ | |||||
| it=(l).data[++it_index]) | |||||
| /* | |||||
| * iterate over lisp vectors | |||||
| */ | |||||
| #define for_lisp_vector(v) \ | |||||
| if (!v); else \ | |||||
| if (int it_index = 0); else \ | |||||
| for (auto it = v->value.vector.data; \ | |||||
| it_index < v->value.vector.length; \ | |||||
| it=v->value.vector.data+(++it_index)) | |||||
| /* | |||||
| * iterate over lisp lists | |||||
| */ | |||||
| #define for_lisp_list(l) \ | |||||
| if (!l); else \ | |||||
| if (int it_index = 0); else \ | |||||
| for (Lisp_Object* head = l, *it; \ | |||||
| Memory::get_type(head) == Lisp_Object_Type::Pair && (it = head->value.pair.first); \ | |||||
| head = head->value.pair.rest, ++it_index) | |||||
| /** | |||||
| Usage of the create_error_macros: | |||||
| */ | |||||
| #define __create_error(keyword, ...) \ | |||||
| create_error( \ | |||||
| __FILE__, __LINE__, \ | |||||
| Memory::get_or_create_lisp_object_keyword(keyword), \ | |||||
| __VA_ARGS__) | |||||
| #define create_out_of_memory_error(...) \ | |||||
| __create_error("out-of-memory", __VA_ARGS__) | |||||
| #define create_generic_error(...) \ | |||||
| __create_error("generic", __VA_ARGS__) | |||||
| #define create_not_yet_implemented_error() \ | |||||
| __create_error("not-yet-implemented", "This feature has not yet been implemented.") | |||||
| #define create_parsing_error(...) \ | |||||
| __create_error("parsing-error", __VA_ARGS__) | |||||
| #define create_symbol_undefined_error(...) \ | |||||
| __create_error("symbol-undefined", __VA_ARGS__) | |||||
| #define create_type_missmatch_error(expected, actual) \ | |||||
| __create_error("type-missmatch", \ | |||||
| "Type missmatch: expected %s, got %s", \ | |||||
| expected, actual) | |||||
| #define create_wrong_number_of_arguments_error(expected, actual) \ | |||||
| __create_error("wrong-number-of-arguments", \ | |||||
| "Wrong number of arguments: expected %d, got %d", \ | |||||
| expected, actual) | |||||
| #define create_too_many_arguments_error(expected, actual) \ | |||||
| __create_error("wrong-number-of-arguments", \ | |||||
| "Wrong number of arguments: expected less or equal to %d, got %d", \ | |||||
| expected, actual) | |||||
| #define create_too_few_arguments_error(expected, actual) \ | |||||
| __create_error("wrong-number-of-arguments", \ | |||||
| "Wrong number of arguments: expected greater or equal to %d, got %d", \ | |||||
| expected, actual) | |||||
| #define assert_arguments_length(expected, actual) \ | |||||
| do { \ | |||||
| if (expected != actual) { \ | |||||
| create_wrong_number_of_arguments_error(expected, actual); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #define assert_arguments_length_less_equal(expected, actual) \ | |||||
| do { \ | |||||
| if (expected < actual) { \ | |||||
| create_too_many_arguments_error(expected, actual); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #define assert_arguments_length_greater_equal(expected, actual) \ | |||||
| do { \ | |||||
| if (expected > actual) { \ | |||||
| create_too_few_arguments_error(expected, actual); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #define assert_type(_node, _type) \ | |||||
| do { \ | |||||
| if (Memory::get_type(_node) != _type) { \ | |||||
| create_type_missmatch_error( \ | |||||
| Lisp_Object_Type_to_string(_type), \ | |||||
| Lisp_Object_Type_to_string(Memory::get_type(_node))); \ | |||||
| } \ | |||||
| } while(0) | |||||
| #define assert(condition) \ | |||||
| do { \ | |||||
| if (!(condition)) { \ | |||||
| create_generic_error("Assertion-error."); \ | |||||
| } \ | |||||
| } while(0) | |||||
| /* | |||||
| #define assert(cond) \ | |||||
| if_debug { \ | |||||
| if (!cond) { \ | |||||
| if (log_level == Log_Level::Debug) { \ | |||||
| printf("Assertion failed: %s %d", __FILE__, __LINE__); \ | |||||
| } \ | |||||
| debug_break(); \ | |||||
| } \ | |||||
| } else {} \ | |||||
| */ | |||||
| #define console_normal "\x1B[0m" | #define console_normal "\x1B[0m" | ||||
| #define console_red "\x1B[31m" | #define console_red "\x1B[31m" | ||||
| #define console_green "\x1B[32m" | #define console_green "\x1B[32m" | ||||
| #define console_cyan "\x1B[36m" | #define console_cyan "\x1B[36m" | ||||
| // #define console_normal "" | |||||
| // #define console_red "" | |||||
| // #define console_green "" | |||||
| // #define console_cyan "" | |||||
| @@ -1,157 +1,146 @@ | |||||
| // proc generate_docs(String* path) -> void { | |||||
| // FILE *f = fopen(Memory::get_c_str(path), "w"); | |||||
| // if (!f) { | |||||
| // create_generic_error("The file for writing the documentation (%s) " | |||||
| // "could not be opened for writing.", Memory::get_c_str(path)); | |||||
| // return; | |||||
| // } | |||||
| // defer { | |||||
| // fclose(f); | |||||
| // }; | |||||
| namespace Slime { | |||||
| proc generate_docs(String* path) -> void { | |||||
| FILE *f = fopen(Memory::get_c_str(path), "w"); | |||||
| if (!f) { | |||||
| create_generic_error("The file for writing the documentation (%s) " | |||||
| "could not be opened for writing.", Memory::get_c_str(path)); | |||||
| return; | |||||
| } | |||||
| defer { | |||||
| fclose(f); | |||||
| }; | |||||
| // Environment_Array_List visited = create_Environment_array_list(); | |||||
| Array_List<Environment*> visited; | |||||
| // // recursive inner funciton | |||||
| // std::function<void(Environment*, char* prefix)> print_this_env; | |||||
| // print_this_env = [&](Environment* env, char* prefix) -> void { | |||||
| // bool we_already_printed = false; | |||||
| // // TODO(Felix): Make a generic array_list_contains function | |||||
| // for_array_list(visited) { | |||||
| // if (it == env) { | |||||
| // we_already_printed = true; | |||||
| // break; | |||||
| // } | |||||
| // } | |||||
| // if (!we_already_printed) { | |||||
| // printf("Working ion env::::"); | |||||
| // print_environment(env); | |||||
| // printf("\n--------------------------------\n"); | |||||
| // append_to_array_list(&visited, env); | |||||
| const auto print_this_env = [&](const auto& rec, Environment* env, char* prefix) -> void { | |||||
| bool we_already_printed = false; | |||||
| // TODO(Felix): Make a generic array_list_contains function | |||||
| for(auto it : visited) { | |||||
| if (it == env) { | |||||
| we_already_printed = true; | |||||
| break; | |||||
| } | |||||
| } | |||||
| if (!we_already_printed) { | |||||
| // printf("Working on env::::"); | |||||
| // print_environment(env); | |||||
| // printf("\n--------------------------------\n"); | |||||
| visited.append(env); | |||||
| // push_environment(env); | |||||
| // defer { | |||||
| // pop_environment(); | |||||
| // }; | |||||
| push_environment(env); | |||||
| defer { | |||||
| pop_environment(); | |||||
| }; | |||||
| // for (int i = 0; i < env->next_index; ++i) { | |||||
| // fprintf(f, "\\hrule\n* =%s%s= \n" | |||||
| // // " :PROPERTIES:\n" | |||||
| // // " :UNNUMBERED: t\n" | |||||
| // // " :END:" | |||||
| // ,prefix, env->keys[i]); | |||||
| // /* | |||||
| // * sourcecodeLocation | |||||
| // */ | |||||
| // if (env->values[i]->sourceCodeLocation) { | |||||
| // try_void fprintf(f, "\n - defined in :: =%s:%d:%d=", | |||||
| // Memory::get_c_str(env->values[i]->sourceCodeLocation->file), | |||||
| // env->values[i]->sourceCodeLocation->line, | |||||
| // env->values[i]->sourceCodeLocation->column); | |||||
| // } | |||||
| // /* | |||||
| // * type | |||||
| // */ | |||||
| // Lisp_Object_Type type = Memory::get_type(env->values[i]); | |||||
| // Lisp_Object* LOtype; | |||||
| // try_void LOtype = eval_expr(Memory::create_list( | |||||
| // Memory::get_or_create_lisp_object_symbol("type"), | |||||
| // env->values[i])); | |||||
| for_hash_map(env->hm) { | |||||
| try_void fprintf(f, | |||||
| "#+latex: \\hrule\n" | |||||
| "#+html: <hr/>\n" | |||||
| "* =%s%s= \n" | |||||
| " :PROPERTIES:\n" | |||||
| " :UNNUMBERED: t\n" | |||||
| " :END:" | |||||
| ,prefix, Memory::get_c_str(((Lisp_Object*)key)->value.symbol)); | |||||
| /* | |||||
| * sourcecodeLocation | |||||
| */ | |||||
| if (value->sourceCodeLocation) { | |||||
| try_void fprintf(f, "\n - defined in :: =%s:%d:%d=", | |||||
| Memory::get_c_str(value->sourceCodeLocation->file), | |||||
| value->sourceCodeLocation->line, | |||||
| value->sourceCodeLocation->column); | |||||
| } | |||||
| /* | |||||
| * type | |||||
| */ | |||||
| Lisp_Object_Type type = Memory::get_type(value); | |||||
| Lisp_Object* LOtype; | |||||
| Lisp_Object* type_expr = Memory::create_list(Memory::get_symbol("type"), value); | |||||
| try_void LOtype = eval_expr(type_expr); | |||||
| // fprintf(f, "\n - type :: ="); | |||||
| // print(LOtype, true, f); | |||||
| // fprintf(f, "="); | |||||
| fprintf(f, "\n - type :: ="); | |||||
| print(LOtype, true, f); | |||||
| fprintf(f, "="); | |||||
| // /* | |||||
| // * if printable value -> print it | |||||
| // */ | |||||
| // switch (type) { | |||||
| // case(Lisp_Object_Type::Nil): | |||||
| // case(Lisp_Object_Type::T): | |||||
| // case(Lisp_Object_Type::Number): | |||||
| // case(Lisp_Object_Type::String): | |||||
| // case(Lisp_Object_Type::Pair): | |||||
| // case(Lisp_Object_Type::Symbol): | |||||
| // case(Lisp_Object_Type::Keyword): { | |||||
| // fprintf(f, "\n - value :: ="); | |||||
| // print(env->values[i], true, f); | |||||
| // fprintf(f, "="); | |||||
| // } break; | |||||
| // default: break; | |||||
| // } | |||||
| // /* | |||||
| // * if function then print arguments | |||||
| // */ | |||||
| // if (type == Lisp_Object_Type::Function) { | |||||
| // Lisp_Object* fun = env->values[i]; | |||||
| // bool printed_at_least_some_args = false; | |||||
| // fprintf(f, "\n - arguments :: "); | |||||
| // if (fun->value.function.args.positional.symbols.next_index != 0) { | |||||
| // if (!printed_at_least_some_args) | |||||
| // fprintf(f, ":"); | |||||
| // fprintf(f, "\n - postitional :: "); | |||||
| // try_void fprintf(f, "=%s=", Memory::get_c_str(fun->value.function.args.positional.symbols.data[0]->value.symbol.identifier)); | |||||
| // for (int i = 1; i < fun->value.function.args.positional.symbols.next_index; ++i) { | |||||
| // fprintf(f, ", =%s=", Memory::get_c_str(fun->value.function.args.positional.symbols.data[i]->value.symbol.identifier)); | |||||
| // } | |||||
| // } | |||||
| // if (fun->value.function.args.keyword.values.next_index != 0) { | |||||
| // if (!printed_at_least_some_args) | |||||
| // fprintf(f, ":"); | |||||
| // fprintf(f, "\n - keyword :: "); | |||||
| // fprintf(f, "=%s=", Memory::get_c_str(fun->value.function.args.keyword.keywords.data[0]->value.symbol.identifier)); | |||||
| // if (fun->value.function.args.keyword.values.data[0]) { | |||||
| // fprintf(f, " =("); | |||||
| // print(fun->value.function.args.keyword.values.data[0], true, f); | |||||
| // fprintf(f, ")="); | |||||
| // } | |||||
| // for (int i = 1; i < fun->value.function.args.keyword.values.next_index; ++i) { | |||||
| // fprintf(f, ", =%s=", Memory::get_c_str(fun->value.function.args.keyword.keywords.data[i]->value.symbol.identifier)); | |||||
| // if (fun->value.function.args.keyword.values.data[i]) { | |||||
| // fprintf(f, " =("); | |||||
| // print(fun->value.function.args.keyword.values.data[i], true, f); | |||||
| // fprintf(f, ")="); | |||||
| // } | |||||
| // } | |||||
| // } | |||||
| // if (fun->value.function.args.rest) { | |||||
| // if (!printed_at_least_some_args) | |||||
| // fprintf(f, ":"); | |||||
| // fprintf(f, "\n - rest :: =%s=", Memory::get_c_str(fun->value.function.args.rest->value.symbol.identifier)); | |||||
| // } | |||||
| // // if no args at all | |||||
| // if (fun->value.function.args.positional.symbols.next_index == 0 && | |||||
| // fun->value.function.args.keyword.values.next_index == 0 && | |||||
| // !fun->value.function.args.rest) | |||||
| // { | |||||
| // fprintf(f, "none."); | |||||
| // } | |||||
| // } | |||||
| // fprintf(f, "\n - docu :: "); | |||||
| // if (env->values[i]->docstring) | |||||
| // fprintf(f, "\n #+BEGIN:\n%s\n #+END:\n", | |||||
| // Memory::get_c_str(env->values[i]->docstring)); | |||||
| // else | |||||
| // fprintf(f, "none\n"); | |||||
| /* | |||||
| * if printable value -> print it | |||||
| */ | |||||
| switch (type) { | |||||
| case(Lisp_Object_Type::Nil): | |||||
| case(Lisp_Object_Type::T): | |||||
| case(Lisp_Object_Type::Number): | |||||
| case(Lisp_Object_Type::String): | |||||
| case(Lisp_Object_Type::Pair): | |||||
| case(Lisp_Object_Type::Symbol): | |||||
| case(Lisp_Object_Type::Keyword): { | |||||
| fprintf(f, "\n - value :: ="); | |||||
| print(value, true, f); | |||||
| fprintf(f, "="); | |||||
| } break; | |||||
| default: break; | |||||
| } | |||||
| /* | |||||
| * if function then print arguments | |||||
| */ | |||||
| if (type == Lisp_Object_Type::Function || | |||||
| type == Lisp_Object_Type::CFunction) | |||||
| { | |||||
| Arguments* args = | |||||
| (type == Lisp_Object_Type::Function) | |||||
| ? &value->value.function->args | |||||
| : &value->value.cFunction->args; | |||||
| fprintf(f, "\n - arguments :: "); | |||||
| // if no args at all | |||||
| if (args->positional.symbols.next_index == 0 && | |||||
| args->keyword.values.next_index == 0 && | |||||
| !args->rest) | |||||
| { | |||||
| fprintf(f, "none."); | |||||
| } else { | |||||
| if (args->positional.symbols.next_index != 0) { | |||||
| fprintf(f, "\n - postitional :: "); | |||||
| fprintf(f, "=%s=", Memory::get_c_str(args->positional.symbols.data[0]->value.symbol)); | |||||
| for (int i = 1; i < args->positional.symbols.next_index; ++i) { | |||||
| fprintf(f, ", =%s=", Memory::get_c_str(args->positional.symbols.data[i]->value.symbol)); | |||||
| } | |||||
| } | |||||
| if (args->keyword.values.next_index != 0) { | |||||
| fprintf(f, "\n - keyword :: "); | |||||
| fprintf(f, "=%s=", Memory::get_c_str(args->keyword.keywords.data[0]->value.symbol)); | |||||
| if (args->keyword.values.data[0]) { | |||||
| fprintf(f, " =("); | |||||
| print(args->keyword.values.data[0], true, f); | |||||
| fprintf(f, ")="); | |||||
| } | |||||
| for (int i = 1; i < args->keyword.values.next_index; ++i) { | |||||
| fprintf(f, ", =%s=", Memory::get_c_str(args->keyword.keywords.data[i]->value.symbol)); | |||||
| if (args->keyword.values.data[i]) { | |||||
| fprintf(f, " =("); | |||||
| print(args->keyword.values.data[i], true, f); | |||||
| fprintf(f, ")="); | |||||
| } | |||||
| } | |||||
| } | |||||
| if (args->rest) { | |||||
| fprintf(f, "\n - rest :: =%s=", Memory::get_c_str(args->rest->value.symbol)); | |||||
| } | |||||
| } | |||||
| } | |||||
| fprintf(f, "\n - docu :: "); | |||||
| if (value->docstring) | |||||
| fprintf(f, "\n #+BEGIN:\n%s\n #+END:\n", | |||||
| Memory::get_c_str(value->docstring)); | |||||
| else | |||||
| fprintf(f, "none\n"); | |||||
| } | |||||
| } | |||||
| // // if (Memory::get_type(env->values[i]) == Lisp_Object_Type::Function && | |||||
| // // env->values[i]->userType && | |||||
| // // (string_equal(env->values[i]->userType->value.symbol.identifier, "package") || | |||||
| // // string_equal(env->values[i]->userType->value.symbol.identifier, "constructor"))) | |||||
| // // { | |||||
| // // char new_prefix[200]; | |||||
| // // strcpy(new_prefix, prefix); | |||||
| // // strcat(new_prefix, env->keys[i]); | |||||
| // // strcat(new_prefix, " "); | |||||
| // // print_this_env(env->values[i]->value.function.parent_environment, new_prefix); | |||||
| // // } | |||||
| // } | |||||
| // } | |||||
| for (int i = 0; i < env->parents.next_index; ++i) { | |||||
| try_void rec(rec, env->parents.data[i], prefix); | |||||
| } | |||||
| }; | |||||
| // for (int i = 0; i < env->parents.next_index; ++i) { | |||||
| // print_this_env(env->parents.data[i], prefix); | |||||
| // } | |||||
| // }; | |||||
| // print_this_env(get_current_environment(), (char*)""); | |||||
| // } | |||||
| print_this_env(print_this_env, get_current_environment(), (char*)""); | |||||
| } | |||||
| } | |||||
| @@ -1,119 +1,125 @@ | |||||
| proc define_symbol(Lisp_Object* symbol, Lisp_Object* value) -> void { | |||||
| Environment* env = get_current_environment(); | |||||
| hm_set(env->hm, symbol, value); | |||||
| } | |||||
| inline proc lookup_symbol_in_this_envt(Lisp_Object* sym, Environment* env) -> Lisp_Object* { | |||||
| return (Lisp_Object*)hm_get_object(env->hm, sym); | |||||
| } | |||||
| namespace Slime { | |||||
| proc define_symbol(Lisp_Object* symbol, Lisp_Object* value) -> void { | |||||
| profile_with_comment(&symbol->value.symbol->data); | |||||
| Environment* env = get_current_environment(); | |||||
| env->hm.set_object((void*)symbol, value); | |||||
| } | |||||
| proc environment_binds_symbol(Lisp_Object* sym, Environment* env) -> bool { | |||||
| return lookup_symbol_in_this_envt(sym, env) != nullptr; | |||||
| } | |||||
| inline proc lookup_symbol_in_this_envt(Lisp_Object* sym, Environment* env) -> Lisp_Object* { | |||||
| return (Lisp_Object*)env->hm.get_object((void*)sym); | |||||
| } | |||||
| proc find_binding_environment(Lisp_Object* sym, Environment* env) -> Environment* { | |||||
| if (environment_binds_symbol(sym, env)) | |||||
| return env; | |||||
| for_array_list (env->parents) { | |||||
| if (Environment* ret = find_binding_environment(sym, it)) | |||||
| return ret; | |||||
| proc environment_binds_symbol(Lisp_Object* sym, Environment* env) -> bool { | |||||
| return lookup_symbol_in_this_envt(sym, env) != nullptr; | |||||
| } | } | ||||
| return nullptr; | |||||
| } | |||||
| proc try_lookup_symbol(Lisp_Object* node, Environment* env) -> Lisp_Object* { | |||||
| // first check current environment | |||||
| Lisp_Object* result; | |||||
| result = lookup_symbol_in_this_envt(node, env); | |||||
| if (result) | |||||
| return result; | |||||
| proc find_binding_environment(Lisp_Object* sym, Environment* env) -> Environment* { | |||||
| if (environment_binds_symbol(sym, env)) | |||||
| return env; | |||||
| for (auto it : env->parents) { | |||||
| if (Environment* ret = find_binding_environment(sym, it)) | |||||
| return ret; | |||||
| } | |||||
| return nullptr; | |||||
| } | |||||
| for (int i = 0; i < env->parents.next_index; ++i) { | |||||
| result = try_lookup_symbol(node, env->parents.data[i]); | |||||
| proc try_lookup_symbol(Lisp_Object* node, Environment* env) -> Lisp_Object* { | |||||
| // first check current environment | |||||
| Lisp_Object* result; | |||||
| result = lookup_symbol_in_this_envt(node, env); | |||||
| if (result) | if (result) | ||||
| return result; | return result; | ||||
| } | |||||
| auto nil_sym = Memory::get_or_create_lisp_object_symbol("nil"); | |||||
| auto t_sym = Memory::get_or_create_lisp_object_symbol("t"); | |||||
| for (int i = 0; i < env->parents.next_index; ++i) { | |||||
| result = try_lookup_symbol(node, env->parents.data[i]); | |||||
| if (node == nil_sym) { | |||||
| return Memory::nil; | |||||
| } | |||||
| if (node == t_sym) { | |||||
| return Memory::t; | |||||
| } | |||||
| if (result) | |||||
| return result; | |||||
| } | |||||
| return nullptr; | |||||
| } | |||||
| auto nil_sym = Memory::get_symbol("nil"); | |||||
| auto t_sym = Memory::get_symbol("t"); | |||||
| inline proc push_environment(Environment* env) -> void { | |||||
| using namespace Globals::Current_Execution; | |||||
| append_to_array_list(&envi_stack, env); | |||||
| } | |||||
| if (node == nil_sym) { | |||||
| return Memory::nil; | |||||
| } | |||||
| if (node == t_sym) { | |||||
| return Memory::t; | |||||
| } | |||||
| inline proc pop_environment() -> void { | |||||
| using namespace Globals::Current_Execution; | |||||
| --envi_stack.next_index; | |||||
| } | |||||
| return nullptr; | |||||
| } | |||||
| inline proc get_root_environment() -> Environment* { | |||||
| using namespace Globals::Current_Execution; | |||||
| return envi_stack.data[0]; | |||||
| } | |||||
| inline proc push_environment(Environment* env) -> void { | |||||
| using namespace Globals::Current_Execution; | |||||
| envi_stack.append(env); | |||||
| } | |||||
| inline proc get_current_environment() -> Environment* { | |||||
| using namespace Globals::Current_Execution; | |||||
| return envi_stack.data[envi_stack.next_index-1]; | |||||
| } | |||||
| inline proc pop_environment() -> void { | |||||
| using namespace Globals::Current_Execution; | |||||
| --envi_stack.next_index; | |||||
| } | |||||
| proc lookup_symbol(Lisp_Object* node, Environment* env) -> Lisp_Object* { | |||||
| // print(node); | |||||
| // printf("\n"); | |||||
| assert_type(node, Lisp_Object_Type::Symbol); | |||||
| inline proc get_root_environment() -> Environment* { | |||||
| using namespace Globals::Current_Execution; | |||||
| return envi_stack.data[0]; | |||||
| } | |||||
| Lisp_Object* result = try_lookup_symbol(node, env); | |||||
| inline proc get_current_environment() -> Environment* { | |||||
| using namespace Globals::Current_Execution; | |||||
| return envi_stack.data[envi_stack.next_index-1]; | |||||
| } | |||||
| if (result) | |||||
| return result; | |||||
| proc lookup_symbol(Lisp_Object* node, Environment* env) -> Lisp_Object* { | |||||
| profile_with_comment(&node->value.symbol->data); | |||||
| // print(node); | |||||
| assert_type(node, Lisp_Object_Type::Symbol); | |||||
| String* identifier = node->value.symbol.identifier; | |||||
| create_symbol_undefined_error("The symbol '%s' is not defined.", &identifier->data); | |||||
| print_environment(env); | |||||
| return nullptr; | |||||
| } | |||||
| Lisp_Object* result = try_lookup_symbol(node, env); | |||||
| if (result) | |||||
| return result; | |||||
| proc print_indent(int indent) -> void { | |||||
| for (int i = 0; i < indent; ++i) { | |||||
| printf(" "); | |||||
| String* identifier = node->value.symbol; | |||||
| print_environment(env); | |||||
| printf("\n"); | |||||
| create_symbol_undefined_error("The symbol '%s' is not defined.", &identifier->data); | |||||
| return nullptr; | |||||
| } | } | ||||
| } | |||||
| proc print_environment_indent(Environment* env, int indent) -> void { | |||||
| // if(env == get_root_environment()) { | |||||
| // print_indent(indent); | |||||
| // printf("[built-ins]-Environment (%lld)\n", (long long)env); | |||||
| // return; | |||||
| // } | |||||
| for_ptr_hash_map (env->hm) { | |||||
| print_indent(indent); | |||||
| printf("-> %s :: ", &(((Lisp_Object*)key)->value.symbol.identifier->data)); | |||||
| print((Lisp_Object*)value); | |||||
| printf(" (0x%016llx)", (unsigned long long)value); | |||||
| puts(""); | |||||
| proc print_environment_indent(Environment* env, int indent) -> void { | |||||
| proc print_indent = [](int indent) { | |||||
| for (int i = 0; i < indent; ++i) { | |||||
| printf(" "); | |||||
| } | |||||
| }; | |||||
| if(env == get_root_environment()) { | |||||
| print_indent(indent); | |||||
| printf("[built-ins]-Environment (%lld)\n", (long long)env); | |||||
| return; | |||||
| } | |||||
| for_hash_map (env->hm) { | |||||
| print_indent(indent); | |||||
| printf("-> %s :: ", &(((Lisp_Object*)key)->value.symbol->data)); | |||||
| print((Lisp_Object*)value); | |||||
| printf(" (0x%016llx)", (unsigned long long)value); | |||||
| puts(""); | |||||
| } | |||||
| for (int i = 0; i < env->parents.next_index; ++i) { | |||||
| print_indent(indent); | |||||
| printf("parent (0x%016llx)", (long long)env->parents.data[i]); | |||||
| puts(":"); | |||||
| print_environment_indent(env->parents.data[i], indent+4); | |||||
| } | |||||
| } | } | ||||
| for (int i = 0; i < env->parents.next_index; ++i) { | |||||
| print_indent(indent); | |||||
| printf("parent (0x%016llx)", (long long)env->parents.data[i]); | |||||
| puts(":"); | |||||
| print_environment_indent(env->parents.data[i], indent+4); | |||||
| proc print_environment(Environment* env) -> void { | |||||
| printf("\n=== Environment === (0x%016llx)\n", (long long)env); | |||||
| print_environment_indent(env, 0); | |||||
| } | } | ||||
| } | |||||
| proc print_environment(Environment* env) -> void { | |||||
| printf("\n=== Environment === (0x%016llx)\n", (long long)env); | |||||
| print_environment_indent(env, 0); | |||||
| } | } | ||||
| @@ -1,86 +1,57 @@ | |||||
| proc delete_error() -> void { | |||||
| using Globals::error; | |||||
| namespace Slime { | |||||
| proc delete_error() -> void { | |||||
| using Globals::error; | |||||
| if (error) { | |||||
| free(error); | free(error); | ||||
| error = nullptr; | error = nullptr; | ||||
| } | } | ||||
| } | |||||
| proc create_error(const char* c_file_name, int c_file_line, Lisp_Object* type, String* message) -> void { | |||||
| if (Globals::log_level > Log_Level::None) { | |||||
| printf("Error created in:\n %s:%d\n", c_file_name, c_file_line); | |||||
| printf(" -> %s\n", Memory::get_c_str(message)); | |||||
| } | |||||
| delete_error(); | |||||
| if (Globals::breaking_on_errors) { | |||||
| debug_break(); | |||||
| } | |||||
| // visualize_lisp_machine(); | |||||
| using Globals::error; | |||||
| error = new(Error); | |||||
| error->type = type; | |||||
| error->message = message; | |||||
| } | |||||
| proc create_error(const char* c_func_name,const char* c_file_name, int c_file_line, Lisp_Object* type, String* message) -> void { | |||||
| delete_error(); | |||||
| if (Globals::breaking_on_errors) { | |||||
| debug_break(); | |||||
| } | |||||
| proc create_error(const char* c_file_name, int c_file_line, Lisp_Object* type, const char* format, ...) -> void { | |||||
| // HACK(Felix): the length of all error strings is 200!!!!!!!!!! | |||||
| using Globals::error; | |||||
| int length = 200; | |||||
| String* formatted_string = Memory::create_string("", length); | |||||
| if (error) { | |||||
| error = new(Error); | |||||
| using Globals::error; | |||||
| error = (Error*)malloc(sizeof(Error)) ; | |||||
| error->type = type; | error->type = type; | ||||
| error->message = message; | |||||
| log_error(); | |||||
| if (Globals::log_level > Log_Level::None) { | |||||
| // c error location | |||||
| printf("in"); | |||||
| int spacing = 30-((int)strlen(c_file_name) + (int)log10(c_file_line)); | |||||
| if (spacing < 1) spacing = 1; | |||||
| for (int i = 0; i < spacing; ++i) | |||||
| printf(" "); | |||||
| printf("%s (%d) ", c_file_name, c_file_line); | |||||
| printf("-> %s\n", c_func_name); | |||||
| } | |||||
| // visualize_lisp_machine(); | |||||
| } | } | ||||
| int written_length; | |||||
| va_list args; | |||||
| va_start(args, format); | |||||
| written_length = vsnprintf(&formatted_string->data, length, format, args); | |||||
| va_end(args); | |||||
| formatted_string->length = written_length; | |||||
| create_error(c_file_name, c_file_line, type, formatted_string); | |||||
| proc create_error(const char* c_func_name, const char* c_file_name, int c_file_line, Lisp_Object* type, const char* format, ...) -> void { | |||||
| using Globals::error; | |||||
| int length = 200; | |||||
| String* formatted_string = Memory::create_string("", length); | |||||
| if (error) { | |||||
| error = new(Error); | |||||
| error->type = type; | |||||
| } | |||||
| int written_length; | |||||
| va_list args; | |||||
| char* out_msg; | |||||
| va_start(args, format); | |||||
| written_length = vasprintf(&out_msg, format, args); | |||||
| va_end(args); | |||||
| formatted_string->length = written_length; | |||||
| strcpy(&formatted_string->data, out_msg); | |||||
| free(out_msg); | |||||
| create_error(c_func_name, c_file_name, c_file_line, type, formatted_string); | |||||
| } | |||||
| } | } | ||||
| // proc Error_Type_to_string(Error_Type type) -> const char* { | |||||
| // switch (type) { | |||||
| // case Error_Type::Assertion_Error: return "Assertion failed"; | |||||
| // case Error_Type::File_Not_Found: return "File not found"; | |||||
| // case Error_Type::Ill_Formed_Arguments: return "Evaluation-error: Ill formed arguments"; | |||||
| // case Error_Type::Ill_Formed_Lambda_List: return "Evaluation-error: Ill formed lambda list"; | |||||
| // case Error_Type::Ill_Formed_List: return "Evaluation-error: Ill formed list"; | |||||
| // case Error_Type::Not_A_Function: return "Evaluation-error: Not a function"; | |||||
| // case Error_Type::Not_Yet_Implemented: return "Evaluation-error: Not yet implemented"; | |||||
| // case Error_Type::Symbol_Not_Defined: return "Evaluation-error: Symbol not defined"; | |||||
| // case Error_Type::Syntax_Error: return "Syntax Error"; | |||||
| // case Error_Type::Trailing_Garbage: return "Evaluation-error: Trailing garbage following expression"; | |||||
| // case Error_Type::Type_Missmatch: return "Evaluation-error: Type Missmatch"; | |||||
| // case Error_Type::Unbalanced_Parenthesis: return "Parsing-error: Unbalanced parenthesis"; | |||||
| // case Error_Type::Unexpected_Eof: return "Parsing-error: Unexpected EOF"; | |||||
| // case Error_Type::Unknown_Keyword_Argument: return "Evaluation-error: Unknown keyword argument"; | |||||
| // case Error_Type::Wrong_Number_Of_Arguments: return "Evaluation-error: Wrong number of arguments"; | |||||
| // case Error_Type::Out_Of_Memory: return "Runtime-error: Out of memory"; | |||||
| // default: return "this error type doesn't have a desciption.."; | |||||
| // } | |||||
| // } | |||||
| // proc assert_type(Lisp_Object* node, Lisp_Object_Type type) -> void { | |||||
| // if (!node) { | |||||
| // create_generic_error( | |||||
| // "The node where the type should have" | |||||
| // "been checked was nullptr."); | |||||
| // return; | |||||
| // } | |||||
| // if (node->type != type) | |||||
| // create_type_missmatch_error( | |||||
| // "" | |||||
| // ); | |||||
| // } | |||||
| @@ -1,118 +1,85 @@ | |||||
| // proc assert_type(Lisp_Object*, Lisp_Object_Type) -> void; | |||||
| proc lisp_object_equal(Lisp_Object*,Lisp_Object*) -> bool; | |||||
| proc built_in_load(String*) -> Lisp_Object*; | |||||
| proc built_in_import(String*) -> Lisp_Object*; | |||||
| proc create_error(const char* c_file_name, int c_file_line, Lisp_Object* type, String* message) -> void; | |||||
| proc create_error(const char* c_file_name, int c_file_line, Lisp_Object* type, const char* format, ...) -> void; | |||||
| proc create_error(Lisp_Object* type, const char* message, const char* c_file_name, int c_file_line) -> void; | |||||
| proc eval_arguments(Lisp_Object*) -> Lisp_Object*; | |||||
| proc eval_expr(Lisp_Object*) -> Lisp_Object*; | |||||
| proc is_truthy (Lisp_Object*) -> bool; | |||||
| proc list_length(Lisp_Object*) -> int; | |||||
| proc load_built_ins_into_environment() -> void; | |||||
| proc create_arguments_from_lambda_list_and_inject(Lisp_Object* formal_arguments, Lisp_Object* function) -> void; | |||||
| proc print_environment(Environment*) -> void; | |||||
| inline proc get_root_environment() -> Environment*; | |||||
| inline proc get_current_environment() -> Environment*; | |||||
| inline proc push_environment(Environment*) -> void; | |||||
| inline proc pop_environment() -> void; | |||||
| proc Lisp_Object_Type_to_string(Lisp_Object_Type type) -> const char*; | |||||
| proc visualize_lisp_machine() -> void; | |||||
| proc generate_docs(String* path) -> void; | |||||
| namespace Memory { | |||||
| proc create_built_ins_environment() -> Environment*; | |||||
| proc get_or_create_lisp_object_keyword(const char* identifier) -> Lisp_Object*; | |||||
| inline proc get_type(Lisp_Object* node) -> Lisp_Object_Type; | |||||
| } | |||||
| namespace Parser { | |||||
| // extern Environment* environment_for_macros; | |||||
| extern String* standard_in; | |||||
| extern String* parser_file; | |||||
| extern int parser_line; | |||||
| extern int parser_col; | |||||
| proc parse_single_expression(char* text) -> Lisp_Object*; | |||||
| } | |||||
| namespace Globals { | |||||
| char* bin_path = nullptr; | |||||
| Log_Level log_level = Log_Level::Debug; | |||||
| namespace Current_Execution { | |||||
| Lisp_Object_Array_List call_stack = create_Lisp_Object_array_list(); | |||||
| Environment_Array_List envi_stack = create_Environment_array_list(); | |||||
| namespace Slime { | |||||
| void add_to_load_path(const char*); | |||||
| bool lisp_object_equal(Lisp_Object*,Lisp_Object*); | |||||
| Lisp_Object* built_in_load(String*); | |||||
| Lisp_Object* built_in_import(String*); | |||||
| void delete_error(); | |||||
| void create_error(const char* c_func_name, const char* c_file_name, int c_file_line, Lisp_Object* type, const char* format, ...); | |||||
| void create_error(const char* c_func_name, const char* c_file_name, int c_file_line, Lisp_Object* type, String* message); | |||||
| void create_error(Lisp_Object* type, const char* message, const char* c_file_name, int c_file_line); | |||||
| Lisp_Object* eval_arguments(Lisp_Object*); | |||||
| Lisp_Object* eval_expr(Lisp_Object*); | |||||
| bool is_truthy (Lisp_Object*); | |||||
| int list_length(Lisp_Object*); | |||||
| void* load_built_ins_into_environment(); | |||||
| void create_arguments_from_lambda_list_and_inject(Lisp_Object* formal_arguments, Lisp_Object* function); | |||||
| Lisp_Object* lookup_symbol(Lisp_Object* symbol, Environment*); | |||||
| void define_symbol(Lisp_Object* symbol, Lisp_Object* value); | |||||
| void print(Lisp_Object* node, bool print_repr = false, FILE* file = stdout); | |||||
| void print_environment(Environment*); | |||||
| bool run_all_tests(); | |||||
| inline Environment* get_root_environment(); | |||||
| inline Environment* get_current_environment(); | |||||
| inline void push_environment(Environment*); | |||||
| inline void pop_environment(); | |||||
| const char* Lisp_Object_Type_to_string(Lisp_Object_Type type); | |||||
| void visualize_lisp_machine(); | |||||
| void generate_docs(String* path); | |||||
| void log_error(); | |||||
| namespace Memory { | |||||
| Environment* create_built_ins_environment(); | |||||
| Lisp_Object* create_lisp_object_cfunction(bool is_special); | |||||
| inline Lisp_Object_Type get_type(Lisp_Object* node); | |||||
| void init(int); | |||||
| char* get_c_str(String*); | |||||
| void free_everything(); | |||||
| String* create_string(const char*); | |||||
| Lisp_Object* get_symbol(String* identifier); | |||||
| Lisp_Object* get_symbol(const char*); | |||||
| Lisp_Object* get_keyword(String* identifier); | |||||
| Lisp_Object* get_keyword(const char*); | |||||
| Lisp_Object* create_lisp_object(double); | |||||
| Lisp_Object* create_lisp_object(const char*); | |||||
| Lisp_Object* create_lisp_object_vector(Lisp_Object*); | |||||
| Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*); | |||||
| Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*, Lisp_Object*); | |||||
| Lisp_Object* create_lisp_object_vector(int, Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); | |||||
| inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*); | |||||
| } | } | ||||
| #ifdef _DONT_BREAK_ON_ERRORS | |||||
| bool breaking_on_errors = false; | |||||
| #else | |||||
| bool breaking_on_errors = true; | |||||
| #endif | |||||
| Error* error = nullptr; | |||||
| } | |||||
| namespace Parser { | |||||
| // extern Environment* environment_for_macros; | |||||
| inline bool hm_objects_match(char* a, char* b) { | |||||
| return strcmp(a, b) == 0; | |||||
| } | |||||
| inline bool hm_objects_match(void* a, void* b) { | |||||
| return a == b; | |||||
| } | |||||
| extern String* standard_in; | |||||
| extern String* parser_file; | |||||
| extern int parser_line; | |||||
| extern int parser_col; | |||||
| u32 hm_hash(void* ptr) { | |||||
| return ((unsigned long long)ptr * 2654435761) % 4294967296; | |||||
| } | |||||
| u32 hm_hash(char* str) { | |||||
| u32 value = str[0] << 7; | |||||
| int i = 0; | |||||
| while (str[i]) { | |||||
| value = (10000003 * value) ^ str[i++]; | |||||
| Lisp_Object* parse_expression(char* text, int* index_in_text); | |||||
| Lisp_Object* parse_single_expression(char* text); | |||||
| Lisp_Object* parse_single_expression(wchar_t* text); | |||||
| } | } | ||||
| return value ^ i; | |||||
| } | |||||
| inline bool hm_objects_match(Lisp_Object* a, Lisp_Object* b) { | |||||
| return lisp_object_equal(a, b); | |||||
| } | |||||
| u32 hm_hash(Lisp_Object* obj) { | |||||
| switch (Memory::get_type(obj)) { | |||||
| // hash from adress: if two objects of these types have | |||||
| // different addresses, they are different | |||||
| case Lisp_Object_Type::CFunction: | |||||
| case Lisp_Object_Type::Function: | |||||
| case Lisp_Object_Type::Symbol: | |||||
| case Lisp_Object_Type::Keyword: | |||||
| case Lisp_Object_Type::Continuation: | |||||
| case Lisp_Object_Type::Nil: | |||||
| case Lisp_Object_Type::T: | |||||
| return hm_hash((void*) obj); | |||||
| // hash from contents: even if objects are themselved | |||||
| // different, they cauld be equivalent: | |||||
| case Lisp_Object_Type::Pointer: return hm_hash((void*) obj->value.pointer); | |||||
| case Lisp_Object_Type::Number: return hm_hash((void*) (unsigned long long)obj->value.number); // HACK(Felix): yes | |||||
| case Lisp_Object_Type::String: return hm_hash((char*) &obj->value.string->data); | |||||
| case Lisp_Object_Type::Pair: { | |||||
| u32 hash = 1; | |||||
| for_lisp_list (obj) { | |||||
| hash <<= 1; | |||||
| hash += hm_hash(it); | |||||
| namespace Globals { | |||||
| extern char* bin_path; | |||||
| extern Log_Level log_level; | |||||
| extern Array_List<void*> load_path; | |||||
| namespace Current_Execution { | |||||
| extern Array_List<Lisp_Object*> call_stack; | |||||
| extern Array_List<Environment*> envi_stack; | |||||
| } | } | ||||
| return hash; | |||||
| } break; | |||||
| case Lisp_Object_Type::Vector: | |||||
| case Lisp_Object_Type::HashMap: | |||||
| default: | |||||
| create_not_yet_implemented_error(); | |||||
| return 0; | |||||
| extern Error* error; | |||||
| extern bool breaking_on_errors; | |||||
| } | } | ||||
| } | } | ||||
| @@ -1 +0,0 @@ | |||||
| Subproject commit 94ad64f6bb3a91247e8266217a5a0ab3a93c5d11 | |||||
| @@ -1,12 +1,12 @@ | |||||
| namespace GC { | |||||
| namespace Slime::GC { | |||||
| proc maybe_mark(Environment* env) -> void; | proc maybe_mark(Environment* env) -> void; | ||||
| int current_mark; | int current_mark; | ||||
| Lisp_Object_Array_List marked_objects; | |||||
| String_Array_List marked_strings; | |||||
| Environment_Array_List marked_environments; | |||||
| Environment_Array_List protected_environments; | |||||
| Array_List<Lisp_Object*> marked_objects; | |||||
| Array_List<String*> marked_strings; | |||||
| Array_List<Environment*> marked_environments; | |||||
| Array_List<Environment*> protected_environments; | |||||
| proc marked(Lisp_Object* node) -> bool { | proc marked(Lisp_Object* node) -> bool { | ||||
| return false; | return false; | ||||
| @@ -21,11 +21,11 @@ namespace GC { | |||||
| return; | return; | ||||
| // mark object itself | // mark object itself | ||||
| append_to_array_list(&marked_objects, node); | |||||
| marked_objects.append(node); | |||||
| // mark docstring | // mark docstring | ||||
| if (node->docstring) | if (node->docstring) | ||||
| append_to_array_list(&marked_strings, node->docstring); | |||||
| marked_strings.append(node->docstring); | |||||
| // mark type specific data | // mark type specific data | ||||
| switch (Memory::get_type(node)) { | switch (Memory::get_type(node)) { | ||||
| @@ -40,17 +40,18 @@ namespace GC { | |||||
| } | } | ||||
| } break; | } break; | ||||
| case Lisp_Object_Type::String: { | case Lisp_Object_Type::String: { | ||||
| append_to_array_list(&marked_strings, node->value.string); | |||||
| marked_strings.append(node->value.string); | |||||
| } break; | } break; | ||||
| case Lisp_Object_Type::Function: { | case Lisp_Object_Type::Function: { | ||||
| // NOTE(Felix): We dont have to mark the symbols, keywords | // NOTE(Felix): We dont have to mark the symbols, keywords | ||||
| // for parameter names, as symbols and keywords are never | // for parameter names, as symbols and keywords are never | ||||
| // garbage collected | // garbage collected | ||||
| maybe_mark(node->value.function.parent_environment); | |||||
| maybe_mark(node->value.function.body); | |||||
| maybe_mark(node->value.function->parent_environment); | |||||
| maybe_mark(node->value.function->body); | |||||
| // mark the default arguemnt values: | // mark the default arguemnt values: | ||||
| for_array_list (node->value.function.args.keyword.values) { | |||||
| if (it) maybe_mark(it); | |||||
| for (auto it : node->value.function->args.keyword.values) { | |||||
| if (it) | |||||
| maybe_mark(it); | |||||
| } | } | ||||
| } break; | } break; | ||||
| default: break; | default: break; | ||||
| @@ -62,10 +63,10 @@ namespace GC { | |||||
| if (marked(env)) | if (marked(env)) | ||||
| return; | return; | ||||
| append_to_array_list(&marked_environments, env); | |||||
| marked_environments.append(env); | |||||
| for_array_list (env->parents) { | |||||
| maybe_mark(it); | |||||
| for (auto p : env->parents) { | |||||
| maybe_mark(p); | |||||
| } | } | ||||
| // Lisp_Object* it = env->values[0]; | // Lisp_Object* it = env->values[0]; | ||||
| @@ -75,17 +76,15 @@ namespace GC { | |||||
| } | } | ||||
| proc garbage_collect() -> void { | proc garbage_collect() -> void { | ||||
| profile_this; | |||||
| profile_this(); | |||||
| ++current_mark; | ++current_mark; | ||||
| for_array_list (protected_environments) maybe_mark(it); | |||||
| for_array_list (Globals::Current_Execution::envi_stack) maybe_mark(it); | |||||
| for (auto it : protected_environments) maybe_mark(it); | |||||
| for (auto it : Globals::Current_Execution::envi_stack) maybe_mark(it); | |||||
| } | } | ||||
| proc gc_init_and_go() -> void { | proc gc_init_and_go() -> void { | ||||
| current_mark = 0; | current_mark = 0; | ||||
| marked_objects = create_Lisp_Object_array_list(1024); | |||||
| marked_environments = create_Environment_array_list(1024); | |||||
| while (1) { | while (1) { | ||||
| garbage_collect(); | garbage_collect(); | ||||
| @@ -0,0 +1,17 @@ | |||||
| namespace Slime::Globals { | |||||
| char* bin_path = nullptr; | |||||
| Log_Level log_level = Log_Level::Debug; | |||||
| Array_List<void*> load_path; | |||||
| namespace Current_Execution { | |||||
| Array_List<Lisp_Object*> call_stack; | |||||
| Array_List<Environment*> envi_stack; | |||||
| } | |||||
| Error* error = nullptr; | |||||
| #ifdef _DONT_BREAK_ON_ERRORS | |||||
| bool breaking_on_errors = false; | |||||
| #else | |||||
| bool breaking_on_errors = true; | |||||
| #endif | |||||
| } | |||||
| @@ -1,418 +1,462 @@ | |||||
| proc string_equal(const char input[], const char check[]) -> bool { | |||||
| if (input == check) return true; | |||||
| namespace Slime { | |||||
| proc string_equal(const char input[], const char check[]) -> bool { | |||||
| if (input == check) return true; | |||||
| for(int i = 0; input[i] == check[i]; i++) { | |||||
| if (input[i] == '\0') | |||||
| return true; | |||||
| } | |||||
| for(int i = 0; input[i] == check[i]; i++) { | |||||
| if (input[i] == '\0') | |||||
| return true; | |||||
| } | |||||
| return false; | |||||
| } | |||||
| return false; | |||||
| } | |||||
| proc string_equal(String* str, const char check[]) -> bool { | |||||
| return string_equal(Memory::get_c_str(str), check); | |||||
| } | |||||
| proc string_equal(String* str, const char check[]) -> bool { | |||||
| return string_equal(Memory::get_c_str(str), check); | |||||
| } | |||||
| proc string_equal(const char check[], String* str) -> bool { | |||||
| return string_equal(Memory::get_c_str(str), check); | |||||
| } | |||||
| proc string_equal(const char check[], String* str) -> bool { | |||||
| return string_equal(Memory::get_c_str(str), check); | |||||
| } | |||||
| proc string_equal(String* str1, String* str2) -> bool { | |||||
| if (str1 == str2) | |||||
| return true; | |||||
| proc string_equal(String* str1, String* str2) -> bool { | |||||
| if (str1 == str2) | |||||
| return true; | |||||
| return string_equal(Memory::get_c_str(str1), Memory::get_c_str(str2)); | |||||
| } | |||||
| return string_equal(Memory::get_c_str(str1), Memory::get_c_str(str2)); | |||||
| } | |||||
| proc get_nibble(char c) -> char { | |||||
| if (c >= 'A' && c <= 'F') | |||||
| return (c - 'A') + 10; | |||||
| else if (c >= 'a' && c <= 'f') | |||||
| return (c - 'a') + 10; | |||||
| return (c - '0'); | |||||
| } | |||||
| proc get_nibble(char c) -> char { | |||||
| if (c >= 'A' && c <= 'F') | |||||
| return (c - 'A') + 10; | |||||
| else if (c >= 'a' && c <= 'f') | |||||
| return (c - 'a') + 10; | |||||
| return (c - '0'); | |||||
| } | |||||
| proc escape_string(char* in) -> char* { | |||||
| // TODO(Felix): add more escape sequences | |||||
| int i = 0, count = 0; | |||||
| while (in[i] != '\0') { | |||||
| switch (in[i]) { | |||||
| case '\\': | |||||
| case '\n': | |||||
| case '\t': | |||||
| ++count; | |||||
| default: break; | |||||
| proc escape_string(char* in) -> char* { | |||||
| // TODO(Felix): add more escape sequences | |||||
| int i = 0, count = 0; | |||||
| while (in[i] != '\0') { | |||||
| switch (in[i]) { | |||||
| case '\\': | |||||
| case '\n': | |||||
| case '\t': | |||||
| ++count; | |||||
| default: break; | |||||
| } | |||||
| ++i; | |||||
| } | } | ||||
| ++i; | |||||
| } | |||||
| char* ret = (char*)malloc((i+count+1)*sizeof(char)); | |||||
| // copy in | |||||
| i = 0; | |||||
| int j = 0; | |||||
| while (in[i] != '\0') { | |||||
| switch (in[i]) { | |||||
| case '\\': ret[j++] = '\\'; ret[j++] = '\\'; break; | |||||
| case '\n': ret[j++] = '\\'; ret[j++] = 'n'; break; | |||||
| case '\t': ret[j++] = '\\'; ret[j++] = 't'; break; | |||||
| default: ret[j++] = in[i]; | |||||
| char* ret = (char*)malloc((i+count+1)*sizeof(char)); | |||||
| // copy in | |||||
| i = 0; | |||||
| int j = 0; | |||||
| while (in[i] != '\0') { | |||||
| switch (in[i]) { | |||||
| case '\\': ret[j++] = '\\'; ret[j++] = '\\'; break; | |||||
| case '\n': ret[j++] = '\\'; ret[j++] = 'n'; break; | |||||
| case '\t': ret[j++] = '\\'; ret[j++] = 't'; break; | |||||
| default: ret[j++] = in[i]; | |||||
| } | |||||
| ++i; | |||||
| } | } | ||||
| ++i; | |||||
| ret[j++] = '\0'; | |||||
| return ret; | |||||
| } | } | ||||
| ret[j++] = '\0'; | |||||
| return ret; | |||||
| } | |||||
| proc unescape_string(char* in) -> bool { | |||||
| if (!in) | |||||
| return true; | |||||
| proc unescape_string(char* in) -> int { | |||||
| if (!in) return 0; | |||||
| char *out = in, *p = in; | |||||
| const char *int_err = nullptr; | |||||
| char *out = in, *p = in; | |||||
| const char *int_err = nullptr; | |||||
| while (*p && !int_err) { | |||||
| if (*p != '\\') { | |||||
| /* normal case */ | |||||
| *out++ = *p++; | |||||
| } else { | |||||
| /* escape sequence */ | |||||
| switch (*++p) { | |||||
| case '0': *out++ = '\a'; ++p; break; | |||||
| case 'a': *out++ = '\a'; ++p; break; | |||||
| case 'b': *out++ = '\b'; ++p; break; | |||||
| case 'f': *out++ = '\f'; ++p; break; | |||||
| case 'n': *out++ = '\n'; ++p; break; | |||||
| case 'r': *out++ = '\r'; ++p; break; | |||||
| case 't': *out++ = '\t'; ++p; break; | |||||
| case 'v': *out++ = '\v'; ++p; break; | |||||
| case '"': | |||||
| case '\'': | |||||
| case '\\': | |||||
| while (*p && !int_err) { | |||||
| if (*p != '\\') { | |||||
| /* normal case */ | |||||
| *out++ = *p++; | *out++ = *p++; | ||||
| case '?': | |||||
| break; | |||||
| case 'x': | |||||
| case 'X': | |||||
| if (!isxdigit(p[1]) || !isxdigit(p[2])) { | |||||
| } else { | |||||
| /* escape sequence */ | |||||
| switch (*++p) { | |||||
| case '0': *out++ = '\a'; ++p; break; | |||||
| case 'a': *out++ = '\a'; ++p; break; | |||||
| case 'b': *out++ = '\b'; ++p; break; | |||||
| case 'f': *out++ = '\f'; ++p; break; | |||||
| case 'n': *out++ = '\n'; ++p; break; | |||||
| case 'r': *out++ = '\r'; ++p; break; | |||||
| case 't': *out++ = '\t'; ++p; break; | |||||
| case 'v': *out++ = '\v'; ++p; break; | |||||
| case '"': | |||||
| case '\'': | |||||
| case '\\': | |||||
| *out++ = *p++; | |||||
| case '?': | |||||
| break; | |||||
| case 'x': | |||||
| case 'X': | |||||
| if (!isxdigit(p[1]) || !isxdigit(p[2])) { | |||||
| create_parsing_error( | |||||
| "The string '%s' at %s:%d:%d could not be unescaped. " | |||||
| "(Invalid character on hexadecimal escape at char %d)", | |||||
| in, Parser::parser_file, Parser::parser_line, Parser::parser_col, | |||||
| (p+1)-in); | |||||
| } else { | |||||
| *out++ = (char)(get_nibble(p[1]) * 0x10 + get_nibble(p[2])); | |||||
| p += 3; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| create_parsing_error( | create_parsing_error( | ||||
| "The string '%s' at %s:%d:%d could not be unescaped. " | "The string '%s' at %s:%d:%d could not be unescaped. " | ||||
| "(Invalid character on hexadecimal escape at char %d)", | |||||
| "(Unexpected '\\' with no escape sequence at char %d)", | |||||
| in, Parser::parser_file, Parser::parser_line, Parser::parser_col, | in, Parser::parser_file, Parser::parser_line, Parser::parser_col, | ||||
| (p+1)-in); | (p+1)-in); | ||||
| } else { | |||||
| *out++ = (char)(get_nibble(p[1]) * 0x10 + get_nibble(p[2])); | |||||
| p += 3; | |||||
| } | } | ||||
| break; | |||||
| default: | |||||
| create_parsing_error( | |||||
| "The string '%s' at %s:%d:%d could not be unescaped. " | |||||
| "(Unexpected '\\' with no escape sequence at char %d)", | |||||
| in, Parser::parser_file, Parser::parser_line, Parser::parser_col, | |||||
| (p+1)-in); | |||||
| } | } | ||||
| } | } | ||||
| } | |||||
| /* Set the end of string. */ | |||||
| *out = '\0'; | |||||
| if (int_err) | |||||
| return false; | |||||
| return true; | |||||
| } | |||||
| /* Set the end of string. */ | |||||
| *out = '\0'; | |||||
| return (int)(out - in); | |||||
| } | |||||
| proc read_entire_file(char* filename) -> char* { | |||||
| char *fileContent = nullptr; | |||||
| FILE *fp = fopen(filename, "r"); | |||||
| if (fp) { | |||||
| /* Go to the end of the file. */ | |||||
| if (fseek(fp, 0L, SEEK_END) == 0) { | |||||
| /* Get the size of the file. */ | |||||
| long bufsize = ftell(fp) + 1; | |||||
| if (bufsize == 0) { | |||||
| fputs("Empty file", stderr); | |||||
| goto closeFile; | |||||
| } | |||||
| proc read_entire_file(char* filename) -> char* { | |||||
| profile_with_comment(filename); | |||||
| char *fileContent = nullptr; | |||||
| FILE *fp = fopen(filename, "r"); | |||||
| if (fp) { | |||||
| /* Go to the end of the file. */ | |||||
| if (fseek(fp, 0L, SEEK_END) == 0) { | |||||
| /* Get the size of the file. */ | |||||
| long bufsize = ftell(fp) + 1; | |||||
| if (bufsize == 0) { | |||||
| fputs("Empty file", stderr); | |||||
| goto closeFile; | |||||
| } | |||||
| /* Go back to the start of the file. */ | |||||
| if (fseek(fp, 0L, SEEK_SET) != 0) { | |||||
| fputs("Error reading file", stderr); | |||||
| goto closeFile; | |||||
| } | |||||
| /* Go back to the start of the file. */ | |||||
| if (fseek(fp, 0L, SEEK_SET) != 0) { | |||||
| fputs("Error reading file", stderr); | |||||
| goto closeFile; | |||||
| } | |||||
| /* Allocate our buffer to that size. */ | |||||
| fileContent = (char*)calloc(bufsize, sizeof(char)); | |||||
| /* Allocate our buffer to that size. */ | |||||
| fileContent = (char*)calloc(bufsize, sizeof(char)); | |||||
| /* Read the entire file into memory. */ | |||||
| size_t newLen = fread(fileContent, sizeof(char), bufsize, fp); | |||||
| /* Read the entire file into memory. */ | |||||
| size_t newLen = fread(fileContent, sizeof(char), bufsize, fp); | |||||
| fileContent[newLen] = '\0'; | |||||
| if (ferror(fp) != 0) { | |||||
| fputs("Error reading file", stderr); | |||||
| fileContent[newLen] = '\0'; | |||||
| if (ferror(fp) != 0) { | |||||
| fputs("Error reading file", stderr); | |||||
| } | |||||
| } | } | ||||
| closeFile: | |||||
| fclose(fp); | |||||
| } | } | ||||
| closeFile: | |||||
| fclose(fp); | |||||
| } | |||||
| return fileContent; | |||||
| /* Don't forget to call free() later! */ | |||||
| } | |||||
| return fileContent; | |||||
| /* Don't forget to call free() later! */ | |||||
| } | |||||
| proc read_expression() -> char* { | |||||
| char* line = (char*)malloc(100); | |||||
| proc read_expression() -> char* { | |||||
| char* line = (char*)malloc(100); | |||||
| if(line == nullptr) | |||||
| return nullptr; | |||||
| if(line == nullptr) | |||||
| return nullptr; | |||||
| char* linep = line; | |||||
| size_t lenmax = 100, len = lenmax; | |||||
| int c; | |||||
| char* linep = line; | |||||
| size_t lenmax = 100, len = lenmax; | |||||
| int c; | |||||
| int nesting = 0; | |||||
| int nesting = 0; | |||||
| while (true) { | |||||
| c = fgetc(stdin); | |||||
| if(c == EOF) | |||||
| break; | |||||
| while (true) { | |||||
| c = fgetc(stdin); | |||||
| if(c == EOF) | |||||
| break; | |||||
| if(--len == 0) { | |||||
| len = lenmax; | |||||
| char * linen = (char*)realloc(linep, lenmax *= 2); | |||||
| if(--len == 0) { | |||||
| len = lenmax; | |||||
| char * linen = (char*)realloc(linep, lenmax *= 2); | |||||
| if(linen == nullptr) { | |||||
| free(linep); | |||||
| return nullptr; | |||||
| if(linen == nullptr) { | |||||
| free(linep); | |||||
| return nullptr; | |||||
| } | |||||
| line = linen + (line - linep); | |||||
| linep = linen; | |||||
| } | } | ||||
| line = linen + (line - linep); | |||||
| linep = linen; | |||||
| *line = (char)c; | |||||
| if(*line == '(') | |||||
| ++nesting; | |||||
| else if(*line == ')') | |||||
| --nesting; | |||||
| else if(*line == '\n') | |||||
| if (nesting == 0) | |||||
| break; | |||||
| line++; | |||||
| } | } | ||||
| (*line)--; // we dont want the \n actually | |||||
| *line = '\0'; | |||||
| *line = (char)c; | |||||
| if(*line == '(') | |||||
| ++nesting; | |||||
| else if(*line == ')') | |||||
| --nesting; | |||||
| else if(*line == '\n') | |||||
| if (nesting == 0) | |||||
| break; | |||||
| line++; | |||||
| return linep; | |||||
| } | } | ||||
| (*line)--; // we dont want the \n actually | |||||
| *line = '\0'; | |||||
| return linep; | |||||
| } | |||||
| proc read_line() -> char* { | |||||
| char* line = (char*)malloc(100), * linep = line; | |||||
| size_t lenmax = 100, len = lenmax; | |||||
| int c; | |||||
| proc read_line() -> char* { | |||||
| char* line = (char*)malloc(100), * linep = line; | |||||
| size_t lenmax = 100, len = lenmax; | |||||
| int c; | |||||
| int nesting = 0; | |||||
| int nesting = 0; | |||||
| if(line == nullptr) | |||||
| return nullptr; | |||||
| if(line == nullptr) | |||||
| return nullptr; | |||||
| for(;;) { | |||||
| c = fgetc(stdin); | |||||
| if(c == EOF) | |||||
| break; | |||||
| for(;;) { | |||||
| c = fgetc(stdin); | |||||
| if(c == EOF) | |||||
| break; | |||||
| if(--len == 0) { | |||||
| len = lenmax; | |||||
| char* linen = (char*)realloc(linep, lenmax *= 2); | |||||
| if(--len == 0) { | |||||
| len = lenmax; | |||||
| char* linen = (char*)realloc(linep, lenmax *= 2); | |||||
| if(linen == nullptr) { | |||||
| free(linep); | |||||
| return nullptr; | |||||
| if(linen == nullptr) { | |||||
| free(linep); | |||||
| return nullptr; | |||||
| } | |||||
| line = linen + (line - linep); | |||||
| linep = linen; | |||||
| } | } | ||||
| line = linen + (line - linep); | |||||
| linep = linen; | |||||
| *line = (char)c; | |||||
| if(*line == '(') | |||||
| ++nesting; | |||||
| else if(*line == ')') | |||||
| --nesting; | |||||
| else if(*line == '\n') | |||||
| if (nesting == 0) | |||||
| break; | |||||
| line++; | |||||
| } | } | ||||
| (*line)--; // we dont want the \n actually | |||||
| *line = '\0'; | |||||
| *line = (char)c; | |||||
| if(*line == '(') | |||||
| ++nesting; | |||||
| else if(*line == ')') | |||||
| --nesting; | |||||
| else if(*line == '\n') | |||||
| if (nesting == 0) | |||||
| break; | |||||
| line++; | |||||
| return linep; | |||||
| } | } | ||||
| (*line)--; // we dont want the \n actually | |||||
| *line = '\0'; | |||||
| return linep; | |||||
| } | |||||
| proc log_message(Log_Level type, const char* message) -> void { | |||||
| if (type > Globals::log_level) | |||||
| return; | |||||
| const char* prefix; | |||||
| switch (type) { | |||||
| case Log_Level::Critical: prefix = "CRITICAL"; break; | |||||
| case Log_Level::Warning: prefix = "WARNING"; break; | |||||
| case Log_Level::Info: prefix = "INFO"; break; | |||||
| case Log_Level::Debug: prefix = "DEBUG"; break; | |||||
| default: return; | |||||
| proc log_message(Log_Level type, const char* message) -> void { | |||||
| if (type > Globals::log_level) | |||||
| return; | |||||
| const char* prefix; | |||||
| switch (type) { | |||||
| case Log_Level::Critical: prefix = "CRITICAL"; break; | |||||
| case Log_Level::Warning: prefix = "WARNING"; break; | |||||
| case Log_Level::Info: prefix = "INFO"; break; | |||||
| case Log_Level::Debug: prefix = "DEBUG"; break; | |||||
| default: return; | |||||
| } | |||||
| printf("%s: %s\n",prefix, message); | |||||
| } | } | ||||
| printf("%s: %s\n",prefix, message); | |||||
| } | |||||
| proc panic(char* message) -> void { | |||||
| log_message(Log_Level::Critical, message); | |||||
| exit(1); | |||||
| } | |||||
| char* wchar_to_char(const wchar_t* pwchar) { | |||||
| // get the number of characters in the string. | |||||
| int currentCharIndex = 0; | |||||
| char currentChar = (char)pwchar[currentCharIndex]; | |||||
| proc print(Lisp_Object* node, bool print_repr = false, FILE* file = stdout) -> void { | |||||
| switch (Memory::get_type(node)) { | |||||
| case (Lisp_Object_Type::Nil): fputs("()", file); break; | |||||
| case (Lisp_Object_Type::T): fputs("t", file); break; | |||||
| case (Lisp_Object_Type::Number): { | |||||
| if (abs(node->value.number - (int)node->value.number) < 0.000001f) | |||||
| fprintf(file, "%d", (int)node->value.number); | |||||
| else | |||||
| fprintf(file, "%f", node->value.number); | |||||
| } break; | |||||
| case (Lisp_Object_Type::Keyword): fputs(":", file); // NOTE(Felix): intentionall fallthough | |||||
| case (Lisp_Object_Type::Symbol): fprintf(file, "%s", Memory::get_c_str(node->value.symbol.identifier)); break; | |||||
| case (Lisp_Object_Type::Continuation): fputs("[continuation]", file); break; | |||||
| case (Lisp_Object_Type::CFunction): fputs("[C-function]", file); break; | |||||
| case (Lisp_Object_Type::Pointer): fputs("[pointer]", file); break; | |||||
| case (Lisp_Object_Type::HashMap): fputs("[hashmap]", file); break; | |||||
| case (Lisp_Object_Type::String): { | |||||
| if (print_repr) { | |||||
| putc('\"', file); | |||||
| char* escaped = escape_string(Memory::get_c_str(node->value.string)); | |||||
| fputs(escaped, file); | |||||
| putc('\"', file); | |||||
| free(escaped); | |||||
| } | |||||
| else | |||||
| fputs(Memory::get_c_str(node->value.string), file); | |||||
| } break; | |||||
| case (Lisp_Object_Type::Vector): { | |||||
| fputs("[", file); | |||||
| if (node->value.vector.length > 0) | |||||
| print(node->value.vector.data); | |||||
| for (int i = 1; i < node->value.vector.length; ++i) { | |||||
| fputs(" ", file); | |||||
| print(node->value.vector.data+i); | |||||
| while (currentChar != '\0') | |||||
| { | |||||
| currentCharIndex++; | |||||
| currentChar = (char)pwchar[currentCharIndex]; | |||||
| } | } | ||||
| fputs("]", file); | |||||
| } break; | |||||
| case (Lisp_Object_Type::Function): { | |||||
| if (node->userType) { | |||||
| fprintf(file, "[%s]", Memory::get_c_str(node->userType->value.symbol.identifier)); | |||||
| break; | |||||
| const int charCount = currentCharIndex + 1; | |||||
| // allocate a new block of memory size char (1 byte) instead of wide char (2 bytes) | |||||
| char* filePathC = (char*)malloc(sizeof(char) * charCount); | |||||
| for (int i = 0; i < charCount; i++) | |||||
| { | |||||
| // convert to char (1 byte) | |||||
| char character = (char)pwchar[i]; | |||||
| *filePathC = character; | |||||
| filePathC += sizeof(char); | |||||
| } | } | ||||
| if (node->value.function.type == Function_Type::Lambda) | |||||
| fputs("[lambda]", file); | |||||
| else if (node->value.function.type == Function_Type::Special_Lambda) | |||||
| fputs("[special-lambda]", file); | |||||
| else if (node->value.function.type == Function_Type::Macro) | |||||
| fputs("[macro]", file); | |||||
| else | |||||
| assert(false); | |||||
| } break; | |||||
| case (Lisp_Object_Type::Pair): { | |||||
| Lisp_Object* head = node; | |||||
| // first check if it is a quotation form, in that case we want | |||||
| // to print it prettier | |||||
| if (Memory::get_type(head->value.pair.first) == Lisp_Object_Type::Symbol) { | |||||
| String* identifier = head->value.pair.first->value.symbol.identifier; | |||||
| auto symbol = head->value.pair.first; | |||||
| auto quote_sym = Memory::get_or_create_lisp_object_symbol("quote"); | |||||
| auto unquote_sym = Memory::get_or_create_lisp_object_symbol("unquote"); | |||||
| auto quasiquote_sym = Memory::get_or_create_lisp_object_symbol("quasiquote"); | |||||
| if (symbol == quote_sym || symbol == unquote_sym) | |||||
| { | |||||
| putc(symbol == quote_sym | |||||
| ? '\'' | |||||
| : ',', file); | |||||
| assert_type(head->value.pair.rest, Lisp_Object_Type::Pair); | |||||
| assert(head->value.pair.rest->value.pair.rest == Memory::nil); | |||||
| print(head->value.pair.rest->value.pair.first, print_repr, file); | |||||
| break; | |||||
| filePathC += '\0'; | |||||
| filePathC -= (sizeof(char) * charCount); | |||||
| return filePathC; | |||||
| } | |||||
| const wchar_t* char_to_wchar(const char* c) { | |||||
| const size_t cSize = strlen(c)+1; | |||||
| wchar_t* wc = new wchar_t[cSize]; | |||||
| mbstowcs (wc, c, cSize); | |||||
| return wc; | |||||
| } | |||||
| proc print(Lisp_Object* node, bool print_repr, FILE* file) -> void { | |||||
| switch (Memory::get_type(node)) { | |||||
| case (Lisp_Object_Type::Nil): fputs("()", file); break; | |||||
| case (Lisp_Object_Type::T): fputs("t", file); break; | |||||
| case (Lisp_Object_Type::Number): { | |||||
| if (abs(node->value.number - (int)node->value.number) < 0.000001f) | |||||
| fprintf(file, "%d", (int)node->value.number); | |||||
| else | |||||
| fprintf(file, "%f", node->value.number); | |||||
| } break; | |||||
| case (Lisp_Object_Type::Keyword): fputs(":", file); // NOTE(Felix): intentionall fallthough | |||||
| case (Lisp_Object_Type::Symbol): fprintf(file, "%s", Memory::get_c_str(node->value.symbol)); break; | |||||
| case (Lisp_Object_Type::Continuation): fputs("[continuation]", file); break; | |||||
| case (Lisp_Object_Type::CFunction): fputs("[C-function]", file); break; | |||||
| case (Lisp_Object_Type::Pointer): fputs("[pointer]", file); break; | |||||
| case (Lisp_Object_Type::HashMap): { | |||||
| for_hash_map (*(node->value.hashMap)) { | |||||
| fputs(" ", file); | |||||
| print(key, true, file); | |||||
| fputs(" -> ", file); | |||||
| print((Lisp_Object*)value, true, file); | |||||
| fputs("\n", file); | |||||
| } | |||||
| } break; | |||||
| case (Lisp_Object_Type::String): { | |||||
| if (print_repr) { | |||||
| putc('\"', file); | |||||
| char* escaped = escape_string(Memory::get_c_str(node->value.string)); | |||||
| fputs(escaped, file); | |||||
| putc('\"', file); | |||||
| free(escaped); | |||||
| } | |||||
| else | |||||
| fputs(Memory::get_c_str(node->value.string), file); | |||||
| } break; | |||||
| case (Lisp_Object_Type::Vector): { | |||||
| fputs("[", file); | |||||
| if (node->value.vector.length > 0) | |||||
| print(node->value.vector.data, print_repr, file); | |||||
| for (int i = 1; i < node->value.vector.length; ++i) { | |||||
| fputs(" ", file); | |||||
| print(node->value.vector.data+i, print_repr, file); | |||||
| } | } | ||||
| else if (symbol == quasiquote_sym) { | |||||
| putc('`', file); | |||||
| assert_type(head->value.pair.rest, Lisp_Object_Type::Pair); | |||||
| print(head->value.pair.rest->value.pair.first, print_repr, file); | |||||
| fputs("]", file); | |||||
| } break; | |||||
| case (Lisp_Object_Type::Function): { | |||||
| if (node->userType) { | |||||
| fprintf(file, "[%s]", Memory::get_c_str(node->userType->value.symbol)); | |||||
| break; | break; | ||||
| } | } | ||||
| } | |||||
| if (node->value.function->type == Function_Type::Lambda) | |||||
| fputs("[lambda]", file); | |||||
| // else if (node->value.function->type == Function_Type::Special_Lambda) | |||||
| // fputs("[special-lambda]", file); | |||||
| else if (node->value.function->type == Function_Type::Macro) | |||||
| fputs("[macro]", file); | |||||
| else | |||||
| assert(false); | |||||
| } break; | |||||
| case (Lisp_Object_Type::Pair): { | |||||
| Lisp_Object* head = node; | |||||
| // first check if it is a quotation form, in that case we want | |||||
| // to print it prettier | |||||
| if (Memory::get_type(head->value.pair.first) == Lisp_Object_Type::Symbol) { | |||||
| String* identifier = head->value.pair.first->value.symbol; | |||||
| auto symbol = head->value.pair.first; | |||||
| auto quote_sym = Memory::get_symbol("quote"); | |||||
| auto unquote_sym = Memory::get_symbol("unquote"); | |||||
| auto quasiquote_sym = Memory::get_symbol("quasiquote"); | |||||
| auto unquote_splicing_sym = Memory::get_symbol("unquote-splicing"); | |||||
| if (symbol == quote_sym || symbol == unquote_sym || symbol == unquote_splicing_sym) | |||||
| { | |||||
| if (symbol == quote_sym) | |||||
| putc('\'', file); | |||||
| else if (symbol == unquote_sym) | |||||
| putc(',', file); | |||||
| else if (symbol == unquote_splicing_sym) | |||||
| fputs(",@", file); | |||||
| assert_type(head->value.pair.rest, Lisp_Object_Type::Pair); | |||||
| assert(head->value.pair.rest->value.pair.rest == Memory::nil); | |||||
| print(head->value.pair.rest->value.pair.first, print_repr, file); | |||||
| break; | |||||
| } | |||||
| else if (symbol == quasiquote_sym) { | |||||
| putc('`', file); | |||||
| assert_type(head->value.pair.rest, Lisp_Object_Type::Pair); | |||||
| print(head->value.pair.rest->value.pair.first, print_repr, file); | |||||
| break; | |||||
| } | |||||
| } | |||||
| putc('(', file); | |||||
| // NOTE(Felix): We cuold do a while true here, however in case | |||||
| // we want to print a broken list (for logging the error) we | |||||
| // should do more checks. | |||||
| while (head) { | |||||
| print(head->value.pair.first, print_repr, file); | |||||
| head = head->value.pair.rest; | |||||
| if (!head) | |||||
| return; | |||||
| if (Memory::get_type(head) != Lisp_Object_Type::Pair) | |||||
| break; | |||||
| putc(' ', file); | |||||
| } | |||||
| putc('(', file); | |||||
| // NOTE(Felix): We could do a while true here, however in case | |||||
| // we want to print a broken list (for logging the error) we | |||||
| // should do more checks. | |||||
| while (head) { | |||||
| print(head->value.pair.first, print_repr, file); | |||||
| head = head->value.pair.rest; | |||||
| if (!head) | |||||
| return; | |||||
| if (Memory::get_type(head) != Lisp_Object_Type::Pair) | |||||
| break; | |||||
| putc(' ', file); | |||||
| } | |||||
| if (Memory::get_type(head) != Lisp_Object_Type::Nil) { | |||||
| fputs(" . ", file); | |||||
| print(head, print_repr, file); | |||||
| } | |||||
| if (Memory::get_type(head) != Lisp_Object_Type::Nil) { | |||||
| fputs(" . ", file); | |||||
| print(head, print_repr, file); | |||||
| } | |||||
| putc(')', file); | |||||
| } break; | |||||
| putc(')', file); | |||||
| } break; | |||||
| } | |||||
| } | } | ||||
| } | |||||
| proc print_single_call(Lisp_Object* obj) -> void { | |||||
| printf(console_cyan); | |||||
| print(obj, true); | |||||
| printf(console_normal); | |||||
| printf("\n at "); | |||||
| if (obj->sourceCodeLocation) { | |||||
| printf("%s (line %d, position %d)", | |||||
| Memory::get_c_str( | |||||
| obj->sourceCodeLocation->file), | |||||
| obj->sourceCodeLocation->line, | |||||
| obj->sourceCodeLocation->column); | |||||
| } else { | |||||
| fputs("no source code location avaliable", stdout); | |||||
| proc print_single_call(Lisp_Object* obj) -> void { | |||||
| printf(console_cyan); | |||||
| print(obj, true); | |||||
| printf(console_normal); | |||||
| printf("\n at "); | |||||
| if (obj->sourceCodeLocation) { | |||||
| printf("%s (line %d, position %d)", | |||||
| Memory::get_c_str( | |||||
| obj->sourceCodeLocation->file), | |||||
| obj->sourceCodeLocation->line, | |||||
| obj->sourceCodeLocation->column); | |||||
| } else { | |||||
| fputs("no source code location avaliable", stdout); | |||||
| } | |||||
| } | } | ||||
| } | |||||
| proc print_call_stack() -> void { | |||||
| using Globals::Current_Execution::call_stack; | |||||
| proc print_call_stack() -> void { | |||||
| using Globals::Current_Execution::call_stack; | |||||
| printf("callstack [%d] (most recent call last):\n", call_stack.next_index); | |||||
| for (int i = 0; i < call_stack.next_index; ++i) { | |||||
| printf("%2d -> ", i); | |||||
| print_single_call(call_stack.data[i]); | |||||
| printf("\n"); | |||||
| printf("callstack [%d] (most recent call last):\n", call_stack.next_index); | |||||
| for (int i = 0; i < call_stack.next_index; ++i) { | |||||
| printf("%2d -> ", i); | |||||
| print_single_call(call_stack.data[i]); | |||||
| printf("\n"); | |||||
| } | |||||
| } | } | ||||
| } | |||||
| proc log_error() -> void { | |||||
| fputs(console_red, stdout); | |||||
| fputs(Memory::get_c_str(Globals::error->message), stdout); | |||||
| puts(console_normal); | |||||
| proc log_error() -> void { | |||||
| fputs(console_red, stdout); | |||||
| fputs(Memory::get_c_str(Globals::error->message), stdout); | |||||
| puts(console_normal); | |||||
| fputs(" in: ", stdout); | |||||
| print_call_stack(); | |||||
| puts(console_normal); | |||||
| Globals::Current_Execution::call_stack.next_index = 0; | |||||
| fputs(" in: ", stdout); | |||||
| print_call_stack(); | |||||
| puts(console_normal); | |||||
| } | |||||
| } | } | ||||
| @@ -0,0 +1,121 @@ | |||||
| #define _CRT_SECURE_NO_WARNINGS | |||||
| #define _CRT_SECURE_NO_DEPRECATE | |||||
| #include <stdlib.h> | |||||
| #include <stdio.h> | |||||
| #include <time.h> | |||||
| #include <string.h> | |||||
| #include <cmath> | |||||
| #include <ctype.h> | |||||
| #include <stdarg.h> | |||||
| #include <errno.h> | |||||
| #include <new> | |||||
| #ifdef _MSC_VER | |||||
| # include <direct.h> | |||||
| # include <windows.h> | |||||
| #else | |||||
| # include <unistd.h> | |||||
| # include <signal.h> | |||||
| #endif | |||||
| /* | |||||
| Forward declare the hash functions for the hashmap (needed at least | |||||
| for clang++) | |||||
| */ | |||||
| namespace Slime {struct Lisp_Object;} | |||||
| bool hm_objects_match(char* a, char* b); | |||||
| bool hm_objects_match(void* a, void* b); | |||||
| bool hm_objects_match(Slime::Lisp_Object* a, Slime::Lisp_Object* b); | |||||
| unsigned int hm_hash(char* str); | |||||
| unsigned int hm_hash(void* ptr); | |||||
| unsigned int hm_hash(Slime::Lisp_Object* obj); | |||||
| #include "ftb/hashmap.hpp" | |||||
| #include "ftb/types.hpp" | |||||
| #include "ftb/arraylist.hpp" | |||||
| #include "ftb/bucket_allocator.hpp" | |||||
| #include "ftb/macros.hpp" | |||||
| #include "ftb/profiler.hpp" | |||||
| # include "defines.cpp" | |||||
| # include "assert.hpp" | |||||
| # include "define_macros.hpp" | |||||
| # include "platform.cpp" | |||||
| # include "structs.cpp" | |||||
| # include "forward_decls.cpp" | |||||
| bool hm_objects_match(char* a, char* b) { | |||||
| return strcmp(a, b) == 0; | |||||
| } | |||||
| bool hm_objects_match(void* a, void* b) { | |||||
| return a == b; | |||||
| } | |||||
| bool hm_objects_match(Slime::Lisp_Object* a, Slime::Lisp_Object* b) { | |||||
| return Slime::lisp_object_equal(a, b); | |||||
| } | |||||
| unsigned int hm_hash(char* str) { | |||||
| unsigned int value = str[0] << 7; | |||||
| int i = 0; | |||||
| while (str[i]) { | |||||
| value = (10000003 * value) ^ str[i++]; | |||||
| } | |||||
| return value ^ i; | |||||
| } | |||||
| unsigned int hm_hash(void* ptr) { | |||||
| return ((unsigned long long)ptr * 2654435761) % 4294967296; | |||||
| } | |||||
| unsigned int hm_hash(Slime::Lisp_Object* obj) { | |||||
| using namespace Slime; | |||||
| switch (Memory::get_type(obj)) { | |||||
| // hash from adress: if two objects of these types have | |||||
| // different addresses, they are different | |||||
| case Lisp_Object_Type::CFunction: | |||||
| case Lisp_Object_Type::Function: | |||||
| case Lisp_Object_Type::Symbol: | |||||
| case Lisp_Object_Type::Keyword: | |||||
| case Lisp_Object_Type::Continuation: | |||||
| case Lisp_Object_Type::Nil: | |||||
| case Lisp_Object_Type::T: | |||||
| return hm_hash((void*) obj); | |||||
| // hash from contents: even if objects are themselved | |||||
| // different, they cauld be equivalent: | |||||
| case Lisp_Object_Type::Pointer: return hm_hash((void*) obj->value.pointer); | |||||
| case Lisp_Object_Type::Number: return hm_hash((void*) (unsigned long long)obj->value.number); // HACK(Felix): yes | |||||
| case Lisp_Object_Type::String: return hm_hash((char*) &obj->value.string->data); | |||||
| case Lisp_Object_Type::Pair: { | |||||
| u32 hash = 1; | |||||
| for_lisp_list (obj) { | |||||
| hash <<= 1; | |||||
| hash += hm_hash(it); | |||||
| } | |||||
| return hash; | |||||
| } break; | |||||
| case Lisp_Object_Type::Vector: | |||||
| case Lisp_Object_Type::HashMap: | |||||
| default: | |||||
| create_not_yet_implemented_error(); | |||||
| return 0; | |||||
| } | |||||
| } | |||||
| # include "globals.cpp" | |||||
| # include "memory.cpp" | |||||
| # include "gc.cpp" | |||||
| # include "lisp_object.cpp" | |||||
| # include "error.cpp" | |||||
| # include "io.cpp" | |||||
| # include "env.cpp" | |||||
| # include "parse.cpp" | |||||
| # include "eval.cpp" | |||||
| # include "visualization.cpp" | |||||
| # include "docgeneration.cpp" | |||||
| # include "built_ins.cpp" | |||||
| # include "testing.cpp" | |||||
| // # include "undefines.cpp" | |||||
| @@ -1,54 +1,55 @@ | |||||
| proc create_source_code_location(String* file, int line, int col) -> Source_Code_Location* { | |||||
| if (!file) | |||||
| return nullptr; | |||||
| namespace Slime { | |||||
| proc create_source_code_location(String* file, int line, int col) -> Source_Code_Location* { | |||||
| if (!file) | |||||
| return nullptr; | |||||
| Source_Code_Location* ret = new(Source_Code_Location); | |||||
| ret->file = file; | |||||
| ret->line = line; | |||||
| ret->column = col; | |||||
| return ret; | |||||
| } | |||||
| proc Lisp_Object_Type_to_string(Lisp_Object_Type type) -> const char* { | |||||
| switch (type) { | |||||
| case(Lisp_Object_Type::Nil): return "nil"; | |||||
| case(Lisp_Object_Type::T): return "t"; | |||||
| case(Lisp_Object_Type::Number): return "number"; | |||||
| case(Lisp_Object_Type::String): return "string"; | |||||
| case(Lisp_Object_Type::Symbol): return "symbol"; | |||||
| case(Lisp_Object_Type::Keyword): return "keyword"; | |||||
| case(Lisp_Object_Type::Function): return "function"; | |||||
| case(Lisp_Object_Type::CFunction): return "C-function"; | |||||
| case(Lisp_Object_Type::Continuation): return "continuation"; | |||||
| case(Lisp_Object_Type::Pair): return "pair"; | |||||
| case(Lisp_Object_Type::Vector): return "vector"; | |||||
| case(Lisp_Object_Type::Pointer): return "pointer"; | |||||
| case(Lisp_Object_Type::HashMap): return "hashmap"; | |||||
| Source_Code_Location* ret = (Source_Code_Location*)malloc(sizeof(Source_Code_Location)); | |||||
| ret->file = file; | |||||
| ret->line = line; | |||||
| ret->column = col; | |||||
| return ret; | |||||
| } | } | ||||
| return "unknown"; | |||||
| } | |||||
| proc create_positional_argument_list(int initial_capacity) -> Positional_Arguments { | |||||
| Positional_Arguments ret; | |||||
| ret.symbols = create_Lisp_Object_array_list(initial_capacity); | |||||
| return ret; | |||||
| } | |||||
| proc append_to_positional_argument_list(Positional_Arguments* args, Lisp_Object* sym) -> void { | |||||
| append_to_array_list(&args->symbols, sym); | |||||
| } | |||||
| proc Lisp_Object_Type_to_string(Lisp_Object_Type type) -> const char* { | |||||
| switch (type) { | |||||
| case(Lisp_Object_Type::Nil): return "nil"; | |||||
| case(Lisp_Object_Type::T): return "t"; | |||||
| case(Lisp_Object_Type::Number): return "number"; | |||||
| case(Lisp_Object_Type::String): return "string"; | |||||
| case(Lisp_Object_Type::Symbol): return "symbol"; | |||||
| case(Lisp_Object_Type::Keyword): return "keyword"; | |||||
| case(Lisp_Object_Type::Function): return "function"; | |||||
| case(Lisp_Object_Type::CFunction): return "C-function"; | |||||
| case(Lisp_Object_Type::Continuation): return "continuation"; | |||||
| case(Lisp_Object_Type::Pair): return "pair"; | |||||
| case(Lisp_Object_Type::Vector): return "vector"; | |||||
| case(Lisp_Object_Type::Pointer): return "pointer"; | |||||
| case(Lisp_Object_Type::HashMap): return "hashmap"; | |||||
| } | |||||
| return "unknown"; | |||||
| } | |||||
| proc create_keyword_argument_list(int initial_capacity) -> Keyword_Arguments { | |||||
| Keyword_Arguments ret; | |||||
| ret.keywords = create_Lisp_Object_array_list(initial_capacity); | |||||
| ret.values = create_Lisp_Object_array_list(initial_capacity); | |||||
| return ret; | |||||
| } | |||||
| Lisp_Object::~Lisp_Object() { | |||||
| free(sourceCodeLocation); | |||||
| sourceCodeLocation = 0; | |||||
| proc append_to_keyword_argument_list(Keyword_Arguments* args, | |||||
| Lisp_Object* keyword, | |||||
| Lisp_Object* default_value) -> void | |||||
| { | |||||
| append_to_array_list(&args->keywords, keyword); | |||||
| append_to_array_list(&args->values, default_value); | |||||
| switch (Memory::get_type(this)) { | |||||
| case Lisp_Object_Type::HashMap: { | |||||
| delete this->value.hashMap; | |||||
| } break; | |||||
| case Lisp_Object_Type::CFunction: { | |||||
| this->value.cFunction->args.positional.symbols.~Array_List(); | |||||
| this->value.cFunction->args.keyword.keywords.~Array_List(); | |||||
| this->value.cFunction->args.keyword.values.~Array_List(); | |||||
| delete this->value.cFunction; | |||||
| } break; | |||||
| case Lisp_Object_Type::Function:{ | |||||
| this->value.function->args.positional.symbols.~Array_List(); | |||||
| this->value.function->args.keyword.keywords.~Array_List(); | |||||
| this->value.function->args.keyword.values.~Array_List(); | |||||
| delete this->value.function; | |||||
| } break; | |||||
| default: break; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -1,19 +1,33 @@ | |||||
| #include "slime.h" | |||||
| #include "libslime.cpp" | |||||
| int main(int argc, char* argv[]) { | int main(int argc, char* argv[]) { | ||||
| #ifdef _MSC_VER | |||||
| // enable colored terminal output for windows | |||||
| HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); | |||||
| DWORD dwMode = 0; | |||||
| GetConsoleMode(hOut, &dwMode); | |||||
| dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; | |||||
| SetConsoleMode(hOut, dwMode); | |||||
| #endif | |||||
| if (argc > 1) { | if (argc > 1) { | ||||
| if (Slime::string_equal(argv[1], "--run-tests")) { | if (Slime::string_equal(argv[1], "--run-tests")) { | ||||
| int res = Slime::run_all_tests(); | int res = Slime::run_all_tests(); | ||||
| // Slime::interprete_file((char*)"generate-docs.slime"); | |||||
| return res ? 0 : 1; | return res ? 0 : 1; | ||||
| } | |||||
| Slime::interprete_file(argv[1]); | |||||
| if (Slime::Globals::error) { | |||||
| Slime::log_error(); | |||||
| return 1; | |||||
| } else if (Slime::string_equal(argv[1], "--generate-docs")) { | |||||
| Slime::Memory::init(4096 * 256* 100); | |||||
| if (Slime::Globals::error) return 1; | |||||
| Slime::built_in_load(Slime::Memory::create_string("generate-docs.slime")); | |||||
| Slime::Memory::free_everything(); | |||||
| } else { | |||||
| Slime::interprete_file(argv[1]); | |||||
| } | } | ||||
| } else { | } else { | ||||
| Slime::interprete_stdin(); | Slime::interprete_stdin(); | ||||
| return 0; | |||||
| } | } | ||||
| if (Slime::Globals::error) return 1; | |||||
| } | } | ||||
| @@ -1,26 +1,22 @@ | |||||
| namespace Memory { | |||||
| namespace Slime::Memory { | |||||
| // ------------------ | // ------------------ | ||||
| // global symbol / keyword table | // global symbol / keyword table | ||||
| // ------------------ | // ------------------ | ||||
| String_Hash_Map* global_symbol_table; | |||||
| String_Hash_Map* global_keyword_table; | |||||
| Hash_Map<char*, Lisp_Object*> global_symbol_table; | |||||
| Hash_Map<char*, Lisp_Object*> global_keyword_table; | |||||
| Hash_Map<char*, Environment*> file_to_env_map; | |||||
| // ------------------ | // ------------------ | ||||
| // lisp_objects | // lisp_objects | ||||
| // ------------------ | // ------------------ | ||||
| int object_memory_size; | |||||
| Int_Array_List free_spots_in_object_memory; | |||||
| Lisp_Object* object_memory; | |||||
| int next_index_in_object_memory = 0; | |||||
| Bucket_Allocator<Lisp_Object> object_memory(1024, 8); | |||||
| // ------------------ | // ------------------ | ||||
| // environments | // environments | ||||
| // ------------------ | // ------------------ | ||||
| int environment_memory_size; | |||||
| Environment_Array_List free_spots_in_environment_memory; | |||||
| Environment* environment_memory; | |||||
| int next_index_in_environment_memory = 0; | |||||
| Bucket_Allocator<Environment> environment_memory(1024, 8); | |||||
| // ------------------ | // ------------------ | ||||
| // strings | // strings | ||||
| @@ -29,30 +25,35 @@ namespace Memory { | |||||
| // free_spots_in_string_memory is an arraylist of pointers into | // free_spots_in_string_memory is an arraylist of pointers into | ||||
| // the string_memory, where dead String objects live (which give | // the string_memory, where dead String objects live (which give | ||||
| // information about their size) | // information about their size) | ||||
| Void_Ptr_Array_List free_spots_in_string_memory; | |||||
| Array_List<void*> free_spots_in_string_memory; | |||||
| String* string_memory; | String* string_memory; | ||||
| String* next_free_spot_in_string_memory; | String* next_free_spot_in_string_memory; | ||||
| // ------------------ | // ------------------ | ||||
| // immutables | // immutables | ||||
| // ------------------ | // ------------------ | ||||
| Lisp_Object* nil = nullptr; | |||||
| Lisp_Object* t = nullptr; | |||||
| Lisp_Object* nil = nullptr; | |||||
| Lisp_Object* t = nullptr; | |||||
| Lisp_Object* _if = nullptr; | |||||
| Lisp_Object* _define = nullptr; | |||||
| Lisp_Object* _begin = nullptr; | |||||
| proc print_status() { | proc print_status() { | ||||
| printf("Memory Status:\n" | |||||
| " - %f%% of the object_memory is used\n" | |||||
| " - %d of %d total Lisp_Objects are in use\n" | |||||
| " - %d holes in used memory (fragmentation)\n", | |||||
| (1.0*next_index_in_object_memory - free_spots_in_object_memory.next_index)/object_memory_size, | |||||
| next_index_in_object_memory - free_spots_in_object_memory.next_index, object_memory_size, | |||||
| free_spots_in_object_memory.next_index); | |||||
| // printf("Memory Status:\n" | |||||
| // " - %f%% of the object_memory is used\n" | |||||
| // " - %d of %d total Lisp_Objects are in use\n" | |||||
| // " - %d holes in used memory (fragmentation)\n", | |||||
| // (1.0*next_index_in_object_memory - free_spots_in_object_memory.next_index)/object_memory_size, | |||||
| // next_index_in_object_memory - free_spots_in_object_memory.next_index, object_memory_size, | |||||
| // free_spots_in_object_memory.next_index); | |||||
| printf("Memory Status:\n" | |||||
| " - %f%% of the string_memory is used\n" | |||||
| " - %d holes in used memory (fragmentation)\n", | |||||
| (1.0*(size_t)next_free_spot_in_string_memory - (size_t)string_memory)/string_memory_size, | |||||
| free_spots_in_string_memory.next_index); | |||||
| // printf("Memory Status:\n" | |||||
| // " - %f%% of the string_memory is used\n" | |||||
| // " - %d holes in used memory (fragmentation)\n", | |||||
| // (1.0*(size_t)next_free_spot_in_string_memory - (size_t)string_memory)/string_memory_size, | |||||
| // free_spots_in_string_memory.next_index); | |||||
| } | } | ||||
| inline proc get_c_str(String* str) -> char* { | inline proc get_c_str(String* str) -> char* { | ||||
| @@ -112,7 +113,7 @@ namespace Memory { | |||||
| } | } | ||||
| proc delete_string(String* str) { | proc delete_string(String* str) { | ||||
| append_to_array_list(&free_spots_in_string_memory, (void*)str); | |||||
| free_spots_in_string_memory.append((void*)str); | |||||
| } | } | ||||
| proc duplicate_string(String* str) -> String* { | proc duplicate_string(String* str) -> String* { | ||||
| @@ -123,41 +124,8 @@ namespace Memory { | |||||
| return create_string(str, (int)strlen(str)); | return create_string(str, (int)strlen(str)); | ||||
| } | } | ||||
| // proc create_string_formatted (const char* format, ...) -> String* { | |||||
| // // HACK(Felix): the length of all strings is 200!!!!!!!!!! | |||||
| // // HACK(Felix): the length of all strings is 200!!!!!!!!!! | |||||
| // int length = 200; | |||||
| // String* ret = create_string("", length); | |||||
| // int written_length; | |||||
| // va_list args; | |||||
| // va_start(args, format); | |||||
| // written_length = vsnprintf(&ret->data, length, format, args); | |||||
| // va_end(args); | |||||
| // ret->length = written_length; | |||||
| // return ret; | |||||
| // } | |||||
| proc create_lisp_object() -> Lisp_Object* { | proc create_lisp_object() -> Lisp_Object* { | ||||
| int index; | |||||
| // if we have no free spots then append at the end | |||||
| if (free_spots_in_object_memory.next_index == 0) { | |||||
| // if we still have space | |||||
| if (object_memory_size == next_index_in_object_memory) { | |||||
| create_out_of_memory_error( | |||||
| "There is not enough space in the lisp object " | |||||
| "memory to allocate additional lisp objects. " | |||||
| "Maybe try increasing the Memory size when " | |||||
| "calling Memory::init()"); | |||||
| return nullptr; | |||||
| } | |||||
| index = next_index_in_object_memory++; | |||||
| } else { | |||||
| // else fill a free spot, and remove the free spot | |||||
| index = free_spots_in_object_memory.data[free_spots_in_object_memory.next_index--]; | |||||
| } | |||||
| Lisp_Object* object = object_memory+index; | |||||
| Lisp_Object* object = object_memory.allocate(); | |||||
| object->flags = 0; | object->flags = 0; | ||||
| object->sourceCodeLocation = nullptr; | object->sourceCodeLocation = nullptr; | ||||
| object->userType = nullptr; | object->userType = nullptr; | ||||
| @@ -165,29 +133,49 @@ namespace Memory { | |||||
| return object; | return object; | ||||
| } | } | ||||
| proc free_everything() { | |||||
| free(global_symbol_table); | |||||
| free(global_keyword_table); | |||||
| free(object_memory); | |||||
| free(environment_memory); | |||||
| proc free_everything() -> void { | |||||
| free(string_memory); | free(string_memory); | ||||
| object_memory.for_each([](Lisp_Object* lo){ | |||||
| lo->~Lisp_Object(); | |||||
| }); | |||||
| environment_memory.for_each([](Environment* env){ | |||||
| env->~Environment(); | |||||
| }); | |||||
| // free the exe dir: | |||||
| free(Globals::load_path.data[0]); | |||||
| } | } | ||||
| proc init(int oms, int ems, int sms) { | |||||
| global_symbol_table = create_String_hashmap(); | |||||
| global_keyword_table = create_String_hashmap(); | |||||
| object_memory_size = oms; | |||||
| environment_memory_size = ems; | |||||
| string_memory_size = sms; | |||||
| proc create_child_environment(Environment* parent) -> Environment* { | |||||
| free_spots_in_object_memory = create_Int_array_list(); | |||||
| free_spots_in_environment_memory = create_Environment_array_list(); | |||||
| free_spots_in_string_memory = create_Void_Ptr_array_list(); | |||||
| Environment* env = environment_memory.allocate(); | |||||
| object_memory = (Lisp_Object*)malloc(object_memory_size * sizeof(Lisp_Object)); | |||||
| environment_memory = (Environment*)malloc(environment_memory_size * sizeof(Environment)); | |||||
| string_memory = (String*)malloc(string_memory_size * sizeof(char)); | |||||
| // inject a new array list; | |||||
| new(&env->parents) Array_List<Environment*>; | |||||
| if (parent) | |||||
| env->parents.append(parent); | |||||
| new(&env->hm) Hash_Map<void*, Lisp_Object*>; | |||||
| return env; | |||||
| } | |||||
| proc create_empty_environment() -> Environment* { | |||||
| Environment* ret; | |||||
| try ret = create_child_environment(nullptr); | |||||
| return ret; | |||||
| } | |||||
| proc init(int sms) -> void { | |||||
| profile_this(); | |||||
| char* exe_path = get_exe_dir(); | |||||
| // don't free exe path because it will be used until end of time | |||||
| add_to_load_path(exe_path); | |||||
| add_to_load_path("../bin/"); | |||||
| string_memory_size = sms; | |||||
| string_memory = (String*)malloc(string_memory_size * sizeof(char)); | |||||
| next_free_spot_in_string_memory = string_memory; | next_free_spot_in_string_memory = string_memory; | ||||
| @@ -202,30 +190,73 @@ namespace Memory { | |||||
| try_void Parser::standard_in = create_string("stdin"); | try_void Parser::standard_in = create_string("stdin"); | ||||
| Globals::Current_Execution::envi_stack.next_index = 0; | Globals::Current_Execution::envi_stack.next_index = 0; | ||||
| push_environment(create_built_ins_environment()); | |||||
| Environment* env; | |||||
| try_void env = create_built_ins_environment(); | |||||
| push_environment(env); | |||||
| Environment* user_env; | |||||
| try_void user_env = Memory::create_child_environment(env); | |||||
| push_environment(user_env); | |||||
| try_void _if = lookup_symbol(get_symbol("if"), env); | |||||
| try_void _define = lookup_symbol(get_symbol("define"), env); | |||||
| try_void _begin = lookup_symbol(get_symbol("begin"), env); | |||||
| } | } | ||||
| proc reset() -> void { | proc reset() -> void { | ||||
| free_spots_in_object_memory.next_index = 0; | |||||
| free_spots_in_environment_memory.next_index = 0; | |||||
| profile_this(); | |||||
| free_spots_in_string_memory.next_index = 0; | free_spots_in_string_memory.next_index = 0; | ||||
| global_symbol_table = create_String_hashmap(); | |||||
| global_keyword_table = create_String_hashmap(); | |||||
| global_symbol_table.~Hash_Map(); | |||||
| global_keyword_table.~Hash_Map(); | |||||
| file_to_env_map.~Hash_Map(); | |||||
| new(&global_symbol_table) Hash_Map<char*, Lisp_Object*>; | |||||
| new(&global_keyword_table) Hash_Map<char*, Lisp_Object*>; | |||||
| new(&file_to_env_map) Hash_Map<char*, Lisp_Object*>; | |||||
| try_void Parser::standard_in = create_string("stdin"); | try_void Parser::standard_in = create_string("stdin"); | ||||
| // because t and nil are always there we start the index at 2 | |||||
| next_index_in_object_memory = 2; | |||||
| next_index_in_environment_memory = 0; | |||||
| object_memory.for_each([](Lisp_Object* lo){ | |||||
| lo->~Lisp_Object(); | |||||
| }); | |||||
| environment_memory.for_each([](Environment* env){ | |||||
| env->~Environment(); | |||||
| }); | |||||
| object_memory.~Bucket_Allocator(); | |||||
| environment_memory.~Bucket_Allocator(); | |||||
| new(&object_memory) Bucket_Allocator<Lisp_Object>(1024, 8); | |||||
| new(&environment_memory) Bucket_Allocator<Environment>(1024, 8); | |||||
| next_free_spot_in_string_memory = string_memory; | next_free_spot_in_string_memory = string_memory; | ||||
| // init nil | |||||
| try_void nil = create_lisp_object(); | |||||
| set_type(nil, Lisp_Object_Type::Nil); | |||||
| // init t | |||||
| try_void t = create_lisp_object(); | |||||
| set_type(t, Lisp_Object_Type::T); | |||||
| Globals::Current_Execution::envi_stack.next_index = 0; | Globals::Current_Execution::envi_stack.next_index = 0; | ||||
| push_environment(create_built_ins_environment()); | |||||
| Environment* env; | |||||
| try_void env = create_built_ins_environment(); | |||||
| push_environment(env); | |||||
| Environment* user_env; | |||||
| try_void user_env = Memory::create_child_environment(env); | |||||
| push_environment(user_env); | |||||
| try_void _if = lookup_symbol(get_symbol("if"), env); | |||||
| try_void _define = lookup_symbol(get_symbol("define"), env); | |||||
| try_void _begin = lookup_symbol(get_symbol("begin"), env); | |||||
| } | } | ||||
| proc create_lisp_object_pointer(void* ptr) -> Lisp_Object* { | |||||
| proc create_lisp_object(void* ptr) -> Lisp_Object* { | |||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| set_type(node, Lisp_Object_Type::Pointer); | set_type(node, Lisp_Object_Type::Pointer); | ||||
| @@ -237,11 +268,11 @@ namespace Memory { | |||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| set_type(node, Lisp_Object_Type::HashMap); | set_type(node, Lisp_Object_Type::HashMap); | ||||
| node->value.hashMap = create_Lisp_Obj_hashmap(); | |||||
| node->value.hashMap = new Hash_Map<Lisp_Object*, Lisp_Object*>; | |||||
| return node; | return node; | ||||
| } | } | ||||
| proc create_lisp_object_number(double number) -> Lisp_Object* { | |||||
| proc create_lisp_object(double number) -> Lisp_Object* { | |||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| set_type(node, Lisp_Object_Type::Number); | set_type(node, Lisp_Object_Type::Number); | ||||
| @@ -249,7 +280,7 @@ namespace Memory { | |||||
| return node; | return node; | ||||
| } | } | ||||
| proc create_lisp_object_string(String* str) -> Lisp_Object* { | |||||
| proc create_lisp_object(String* str) -> Lisp_Object* { | |||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| set_type(node, Lisp_Object_Type::String); | set_type(node, Lisp_Object_Type::String); | ||||
| @@ -257,7 +288,7 @@ namespace Memory { | |||||
| return node; | return node; | ||||
| } | } | ||||
| proc create_lisp_object_string(const char* str) -> Lisp_Object* { | |||||
| proc create_lisp_object(const char* str) -> Lisp_Object* { | |||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| set_type(node, Lisp_Object_Type::String); | set_type(node, Lisp_Object_Type::String); | ||||
| @@ -266,21 +297,12 @@ namespace Memory { | |||||
| } | } | ||||
| proc allocate_vector(int size) -> Lisp_Object* { | proc allocate_vector(int size) -> Lisp_Object* { | ||||
| // NOTE(Felix): Vectors are now only allocated at the back of | |||||
| // the memory, we don't check the free list at all right now | |||||
| if (object_memory_size - next_index_in_object_memory < size) { | |||||
| create_out_of_memory_error( | |||||
| "There is not enough space in the lisp object " | |||||
| "memory to allocate additional lisp objects. " | |||||
| "Maybe try increasing the Memory size when " | |||||
| "calling Memory::init()"); | |||||
| Lisp_Object* ret = object_memory.allocate(size); | |||||
| if (!ret) { | |||||
| create_out_of_memory_error("The vector is too big to fit in a memory bucket."); | |||||
| return nullptr; | return nullptr; | ||||
| } | } | ||||
| int start = next_index_in_object_memory; | |||||
| next_index_in_object_memory += size; | |||||
| return object_memory+start; | |||||
| return ret; | |||||
| } | } | ||||
| proc create_lisp_object_vector(int length, Lisp_Object* element_list) -> Lisp_Object* { | proc create_lisp_object_vector(int length, Lisp_Object* element_list) -> Lisp_Object* { | ||||
| @@ -305,57 +327,92 @@ namespace Memory { | |||||
| return node; | return node; | ||||
| } | } | ||||
| proc create_new_lisp_object_symbol(String* identifier) -> Lisp_Object* { | |||||
| proc create_lisp_object_vector(Lisp_Object* e1) -> Lisp_Object* { | |||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| set_type(node, Lisp_Object_Type::Symbol); | |||||
| node->value.symbol.identifier = identifier; | |||||
| node->value.symbol.hash = hash(identifier); | |||||
| hm_set(global_symbol_table, get_c_str(identifier), node); | |||||
| set_type(node, Lisp_Object_Type::Vector); | |||||
| node->value.vector.length = 1; | |||||
| try node->value.vector.data = allocate_vector(1); | |||||
| node->value.vector.data[0] = *e1; | |||||
| return node; | return node; | ||||
| } | } | ||||
| proc create_new_lisp_object_keyword(String* keyword) -> Lisp_Object* { | |||||
| proc create_lisp_object_vector(Lisp_Object* e1, Lisp_Object* e2) -> Lisp_Object* { | |||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| set_type(node, Lisp_Object_Type::Keyword); | |||||
| node->value.symbol.identifier = keyword; | |||||
| node->value.symbol.hash = hash(keyword); | |||||
| hm_set(global_keyword_table, get_c_str(keyword), node); | |||||
| set_type(node, Lisp_Object_Type::Vector); | |||||
| node->value.vector.length = 2; | |||||
| try node->value.vector.data = allocate_vector(2); | |||||
| node->value.vector.data[0] = *e1; | |||||
| node->value.vector.data[1] = *e2; | |||||
| return node; | return node; | ||||
| } | } | ||||
| proc get_or_create_lisp_object_symbol(String* identifier) -> Lisp_Object* { | |||||
| if (auto ret = hm_get_object(global_symbol_table, get_c_str(identifier))) | |||||
| return (Lisp_Object*)ret; | |||||
| else | |||||
| return create_new_lisp_object_symbol(identifier); | |||||
| proc create_lisp_object_vector(Lisp_Object* e1, Lisp_Object* e2, Lisp_Object* e3) -> Lisp_Object* { | |||||
| Lisp_Object* node; | |||||
| try node = create_lisp_object(); | |||||
| set_type(node, Lisp_Object_Type::Vector); | |||||
| node->value.vector.length = 3; | |||||
| try node->value.vector.data = allocate_vector(3); | |||||
| node->value.vector.data[0] = *e1; | |||||
| node->value.vector.data[1] = *e2; | |||||
| node->value.vector.data[2] = *e3; | |||||
| return node; | |||||
| } | } | ||||
| proc get_or_create_lisp_object_symbol(const char* identifier) -> Lisp_Object* { | |||||
| if (auto ret = hm_get_object(global_symbol_table, (char*)identifier)) | |||||
| proc get_symbol(String* identifier) -> Lisp_Object* { | |||||
| Lisp_Object* node = global_symbol_table.get_object(get_c_str(identifier)); | |||||
| if (node) | |||||
| return (Lisp_Object*)node; | |||||
| try node = create_lisp_object(); | |||||
| set_type(node, Lisp_Object_Type::Symbol); | |||||
| node->value.symbol = identifier; | |||||
| global_symbol_table.set_object(get_c_str(identifier), node); | |||||
| return node; | |||||
| } | |||||
| proc get_symbol(const char* identifier) -> Lisp_Object* { | |||||
| if (auto ret = global_symbol_table.get_object((char*)identifier)) | |||||
| return (Lisp_Object*)ret; | return (Lisp_Object*)ret; | ||||
| else { | else { | ||||
| String* str; | String* str; | ||||
| try str = Memory::create_string(identifier); | try str = Memory::create_string(identifier); | ||||
| return create_new_lisp_object_symbol(str); | |||||
| return get_symbol(str); | |||||
| } | } | ||||
| } | } | ||||
| proc get_or_create_lisp_object_keyword(String* keyword) -> Lisp_Object* { | |||||
| if (auto ret = hm_get_object(global_keyword_table, get_c_str(keyword))) | |||||
| return (Lisp_Object*)ret; | |||||
| else | |||||
| return create_new_lisp_object_keyword(keyword); | |||||
| proc get_keyword(String* keyword) -> Lisp_Object* { | |||||
| Lisp_Object* node = global_keyword_table.get_object(get_c_str(keyword)); | |||||
| if (node) | |||||
| return (Lisp_Object*)node; | |||||
| try node = create_lisp_object(); | |||||
| set_type(node, Lisp_Object_Type::Keyword); | |||||
| node->value.symbol = keyword; | |||||
| global_keyword_table.set_object(get_c_str(keyword), node); | |||||
| return node; | |||||
| } | } | ||||
| proc get_or_create_lisp_object_keyword(const char* keyword) -> Lisp_Object* { | |||||
| if (auto ret = hm_get_object(global_keyword_table, (char*)keyword)) | |||||
| proc get_keyword(const char* keyword) -> Lisp_Object* { | |||||
| if (auto ret = global_keyword_table.get_object((char*)keyword)) | |||||
| return (Lisp_Object*)ret; | return (Lisp_Object*)ret; | ||||
| else { | else { | ||||
| String* str; | String* str; | ||||
| try str = Memory::create_string(keyword); | try str = Memory::create_string(keyword); | ||||
| return create_new_lisp_object_keyword(str); | |||||
| return get_keyword(str); | |||||
| } | } | ||||
| } | } | ||||
| @@ -363,13 +420,20 @@ namespace Memory { | |||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| set_type(node, Lisp_Object_Type::CFunction); | set_type(node, Lisp_Object_Type::CFunction); | ||||
| // node->value.lambdaWrapper = new Lambda_Wrapper(function); | |||||
| node->value.cFunction = new(cFunction); | |||||
| node->value.cFunction->args = {}; | |||||
| node->value.cFunction = new cFunction; | |||||
| node->value.cFunction->is_special_form = is_special; | node->value.cFunction->is_special_form = is_special; | ||||
| return node; | return node; | ||||
| } | } | ||||
| proc create_lisp_object_function(Function_Type ft) -> Lisp_Object* { | |||||
| Lisp_Object* func; | |||||
| try func = Memory::create_lisp_object(); | |||||
| Memory::set_type(func, Lisp_Object_Type::Function); | |||||
| func->value.function = new Function; | |||||
| func->value.function->type = ft; | |||||
| return func; | |||||
| } | |||||
| proc create_lisp_object_pair(Lisp_Object* first, Lisp_Object* rest) -> Lisp_Object* { | proc create_lisp_object_pair(Lisp_Object* first, Lisp_Object* rest) -> Lisp_Object* { | ||||
| Lisp_Object* node; | Lisp_Object* node; | ||||
| try node = create_lisp_object(); | try node = create_lisp_object(); | ||||
| @@ -386,7 +450,9 @@ namespace Memory { | |||||
| // we don't copy singleton objects | // we don't copy singleton objects | ||||
| if (n == Memory::nil || n == Memory::t || | if (n == Memory::nil || n == Memory::t || | ||||
| Memory::get_type(n) == Lisp_Object_Type::Symbol || | Memory::get_type(n) == Lisp_Object_Type::Symbol || | ||||
| Memory::get_type(n) == Lisp_Object_Type::Keyword) | |||||
| Memory::get_type(n) == Lisp_Object_Type::Keyword || | |||||
| Memory::get_type(n) == Lisp_Object_Type::Function || | |||||
| Memory::get_type(n) == Lisp_Object_Type::CFunction) | |||||
| { | { | ||||
| return n; | return n; | ||||
| } | } | ||||
| @@ -394,6 +460,7 @@ namespace Memory { | |||||
| Lisp_Object* target; | Lisp_Object* target; | ||||
| try target = create_lisp_object(); | try target = create_lisp_object(); | ||||
| *target = *n; | *target = *n; | ||||
| return target; | return target; | ||||
| } | } | ||||
| @@ -403,46 +470,6 @@ namespace Memory { | |||||
| return copy_lisp_object(n); | return copy_lisp_object(n); | ||||
| } | } | ||||
| proc create_child_environment(Environment* parent) -> Environment* { | |||||
| Environment* env; | |||||
| // if we have no free spots then append at the end | |||||
| if (free_spots_in_environment_memory.next_index == 0) { | |||||
| int index; | |||||
| // if we still have space | |||||
| if (environment_memory_size == next_index_in_environment_memory) { | |||||
| create_out_of_memory_error( | |||||
| "There is not enough space in the environment " | |||||
| "memory to allocate additional environments. " | |||||
| "Maybe try increasing the Memory size when " | |||||
| "calling Memory::init()"); | |||||
| return nullptr; | |||||
| } | |||||
| index = next_index_in_environment_memory++; | |||||
| env = environment_memory+index; | |||||
| } else { | |||||
| // else fill a free spot, and remove the free spot | |||||
| env = free_spots_in_environment_memory.data[--free_spots_in_environment_memory.next_index]; | |||||
| } | |||||
| int start_capacity = 16; | |||||
| env->parents = create_Environment_array_list(); | |||||
| if (parent) | |||||
| append_to_array_list(&env->parents, parent); | |||||
| env->hm = create_Void_Ptr_hashmap(); | |||||
| return env; | |||||
| } | |||||
| proc create_empty_environment() -> Environment* { | |||||
| Environment* ret; | |||||
| try ret = create_child_environment(nullptr); | |||||
| return ret; | |||||
| } | |||||
| proc create_built_ins_environment() -> Environment* { | proc create_built_ins_environment() -> Environment* { | ||||
| Environment* ret; | Environment* ret; | ||||
| try ret = create_empty_environment(); | try ret = create_empty_environment(); | ||||
| @@ -451,25 +478,12 @@ namespace Memory { | |||||
| pop_environment(); | pop_environment(); | ||||
| }; | }; | ||||
| load_built_ins_into_environment(); | |||||
| // save the current working directory | |||||
| //char* cwd = get_cwd(); | |||||
| //defer { | |||||
| // change_cwd(cwd); | |||||
| // free(cwd); | |||||
| //}; | |||||
| //// get the direction of the exe | |||||
| //char* exe_path = get_exe_dir(); | |||||
| //change_cwd(exe_path); | |||||
| //free(exe_path); | |||||
| built_in_load(Memory::create_string("pre.slime")); | |||||
| try load_built_ins_into_environment(); | |||||
| try built_in_load(Memory::create_string("pre.slime")); | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| inline proc create_list(Lisp_Object* o1) -> Lisp_Object* { | inline proc create_list(Lisp_Object* o1) -> Lisp_Object* { | ||||
| Lisp_Object* ret; | Lisp_Object* ret; | ||||
| try ret = create_lisp_object_pair(o1, nil); | try ret = create_lisp_object_pair(o1, nil); | ||||
| @@ -1,42 +1,9 @@ | |||||
| namespace Parser { | |||||
| namespace Slime::Parser { | |||||
| String* standard_in; | String* standard_in; | ||||
| String* parser_file; | String* parser_file; | ||||
| int parser_line; | int parser_line; | ||||
| int parser_col; | int parser_col; | ||||
| proc maybe_expand_reader_macro() -> Lisp_Object* { | |||||
| // static Lisp_Object* quote_sym = Memory::get_or_create_lisp_object_symbol("quote"); | |||||
| // static Lisp_Object* qquote_sym = Memory::get_or_create_lisp_object_symbol("quasiquote"); | |||||
| // static Lisp_Object* unquote_sym = Memory::get_or_create_lisp_object_symbol("unquote"); | |||||
| // static Lisp_Object* us_sym = Memory::get_or_create_lisp_object_symbol("unquote-splicing"); | |||||
| // if (text[*index_in_text] == '\'') { | |||||
| // *index_in_text++; | |||||
| // return quote_sym; | |||||
| // } | |||||
| // if (text[*index_in_text] == '`') { | |||||
| // *index_in_text++; | |||||
| // return qquote_sym; | |||||
| // } | |||||
| // if (text[*index_in_text] == ',') { | |||||
| // *index_in_text++; | |||||
| // return unquote_sym; | |||||
| // } | |||||
| // if (text[*index_in_text] == ',' && text[*index_in_text] == '@') { | |||||
| // *index_in_text += 2; | |||||
| // return us_sym; | |||||
| // } | |||||
| return nullptr; | |||||
| } | |||||
| proc inject_scl(Lisp_Object* lo) -> void { | |||||
| lo->sourceCodeLocation = new(Source_Code_Location); | |||||
| lo->sourceCodeLocation->file = parser_file; | |||||
| lo->sourceCodeLocation->line = parser_line; | |||||
| lo->sourceCodeLocation->column = parser_col; | |||||
| } | |||||
| proc eat_comment_line(char* text, int* index_in_text) -> void { | proc eat_comment_line(char* text, int* index_in_text) -> void { | ||||
| // safety check if we are actually starting a comment here | // safety check if we are actually starting a comment here | ||||
| if (text[*index_in_text] != ';') | if (text[*index_in_text] != ';') | ||||
| @@ -51,13 +18,8 @@ namespace Parser { | |||||
| text[(*index_in_text)] != '\0'); | text[(*index_in_text)] != '\0'); | ||||
| } | } | ||||
| proc eat_whitespace(char* text, int* index_in_text) -> void { | |||||
| // skip whitespaces | |||||
| while (text[(*index_in_text)] == ' ' || | |||||
| text[(*index_in_text)] == '\t' || | |||||
| text[(*index_in_text)] == '\n' || | |||||
| text[(*index_in_text)] == '\r') | |||||
| { | |||||
| proc step_char(char* text, int* index_in_text, int steps = 1) { | |||||
| for (int i = 0; i < steps; ++i) { | |||||
| if (text[(*index_in_text)] == '\n') { | if (text[(*index_in_text)] == '\n') { | ||||
| ++parser_line; | ++parser_line; | ||||
| parser_col = 0; | parser_col = 0; | ||||
| @@ -65,10 +27,21 @@ namespace Parser { | |||||
| ++parser_col; | ++parser_col; | ||||
| ++(*index_in_text); | ++(*index_in_text); | ||||
| } | } | ||||
| } | |||||
| proc eat_whitespace(char* text, int* index_in_text) -> void { | |||||
| // skip whitespaces | |||||
| while (text[(*index_in_text)] == ' ' || | |||||
| text[(*index_in_text)] == '\t' || | |||||
| text[(*index_in_text)] == '\n' || | |||||
| text[(*index_in_text)] == '\r') | |||||
| { | |||||
| step_char(text, index_in_text); | |||||
| } | |||||
| } | } | ||||
| proc eat_until_code(char* text, int* index_in_text) -> void { | proc eat_until_code(char* text, int* index_in_text) -> void { | ||||
| profile_this(); | |||||
| int position_before; | int position_before; | ||||
| do { | do { | ||||
| position_before = *index_in_text; | position_before = *index_in_text; | ||||
| @@ -77,11 +50,48 @@ namespace Parser { | |||||
| } while (position_before != *index_in_text); | } while (position_before != *index_in_text); | ||||
| } | } | ||||
| proc read_atom(char* text, int* index_in_text) -> String* { | |||||
| proc step_char_and_eat_until_code(char* text, int* index_in_text) { | |||||
| step_char(text, index_in_text); | |||||
| eat_until_code(text, index_in_text); | |||||
| } | |||||
| proc parse_fancy_delimiter(char* text, int* index_in_text, char l_delimiter, char r_delimiter, Lisp_Object* first_elem) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| if (text[*index_in_text] != l_delimiter) { | |||||
| create_parsing_error("a fancy cannot be parsed here"); | |||||
| return nullptr; | |||||
| } | |||||
| Lisp_Object* ret; | |||||
| Lisp_Object* head; | |||||
| try ret = Memory::create_lisp_object_pair(first_elem, Memory::nil); | |||||
| head = ret; | |||||
| step_char(text, index_in_text); | |||||
| eat_until_code(text, index_in_text); | |||||
| while (text[*index_in_text] != r_delimiter) { | |||||
| Lisp_Object* element; | |||||
| try element = parse_expression(text, index_in_text); | |||||
| try head->value.pair.rest = Memory::create_lisp_object_pair(element, Memory::nil); | |||||
| head = head->value.pair.rest; | |||||
| eat_until_code(text, index_in_text); | |||||
| } | |||||
| step_char(text, index_in_text); | |||||
| return ret; | |||||
| } | |||||
| proc get_atom_text_length(char* text, int* index_in_text) -> int { | |||||
| int atom_length = 0; | int atom_length = 0; | ||||
| while (text[*index_in_text+atom_length] != ' ' && | while (text[*index_in_text+atom_length] != ' ' && | ||||
| text[*index_in_text+atom_length] != ')' && | text[*index_in_text+atom_length] != ')' && | ||||
| text[*index_in_text+atom_length] != '(' && | text[*index_in_text+atom_length] != '(' && | ||||
| text[*index_in_text+atom_length] != '[' && | |||||
| text[*index_in_text+atom_length] != ']' && | |||||
| text[*index_in_text+atom_length] != '{' && | |||||
| text[*index_in_text+atom_length] != '}' && | |||||
| text[*index_in_text+atom_length] != '\0' && | text[*index_in_text+atom_length] != '\0' && | ||||
| text[*index_in_text+atom_length] != '\n' && | text[*index_in_text+atom_length] != '\n' && | ||||
| text[*index_in_text+atom_length] != '\r' && | text[*index_in_text+atom_length] != '\r' && | ||||
| @@ -89,80 +99,64 @@ namespace Parser { | |||||
| { | { | ||||
| ++atom_length; | ++atom_length; | ||||
| } | } | ||||
| return atom_length; | |||||
| } | |||||
| // let's mark the end of the atom there quickly, so the string can | |||||
| // be copied from there easily and then put the char that was | |||||
| // before there back | |||||
| char before = text[*index_in_text+atom_length]; | |||||
| text[*index_in_text+atom_length] = '\0'; | |||||
| // get the atom | |||||
| String* ret = Memory::create_string("", atom_length); | |||||
| // char* atom = (char*)malloc(atom_length*sizeof(char)+1); // plus null char | |||||
| strcpy(&ret->data, text+(*index_in_text)); | |||||
| proc parse_number(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| Lisp_Object* ret; | |||||
| try ret = Memory::create_lisp_object(0.0); | |||||
| // restore the original string | |||||
| text[*index_in_text+atom_length] = before; | |||||
| sscanf(text+*index_in_text, "%lf", &ret->value.number); | |||||
| // update the index to point to the character after the atom | |||||
| // ended | |||||
| *index_in_text += atom_length; | |||||
| parser_col += atom_length; | |||||
| int atom_length = get_atom_text_length(text, index_in_text); | |||||
| step_char(text, index_in_text, atom_length); | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| proc parse_number(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| double number; | |||||
| // TODO(Felix): parse the number direcrly from the string and | |||||
| // dont create a String first | |||||
| String* str_number = read_atom(text, index_in_text); | |||||
| sscanf(Memory::get_c_str(str_number), "%lf", &number); | |||||
| Lisp_Object* ret; | |||||
| try ret = Memory::create_lisp_object_number(number); | |||||
| proc parse_symbol_or_keyword(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| bool keyword = false; | |||||
| if (text[*index_in_text] == ':') { | |||||
| keyword = true; | |||||
| step_char(text, index_in_text); | |||||
| } | |||||
| int atom_length = get_atom_text_length(text, index_in_text); | |||||
| char orig = text[*index_in_text+atom_length]; | |||||
| text[*index_in_text+atom_length] = '\0'; | |||||
| inject_scl(ret); | |||||
| return ret; | |||||
| } | |||||
| proc parse_keyword(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| // we are now on the colon | |||||
| ++(*index_in_text); | |||||
| ++parser_col; | |||||
| String* str_keyword = read_atom(text, index_in_text); | |||||
| String* str_keyword; | |||||
| Lisp_Object* ret; | Lisp_Object* ret; | ||||
| try ret = Memory::get_or_create_lisp_object_keyword(str_keyword); | |||||
| try str_keyword = Memory::create_string("", atom_length); | |||||
| strcpy(&str_keyword->data, text+*index_in_text); | |||||
| inject_scl(ret); | |||||
| return ret; | |||||
| } | |||||
| if (keyword) { | |||||
| try ret = Memory::get_keyword(str_keyword); | |||||
| } else { | |||||
| try ret = Memory::get_symbol(str_keyword); | |||||
| } | |||||
| proc parse_symbol(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| // we are now at the first char of the symbol | |||||
| String* str_symbol = read_atom(text, index_in_text); | |||||
| Lisp_Object* ret; | |||||
| try ret = Memory::get_or_create_lisp_object_symbol(str_symbol); | |||||
| inject_scl(ret); | |||||
| text[*index_in_text+atom_length] = orig; | |||||
| step_char(text, index_in_text, atom_length); | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| proc parse_string(char* text, int* index_in_text) -> Lisp_Object*{ | |||||
| proc parse_string(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| // the first character is the '"' | // the first character is the '"' | ||||
| ++(*index_in_text); | |||||
| ++parser_col; | |||||
| step_char(text, index_in_text); | |||||
| // now we are at the first letter, if this is the closing '"' then | // now we are at the first letter, if this is the closing '"' then | ||||
| // it's easy | // it's easy | ||||
| if (text[*index_in_text] == '"') { | if (text[*index_in_text] == '"') { | ||||
| Lisp_Object* ret; | Lisp_Object* ret; | ||||
| try ret = Memory::create_lisp_object_string( | |||||
| Memory::create_string("", 0)); | |||||
| inject_scl(ret); | |||||
| try ret = Memory::create_lisp_object(Memory::create_string("", 0)); | |||||
| // inject_scl(ret); | |||||
| // plus one because we want to go after the quotes | // plus one because we want to go after the quotes | ||||
| *index_in_text += 1; | |||||
| ++parser_col; | |||||
| step_char(text, index_in_text); | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| @@ -170,10 +164,10 @@ namespace Parser { | |||||
| // okay so the first letter was not actually closing the string... | // okay so the first letter was not actually closing the string... | ||||
| int string_length = 0; | int string_length = 0; | ||||
| bool escaping = false; | bool escaping = false; | ||||
| while (!(text[*index_in_text+string_length] == '"' && !escaping)) | |||||
| { | |||||
| if (escaping) | |||||
| while (escaping || text[*index_in_text+string_length] != '"') { | |||||
| if (escaping) { | |||||
| escaping = false; | escaping = false; | ||||
| } | |||||
| else | else | ||||
| if (text[*index_in_text+string_length] == '\\') | if (text[*index_in_text+string_length] == '\\') | ||||
| escaping = true; | escaping = true; | ||||
| @@ -187,43 +181,29 @@ namespace Parser { | |||||
| // NOTE(Felix): Tactic: Through unescaping the string will | // NOTE(Felix): Tactic: Through unescaping the string will | ||||
| // only get shorter, so we replace it inplace and later jump | // only get shorter, so we replace it inplace and later jump | ||||
| // to the original end of the string. | // to the original end of the string. | ||||
| try unescape_string(text+(*index_in_text)); | |||||
| int new_len; | |||||
| try new_len = unescape_string(text+(*index_in_text)); | |||||
| String* string = Memory::create_string("", string_length); | |||||
| String* string = Memory::create_string("", new_len); | |||||
| // TODO(Felix): manually copy to parse control sequences | |||||
| // correctly without the need to unescape the string, also | |||||
| // better for keeping track of the encountered new lines and | |||||
| // characters since last new line so we can update the parser | |||||
| // location more easily | |||||
| strcpy(&string->data, text+(*index_in_text)); | strcpy(&string->data, text+(*index_in_text)); | ||||
| // printf("------ %s\n", &string->data); | |||||
| text[*index_in_text+string_length] = '"'; | text[*index_in_text+string_length] = '"'; | ||||
| // plus one because we want to go after the quotes | // plus one because we want to go after the quotes | ||||
| *index_in_text += string_length +1; | |||||
| // NOTE(Felix): this only has to be done until we manually | |||||
| // copy the string and we can do some bookeeping: | |||||
| /* recalculate the parser cursors position: */ | |||||
| /* new col = (count chars since last \n) + 1 */ | |||||
| for (int i = 0; i < string->length; ++i) { | |||||
| if (*((&string->data)+i) == '\n') { | |||||
| ++parser_line; | |||||
| parser_col = 0; | |||||
| } else { | |||||
| ++parser_col; | |||||
| } | |||||
| } | |||||
| step_char(text, index_in_text, string_length+1); | |||||
| Lisp_Object* ret; | Lisp_Object* ret; | ||||
| try ret = Memory::create_lisp_object_string(string); | |||||
| try ret = Memory::create_lisp_object(string); | |||||
| inject_scl(ret); | |||||
| // inject_scl(ret); | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| proc parse_atom(char* text, int* index_in_text) -> Lisp_Object* { | proc parse_atom(char* text, int* index_in_text) -> Lisp_Object* { | ||||
| profile_this(); | |||||
| Lisp_Object* ret; | |||||
| // numbers | // numbers | ||||
| if ((text[*index_in_text] <= 57 && // if number | if ((text[*index_in_text] <= 57 && // if number | ||||
| text[*index_in_text] >= 48) | text[*index_in_text] >= 48) | ||||
| @@ -238,272 +218,181 @@ namespace Parser { | |||||
| && | && | ||||
| (text[*index_in_text +1] <= 57 && | (text[*index_in_text +1] <= 57 && | ||||
| text[*index_in_text +1] >= 48))) | text[*index_in_text +1] >= 48))) | ||||
| return parse_number(text, index_in_text); | |||||
| // keywords | |||||
| if (text[*index_in_text] == ':') | |||||
| return parse_keyword(text, index_in_text); | |||||
| { | |||||
| try ret = parse_number(text, index_in_text); | |||||
| } | |||||
| // strings | |||||
| if (text[*index_in_text] == '"') | |||||
| return parse_string(text, index_in_text); | |||||
| else if (text[*index_in_text] == '"') | |||||
| try ret = parse_string(text, index_in_text); | |||||
| else | |||||
| try ret = parse_symbol_or_keyword(text, index_in_text); | |||||
| return parse_symbol(text, index_in_text); | |||||
| return ret; | |||||
| } | } | ||||
| proc parse_expression(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| // if it is quoted | |||||
| // TODO(Felix): This looks totally broken.. | |||||
| if (text[*index_in_text] == '\'' || | |||||
| text[*index_in_text] == '`' || | |||||
| text[*index_in_text] == '@' || | |||||
| text[*index_in_text] == ',') | |||||
| { | |||||
| char quoteType = text[*index_in_text]; | |||||
| ++(*index_in_text); | |||||
| ++parser_col; | |||||
| Lisp_Object* result; | |||||
| if (text[*index_in_text] == '(' || | |||||
| text[*index_in_text] == '\'' || | |||||
| text[*index_in_text] == '`' || | |||||
| text[*index_in_text] == '@' || | |||||
| text[*index_in_text] == ',') | |||||
| { | |||||
| try result = parse_expression(text, index_in_text); | |||||
| } else { | |||||
| try result = parse_atom(text, index_in_text); | |||||
| } | |||||
| Lisp_Object* ret = nullptr; | |||||
| if (quoteType == '\'') | |||||
| try ret = Memory::create_list(Memory::get_or_create_lisp_object_symbol("quote"), result); | |||||
| else if (quoteType == '`') | |||||
| try ret = Memory::create_list(Memory::get_or_create_lisp_object_symbol("quasiquote"), result); | |||||
| else if (quoteType == ',') | |||||
| try ret = Memory::create_list(Memory::get_or_create_lisp_object_symbol("unquote"), result); | |||||
| else if (quoteType == '@') { | |||||
| try ret = Memory::create_list(Memory::get_or_create_lisp_object_symbol("unquote-splicing"), result); | |||||
| } | |||||
| if (ret) inject_scl(ret); | |||||
| return ret; | |||||
| proc parse_list(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| if (text[*index_in_text] != '(') { | |||||
| create_parsing_error("a list cannot be parsed here"); | |||||
| return nullptr; | |||||
| } | } | ||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| // if it is not quoted | |||||
| ++(*index_in_text); | |||||
| ++parser_col; | |||||
| eat_whitespace(text, index_in_text); | |||||
| // if there was actually nothing in the list, we define here, | |||||
| // that that means nil | |||||
| if (text[(*index_in_text)] == ')') { | |||||
| ++(*index_in_text); | |||||
| ++parser_col; | |||||
| if (text[*index_in_text] == ')') { | |||||
| step_char(text, index_in_text); | |||||
| return Memory::nil; | return Memory::nil; | ||||
| } | } | ||||
| // okay there is something | |||||
| Lisp_Object* first_elem; | |||||
| Lisp_Object* ret; | |||||
| Lisp_Object* head; | Lisp_Object* head; | ||||
| try head = Memory::create_lisp_object(); | |||||
| Memory::set_type(head, Lisp_Object_Type::Pair); | |||||
| // head->value.pair = new(Pair); | |||||
| Lisp_Object* expression = head; | |||||
| while (true) { | |||||
| inject_scl(head); | |||||
| if (text[*index_in_text] == '(' || | |||||
| text[*index_in_text] == '\''|| | |||||
| text[*index_in_text] == '`' || | |||||
| text[*index_in_text] == '@' || | |||||
| text[*index_in_text] == ',') | |||||
| { | |||||
| try head->value.pair.first = parse_expression(text, index_in_text); | |||||
| } else { | |||||
| try head->value.pair.first = parse_atom(text, index_in_text); | |||||
| } | |||||
| eat_until_code(text, index_in_text); | |||||
| if (text[(*index_in_text)] == '\0') { | |||||
| create_parsing_error( | |||||
| "Unexpected EOF in %s:%d:%d", | |||||
| parser_file, parser_line, parser_col); | |||||
| return nullptr; | |||||
| } | |||||
| try first_elem = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(first_elem, Memory::nil); | |||||
| head = ret; | |||||
| if (text[(*index_in_text)] == ')') { | |||||
| head->value.pair.rest = Memory::nil; | |||||
| ++parser_col; | |||||
| ++(*index_in_text); | |||||
| break; | |||||
| } else if (text[(*index_in_text) ] == '.' && | |||||
| text[(*index_in_text)+1] == ' ') | |||||
| { | |||||
| ++parser_col; | |||||
| ++(*index_in_text); | |||||
| eat_until_code(text, index_in_text); | |||||
| eat_until_code(text, index_in_text); | |||||
| while (text[*index_in_text] != ')') { | |||||
| Lisp_Object* element; | |||||
| if (text[(*index_in_text)] == '(') | |||||
| head->value.pair.rest = parse_expression(text, index_in_text); | |||||
| else | |||||
| head->value.pair.rest = parse_atom(text, index_in_text); | |||||
| if (text[*index_in_text+0] == '.' && | |||||
| text[*index_in_text+1] == ' ') | |||||
| { | |||||
| step_char(text, index_in_text, 2); | |||||
| try element = parse_expression(text, index_in_text); | |||||
| head->value.pair.rest = element; | |||||
| eat_until_code(text, index_in_text); | eat_until_code(text, index_in_text); | ||||
| if (text[*index_in_text] != ')') { | |||||
| create_parsing_error("expected the list to end after the dotted end."); | |||||
| return nullptr; | |||||
| } | |||||
| step_char(text, index_in_text); | |||||
| return ret; | |||||
| } | |||||
| try element = parse_expression(text, index_in_text); | |||||
| try head->value.pair.rest = Memory::create_lisp_object_pair(element, Memory::nil); | |||||
| head = head->value.pair.rest; | |||||
| eat_until_code(text, index_in_text); | |||||
| } | |||||
| step_char(text, index_in_text); | |||||
| return ret; | |||||
| } | |||||
| if (text[(*index_in_text)] != ')') | |||||
| create_parsing_error( | |||||
| "Expected ')' after the element after the '.' in %s:%d:%d", | |||||
| create_source_code_location(parser_file, parser_line, parser_col)); | |||||
| ++parser_col; | |||||
| ++(*index_in_text); | |||||
| break; | |||||
| proc maybe_expand_short_form(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| Lisp_Object* vector_sym = Memory::get_symbol("vector"); | |||||
| Lisp_Object* hash_map_sym = Memory::get_symbol("hash-map"); | |||||
| Lisp_Object* quote_sym = Memory::get_symbol("quote"); | |||||
| Lisp_Object* quasiquote_sym = Memory::get_symbol("quasiquote"); | |||||
| Lisp_Object* unquote_sym = Memory::get_symbol("unquote"); | |||||
| Lisp_Object* unquote_splicing_sym = Memory::get_symbol("unquote-splicing"); | |||||
| Lisp_Object* ret = nullptr; | |||||
| Lisp_Object* expr; | |||||
| switch (text[*index_in_text]) { | |||||
| case '\'': { | |||||
| // quote | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| try expr = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(expr, Memory::nil); | |||||
| try ret = Memory::create_lisp_object_pair(quote_sym, ret); | |||||
| } break; | |||||
| case '`': { | |||||
| // quasiquote | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| try expr = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(expr, Memory::nil); | |||||
| try ret = Memory::create_lisp_object_pair(quasiquote_sym, ret); | |||||
| } break; | |||||
| case ',': { | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| if (text[*index_in_text] == '@') { | |||||
| // unquote-splicing | |||||
| step_char_and_eat_until_code(text, index_in_text); | |||||
| try expr = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(expr, Memory::nil); | |||||
| try ret = Memory::create_lisp_object_pair(unquote_splicing_sym, ret); | |||||
| } else { | } else { | ||||
| try head->value.pair.rest = Memory::create_lisp_object_pair(Memory::nil, Memory::nil); | |||||
| head = head->value.pair.rest; | |||||
| // unquote | |||||
| try expr = parse_expression(text, index_in_text); | |||||
| try ret = Memory::create_lisp_object_pair(expr, Memory::nil); | |||||
| try ret = Memory::create_lisp_object_pair(unquote_sym, ret); | |||||
| } | } | ||||
| } break; | |||||
| case '[': { | |||||
| // vector | |||||
| try ret = parse_fancy_delimiter(text, index_in_text, '[', ']', vector_sym); | |||||
| } break; | |||||
| case '{': { | |||||
| // hashmap | |||||
| try ret = parse_fancy_delimiter(text, index_in_text, '{', '}', hash_map_sym); | |||||
| } break; | |||||
| default: break; | |||||
| } | } | ||||
| return expression; | |||||
| return ret; | |||||
| } | } | ||||
| proc parse_single_expression(char* text) -> Lisp_Object* { | |||||
| parser_file = standard_in; | |||||
| parser_line = 1; | |||||
| parser_col = 1; | |||||
| proc parse_expression(char* text, int* index_in_text) -> Lisp_Object* { | |||||
| profile_this(); | |||||
| Lisp_Object* ret; | |||||
| eat_until_code(text, index_in_text); | |||||
| try ret = maybe_expand_short_form(text, index_in_text); | |||||
| if (ret) | |||||
| return ret; | |||||
| int index_in_text = 0; | |||||
| Lisp_Object* result; | |||||
| eat_until_code(text, &index_in_text); | |||||
| if (text[(index_in_text)] == '\0') | |||||
| return Memory::nil; | |||||
| if (text[index_in_text] == '(' || | |||||
| text[index_in_text] == '\'' || | |||||
| text[index_in_text] == '@' || | |||||
| text[index_in_text] == '`' || | |||||
| text[index_in_text] == ',') | |||||
| { | |||||
| try { | |||||
| result = parse_expression(text, &index_in_text); | |||||
| } | |||||
| if (text[*index_in_text] == '(') { | |||||
| try ret = parse_list(text, index_in_text); | |||||
| } else { | |||||
| try ret = parse_atom(text, index_in_text); | |||||
| } | } | ||||
| else | |||||
| try { | |||||
| result = parse_atom(text, &index_in_text); | |||||
| } | |||||
| eat_until_code(text, &index_in_text); | |||||
| if (text[(index_in_text)] == '\0') | |||||
| return result; | |||||
| create_parsing_error("Trainling garbage after expression at %s:%d:%d", | |||||
| parser_file, parser_line, parser_col); | |||||
| return nullptr; | |||||
| return ret; | |||||
| } | |||||
| proc parse_single_expression(wchar_t* text) -> Lisp_Object* { | |||||
| char* res = wchar_to_char(text); | |||||
| defer {free(res);}; | |||||
| return parse_single_expression(res); | |||||
| } | } | ||||
| proc parse_single_expression_or_bare_words(char* text, char* bare) -> Lisp_Object* { | |||||
| proc parse_single_expression(char* text) -> Lisp_Object* { | |||||
| parser_file = standard_in; | parser_file = standard_in; | ||||
| parser_line = 1; | parser_line = 1; | ||||
| parser_col = 1; | parser_col = 1; | ||||
| int index_in_text = 0; | int index_in_text = 0; | ||||
| Lisp_Object* result; | |||||
| eat_until_code(text, &index_in_text); | |||||
| if (text[(index_in_text)] == '\0') | |||||
| return Memory::nil; | |||||
| if (text[index_in_text] == '(' || | |||||
| text[index_in_text] == '\'' || | |||||
| text[index_in_text] == '@' || | |||||
| text[index_in_text] == '`' || | |||||
| text[index_in_text] == ',') | |||||
| { | |||||
| try { | |||||
| result = parse_expression(text, &index_in_text); | |||||
| } | |||||
| return result; | |||||
| } | |||||
| else { | |||||
| // TODO(Felix): What is going on, why do we not have to | |||||
| // increase the index_in_text | |||||
| int end_pos = index_in_text; | |||||
| while (text[end_pos] != '\n') | |||||
| ++end_pos; | |||||
| text[end_pos] = '\0'; | |||||
| Lisp_Object* str; | |||||
| try str = Memory::create_lisp_object_string( | |||||
| Memory::create_string(text+index_in_text)); | |||||
| text[end_pos] = '\n'; | |||||
| return Memory::create_list(Memory::get_or_create_lisp_object_symbol(bare), str); | |||||
| } | |||||
| Lisp_Object* ret; | |||||
| try ret = parse_expression(text, &index_in_text); | |||||
| return ret; | |||||
| } | } | ||||
| proc write_expanded_file(String* file_name, Lisp_Object_Array_List program) -> void { | |||||
| const char* ext = ".expanded"; | |||||
| char* newName = (char*)calloc(10 + file_name->length, sizeof(char)); | |||||
| strcpy(newName, Memory::get_c_str(file_name)); | |||||
| strcat(newName, ext); | |||||
| FILE *f = fopen(newName, "w"); | |||||
| defer { | |||||
| fclose(f); | |||||
| free(newName); | |||||
| }; | |||||
| if (f == NULL) { | |||||
| printf("Error opening .expanded file for writing!\n"); | |||||
| exit(1); | |||||
| } | |||||
| for (int i = 0; i < program.next_index; ++i) { | |||||
| // a macro will parse as nil for now, so we skip those | |||||
| if (program.data[i] == Memory::nil) | |||||
| continue; | |||||
| print(program.data[i], true, f); | |||||
| fprintf(f, "\n\n"); | |||||
| } | |||||
| } | |||||
| proc parse_program(String* file_name, char* text) -> Lisp_Object_Array_List { | |||||
| proc parse_program(String* file_name, char* text) -> Array_List<Lisp_Object*>* { | |||||
| profile_this(); | |||||
| parser_file = file_name; | parser_file = file_name; | ||||
| parser_line = 1; | parser_line = 1; | ||||
| parser_col = 0; | parser_col = 0; | ||||
| Lisp_Object_Array_List program = create_Lisp_Object_array_list(); | |||||
| Array_List<Lisp_Object*>* program = new Array_List<Lisp_Object*>; | |||||
| int index_in_text = 0; | int index_in_text = 0; | ||||
| Lisp_Object* parsed; | |||||
| eat_until_code(text, &index_in_text); | |||||
| while (text[index_in_text] != '\0') { | while (text[index_in_text] != '\0') { | ||||
| switch (text[index_in_text]) { | |||||
| case '(': { | |||||
| Lisp_Object* parsed; | |||||
| try_struct { | |||||
| parsed = parse_expression(text, &index_in_text); | |||||
| } | |||||
| append_to_array_list(&program, parsed); | |||||
| } break; | |||||
| case ';': | |||||
| case ' ': | |||||
| case '\t': | |||||
| case '\n': | |||||
| case '\r': { | |||||
| eat_until_code(text, &index_in_text); | |||||
| } break; | |||||
| default: | |||||
| /* syntax error */ | |||||
| create_parsing_error("Garbage in file scope at %s:%d:%d", | |||||
| parser_file, parser_line, parser_col); | |||||
| return {}; | |||||
| } | |||||
| try parsed = parse_expression(text, &index_in_text); | |||||
| program->append(parsed); | |||||
| eat_until_code(text, &index_in_text); | |||||
| } | } | ||||
| write_expanded_file(file_name, program); | |||||
| return program; | return program; | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,135 +1,170 @@ | |||||
| inline proc get_cwd() -> char* { | |||||
| const int buf_size = 2048; | |||||
| char* res = (char*)malloc(buf_size * sizeof(char)); | |||||
| namespace Slime { | |||||
| inline proc get_cwd() -> char* { | |||||
| const int buf_size = 2048; | |||||
| char* res = (char*)malloc(buf_size * sizeof(char)); | |||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||
| _getcwd(res, buf_size); | |||||
| _getcwd(res, buf_size); | |||||
| #else | #else | ||||
| getcwd(res, buf_size); | |||||
| getcwd(res, buf_size); | |||||
| #endif | #endif | ||||
| return res; | |||||
| } | |||||
| return res; | |||||
| } | |||||
| inline proc change_cwd(char* dir) -> void { | |||||
| inline proc change_cwd(char* dir) -> void { | |||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||
| _chdir(dir); | |||||
| _chdir(dir); | |||||
| #else | #else | ||||
| chdir(dir); | |||||
| chdir(dir); | |||||
| #endif | #endif | ||||
| } | |||||
| } | |||||
| proc get_exe_dir() -> char* { | |||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||
| DWORD last_error; | |||||
| DWORD result; | |||||
| DWORD path_size = 1024; | |||||
| char* path = (char*)malloc(1024); | |||||
| while (true) { | |||||
| memset(path, 0, path_size); | |||||
| result = GetModuleFileName(0, path, path_size - 1); | |||||
| last_error = GetLastError(); | |||||
| if (0 == result) { | |||||
| free(path); | |||||
| path = 0; | |||||
| break; | |||||
| int vasprintf(char **strp, const char *fmt, va_list ap) { | |||||
| // _vscprintf tells you how big the buffer needs to be | |||||
| int len = _vscprintf(fmt, ap); | |||||
| if (len == -1) { | |||||
| return -1; | |||||
| } | } | ||||
| else if (result == path_size - 1) { | |||||
| free(path); | |||||
| /* May need to also check for ERROR_SUCCESS here if XP/2K */ | |||||
| if (ERROR_INSUFFICIENT_BUFFER != last_error) { | |||||
| path = 0; | |||||
| break; | |||||
| } | |||||
| path_size = path_size * 2; | |||||
| path = (char*)malloc(path_size); | |||||
| size_t size = (size_t)len + 1; | |||||
| char *str = (char*)malloc(size); | |||||
| if (!str) { | |||||
| return -1; | |||||
| } | } | ||||
| else | |||||
| break; | |||||
| // _vsprintf_s is the "secure" version of vsprintf | |||||
| int r = vsprintf_s(str, len + 1, fmt, ap); | |||||
| if (r == -1) { | |||||
| free(str); | |||||
| return -1; | |||||
| } | |||||
| *strp = str; | |||||
| return r; | |||||
| } | } | ||||
| if (!path) { | |||||
| fprintf(stderr, "Failure: %ld\n", last_error); | |||||
| return nullptr; | |||||
| int asprintf(char **strp, const char *fmt, ...) { | |||||
| va_list ap; | |||||
| va_start(ap, fmt); | |||||
| int r = vasprintf(strp, fmt, ap); | |||||
| va_end(ap); | |||||
| return r; | |||||
| } | } | ||||
| else { | |||||
| // remove the exe name, so we are only left with the path | |||||
| #endif | |||||
| int index_in_path = -1; | |||||
| int last_backslash = -1; | |||||
| proc get_exe_dir() -> char* { | |||||
| #ifdef _MSC_VER | |||||
| DWORD last_error; | |||||
| DWORD result; | |||||
| DWORD path_size = 1024; | |||||
| char* path = (char*)malloc(1024); | |||||
| while (true) { | |||||
| memset(path, 0, path_size); | |||||
| result = GetModuleFileName(0, path, path_size - 1); | |||||
| last_error = GetLastError(); | |||||
| char c; | |||||
| while ((c = path[++index_in_path]) != '\0') { | |||||
| if (c == '\\') | |||||
| last_backslash = index_in_path; | |||||
| if (0 == result) { | |||||
| free(path); | |||||
| path = 0; | |||||
| break; | |||||
| } | |||||
| else if (result == path_size - 1) { | |||||
| free(path); | |||||
| /* May need to also check for ERROR_SUCCESS here if XP/2K */ | |||||
| if (ERROR_INSUFFICIENT_BUFFER != last_error) { | |||||
| path = 0; | |||||
| break; | |||||
| } | |||||
| path_size = path_size * 2; | |||||
| path = (char*)malloc(path_size); | |||||
| } | |||||
| else | |||||
| break; | |||||
| } | } | ||||
| // we are assuming there are some backslashes | |||||
| path[last_backslash+1] = '\0'; | |||||
| if (!path) { | |||||
| fprintf(stderr, "Failure: %ld\n", last_error); | |||||
| return nullptr; | |||||
| } | |||||
| else { | |||||
| // remove the exe name, so we are only left with the path | |||||
| return path; | |||||
| } | |||||
| #else | |||||
| ssize_t size = 512, i, n; | |||||
| char *path, *temp; | |||||
| int index_in_path = -1; | |||||
| int last_backslash = -1; | |||||
| while (1) { | |||||
| size_t used; | |||||
| char c; | |||||
| while ((c = path[++index_in_path]) != '\0') { | |||||
| if (c == '\\') | |||||
| last_backslash = index_in_path; | |||||
| } | |||||
| path = (char*)malloc(size); | |||||
| if (!path) { | |||||
| errno = ENOMEM; | |||||
| return NULL; | |||||
| // we are assuming there are some backslashes | |||||
| path[last_backslash+1] = '\0'; | |||||
| return path; | |||||
| } | } | ||||
| #else | |||||
| ssize_t size = 512, i, n; | |||||
| char *path, *temp; | |||||
| used = readlink("/proc/self/exe", path, size); | |||||
| while (1) { | |||||
| size_t used; | |||||
| if (used == -1) { | |||||
| const int saved_errno = errno; | |||||
| free(path); | |||||
| errno = saved_errno; | |||||
| return NULL; | |||||
| } else | |||||
| if (used < 1) { | |||||
| path = (char*)malloc(size); | |||||
| if (!path) { | |||||
| errno = ENOMEM; | |||||
| return NULL; | |||||
| } | |||||
| used = readlink("/proc/self/exe", path, size); | |||||
| if (used == -1) { | |||||
| const int saved_errno = errno; | |||||
| free(path); | free(path); | ||||
| errno = EIO; | |||||
| errno = saved_errno; | |||||
| return NULL; | return NULL; | ||||
| } else | |||||
| if (used < 1) { | |||||
| free(path); | |||||
| errno = EIO; | |||||
| return NULL; | |||||
| } | |||||
| if ((size_t)used >= size) { | |||||
| free(path); | |||||
| size = (size | 2047) + 2049; | |||||
| continue; | |||||
| } | } | ||||
| if ((size_t)used >= size) { | |||||
| free(path); | |||||
| size = (size | 2047) + 2049; | |||||
| continue; | |||||
| size = (size_t)used; | |||||
| break; | |||||
| } | } | ||||
| size = (size_t)used; | |||||
| break; | |||||
| } | |||||
| /* Find final slash. */ | |||||
| n = 0; | |||||
| for (i = 0; i < size; i++) | |||||
| if (path[i] == '/') | |||||
| n = i; | |||||
| /* Optimize allocated size, | |||||
| ensuring there is room for | |||||
| a final slash and a | |||||
| string-terminating '\0', */ | |||||
| temp = path; | |||||
| path = (char*)realloc(temp, n + 2); | |||||
| if (!path) { | |||||
| free(temp); | |||||
| errno = ENOMEM; | |||||
| return NULL; | |||||
| } | |||||
| /* Find final slash. */ | |||||
| n = 0; | |||||
| for (i = 0; i < size; i++) | |||||
| if (path[i] == '/') | |||||
| n = i; | |||||
| /* Optimize allocated size, | |||||
| ensuring there is room for | |||||
| a final slash and a | |||||
| string-terminating '\0', */ | |||||
| temp = path; | |||||
| path = (char*)realloc(temp, n + 2); | |||||
| if (!path) { | |||||
| free(temp); | |||||
| errno = ENOMEM; | |||||
| return NULL; | |||||
| } | |||||
| /* and properly trim and terminate the path string. */ | |||||
| path[n+0] = '/'; | |||||
| path[n+1] = '\0'; | |||||
| /* and properly trim and terminate the path string. */ | |||||
| path[n+0] = '/'; | |||||
| path[n+1] = '\0'; | |||||
| return path; | |||||
| return path; | |||||
| #endif | #endif | ||||
| } | |||||
| } | } | ||||
| @@ -1,49 +0,0 @@ | |||||
| #pragma once | |||||
| #define _CRT_SECURE_NO_WARNINGS | |||||
| #define _CRT_SECURE_NO_DEPRECATE | |||||
| #include <stdlib.h> | |||||
| #include <stdio.h> | |||||
| #include <time.h> | |||||
| #include <string.h> | |||||
| #include <cmath> | |||||
| #include <ctype.h> | |||||
| #include <stdarg.h> | |||||
| #include <functional> | |||||
| #ifdef _MSC_VER | |||||
| # include <direct.h> | |||||
| # include <windows.h> | |||||
| #else | |||||
| # include <unistd.h> | |||||
| # include <signal.h> | |||||
| #endif | |||||
| #undef _CRT_SECURE_NO_DEPRECATE | |||||
| #undef _CRT_SECURE_NO_WARNINGS | |||||
| #include "./ftb/macros.hpp" | |||||
| #include "./ftb/profiler.hpp" | |||||
| #include "./ftb/hashmap.hpp" | |||||
| namespace Slime { | |||||
| # include "./defines.cpp" | |||||
| # include "./platform.cpp" | |||||
| # include "./structs.cpp" | |||||
| # include "./forward_decls.cpp" | |||||
| # include "./memory.cpp" | |||||
| # include "./gc.cpp" | |||||
| # include "./lisp_object.cpp" | |||||
| # include "./error.cpp" | |||||
| # include "./io.cpp" | |||||
| # include "./env.cpp" | |||||
| # include "./parse.cpp" | |||||
| # include "./eval.cpp" | |||||
| # include "./visualization.cpp" | |||||
| # include "./docgeneration.cpp" | |||||
| # include "./built_ins.cpp" | |||||
| # include "./testing.cpp" | |||||
| # include "./undefines.cpp" | |||||
| } | |||||
| @@ -1,165 +1,144 @@ | |||||
| struct Lisp_Object; | |||||
| struct String; | |||||
| struct Environment; | |||||
| // ARRAY LISTS | |||||
| define_array_list(Lisp_Object*, Lisp_Object); | |||||
| define_array_list(Environment*, Environment); | |||||
| define_array_list(String*, String); | |||||
| define_array_list(int, Int); | |||||
| define_array_list(void*, Void_Ptr); | |||||
| // HASH MAPS | |||||
| define_hash_map(char*, String); | |||||
| define_hash_map(Lisp_Object*, Lisp_Obj); | |||||
| define_hash_map(void*, Void_Ptr); | |||||
| #define for_str_hash_map(hm) __for_hm_generator(char*, hm) | |||||
| #define for_ptr_hash_map(hm) __for_hm_generator(void*, hm) | |||||
| #define for_lisp_obj_hash_map(hm) __for_hm_generator(Lisp_Object*, hm) | |||||
| // STRUCTS | |||||
| enum struct Thread_Type { | |||||
| Main, | |||||
| GarbageCollection | |||||
| }; | |||||
| enum struct Lisp_Object_Type { | |||||
| Nil, | |||||
| T, | |||||
| Symbol, | |||||
| Keyword, | |||||
| Number, | |||||
| String, | |||||
| Pair, | |||||
| Vector, | |||||
| Continuation, | |||||
| Pointer, | |||||
| HashMap, | |||||
| // OwningPointer, | |||||
| Function, | |||||
| CFunction, | |||||
| }; | |||||
| typedef uint64_t u64; | |||||
| enum class Lisp_Object_Flags : u64 | |||||
| { | |||||
| // bits 1 to 5 (including) will be reserved for the type | |||||
| Already_Garbage_Collected = 1 << 5, | |||||
| Under_Construction = 1 << 6, | |||||
| }; | |||||
| enum struct Function_Type { | |||||
| Lambda, | |||||
| Special_Lambda, | |||||
| Macro | |||||
| }; | |||||
| enum struct Log_Level { | |||||
| None, | |||||
| Critical, | |||||
| Warning, | |||||
| Info, | |||||
| Debug, | |||||
| }; | |||||
| struct Continuation { | |||||
| Lisp_Object_Array_List* call_stack; | |||||
| Environment_Array_List* envi_stack; | |||||
| }; | |||||
| struct String { | |||||
| int length; | |||||
| char data; | |||||
| }; | |||||
| struct Source_Code_Location { | |||||
| String* file; | |||||
| int line; | |||||
| int column; | |||||
| }; | |||||
| struct Symbol { | |||||
| String* identifier; | |||||
| u64 hash; | |||||
| }; | |||||
| struct Keyword { | |||||
| String* identifier; | |||||
| u64 hash; | |||||
| }; | |||||
| struct Pair { | |||||
| Lisp_Object* first; | |||||
| Lisp_Object* rest; | |||||
| }; | |||||
| struct Vector { | |||||
| int length; | |||||
| Lisp_Object* data; | |||||
| }; | |||||
| struct Positional_Arguments { | |||||
| Lisp_Object_Array_List symbols; | |||||
| }; | |||||
| struct Keyword_Arguments { | |||||
| // Array of Pointers to Lisp_Object<Keyword> | |||||
| Lisp_Object_Array_List keywords; | |||||
| // NOTE(Felix): values[i] will be nullptr if no defalut value was | |||||
| // declared for key identifiers[i] | |||||
| Lisp_Object_Array_List values; | |||||
| }; | |||||
| struct Arguments { | |||||
| Positional_Arguments positional; | |||||
| Keyword_Arguments keyword; | |||||
| // NOTE(Felix): rest_argument will be nullptr if no rest argument | |||||
| // is declared otherwise its a symbol | |||||
| Lisp_Object* rest; | |||||
| }; | |||||
| struct Environment { | |||||
| Environment_Array_List parents; | |||||
| Void_Ptr_Hash_Map* hm; | |||||
| }; | |||||
| struct Function { | |||||
| Function_Type type; | |||||
| Arguments args; | |||||
| Lisp_Object* body; // maybe implicit begin | |||||
| Environment* parent_environment; // we are doing closures now!! | |||||
| }; | |||||
| struct cFunction { | |||||
| std::function<Lisp_Object* ()> body; | |||||
| Arguments args; | |||||
| bool is_special_form; | |||||
| }; | |||||
| struct Lisp_Object { | |||||
| Source_Code_Location* sourceCodeLocation; | |||||
| u64 flags; | |||||
| Lisp_Object* userType; // keyword | |||||
| String* docstring; | |||||
| union { | |||||
| Symbol symbol; // used for symbols and keywords | |||||
| double number; | |||||
| String* string; | |||||
| Pair pair; | |||||
| Vector vector; | |||||
| Function function; | |||||
| cFunction* cFunction; | |||||
| void* pointer; | |||||
| Continuation continuation; | |||||
| Lisp_Obj_Hash_Map* hashMap; | |||||
| } value; | |||||
| }; | |||||
| struct Error { | |||||
| Lisp_Object* position; | |||||
| // type has to be a keyword | |||||
| Lisp_Object* type; | |||||
| String* message; | |||||
| }; | |||||
| namespace Slime { | |||||
| struct Lisp_Object; | |||||
| struct String; | |||||
| struct Environment; | |||||
| enum struct Thread_Type { | |||||
| Main, | |||||
| GarbageCollection | |||||
| }; | |||||
| enum struct Lisp_Object_Type { | |||||
| Nil, | |||||
| T, | |||||
| Symbol, | |||||
| Keyword, | |||||
| Number, | |||||
| String, | |||||
| Pair, | |||||
| Vector, | |||||
| Continuation, | |||||
| Pointer, | |||||
| HashMap, | |||||
| // OwningPointer, | |||||
| Function, | |||||
| CFunction, | |||||
| }; | |||||
| enum class Lisp_Object_Flags | |||||
| { | |||||
| // bits 1 to 5 (including) will be reserved for the type | |||||
| Already_Garbage_Collected = 1 << 5, | |||||
| Under_Construction = 1 << 6, | |||||
| }; | |||||
| enum struct Function_Type { | |||||
| Lambda, | |||||
| Macro | |||||
| }; | |||||
| enum struct Log_Level { | |||||
| None, | |||||
| Critical, | |||||
| Warning, | |||||
| Info, | |||||
| Debug, | |||||
| }; | |||||
| struct Continuation { | |||||
| Array_List<Lisp_Object*> call_stack; | |||||
| Array_List<Environment*> envi_stack; | |||||
| }; | |||||
| struct String { | |||||
| int length; | |||||
| char data; | |||||
| }; | |||||
| struct Source_Code_Location { | |||||
| String* file; | |||||
| int line; | |||||
| int column; | |||||
| }; | |||||
| struct Pair { | |||||
| Lisp_Object* first; | |||||
| Lisp_Object* rest; | |||||
| }; | |||||
| struct Vector { | |||||
| int length; | |||||
| Lisp_Object* data; | |||||
| }; | |||||
| struct Positional_Arguments { | |||||
| Array_List<Lisp_Object*> symbols; | |||||
| }; | |||||
| struct Keyword_Arguments { | |||||
| // Array of Pointers to Lisp_Object<Keyword> | |||||
| Array_List<Lisp_Object*> keywords; | |||||
| // NOTE(Felix): values[i] will be nullptr if no defalut value was | |||||
| // declared for key identifiers[i] | |||||
| Array_List<Lisp_Object*> values; | |||||
| }; | |||||
| struct Arguments { | |||||
| Positional_Arguments positional; | |||||
| Keyword_Arguments keyword; | |||||
| // NOTE(Felix): rest_argument will be nullptr if no rest argument | |||||
| // is declared otherwise its a symbol | |||||
| Lisp_Object* rest; | |||||
| }; | |||||
| struct Environment { | |||||
| Array_List<Environment*> parents; | |||||
| Hash_Map<void*, Lisp_Object*> hm; | |||||
| ~Environment() { | |||||
| parents.~Array_List(); | |||||
| hm.~Hash_Map(); | |||||
| } | |||||
| }; | |||||
| struct Function { | |||||
| Function_Type type; | |||||
| Arguments args; | |||||
| Lisp_Object* body; // maybe implicit begin | |||||
| Environment* parent_environment; // we are doing closures now!! | |||||
| }; | |||||
| struct cFunction { | |||||
| Lisp_Object* (*body)(); | |||||
| Arguments args; | |||||
| bool is_special_form; | |||||
| }; | |||||
| struct Lisp_Object { | |||||
| Source_Code_Location* sourceCodeLocation; | |||||
| u64 flags; | |||||
| Lisp_Object* userType; // keyword | |||||
| String* docstring; | |||||
| union value { | |||||
| String* symbol; // used for symbols and keywords | |||||
| double number; | |||||
| String* string; | |||||
| Pair pair; | |||||
| Vector vector; | |||||
| Function* function; | |||||
| cFunction* cFunction; | |||||
| void* pointer; | |||||
| Continuation* continuation; | |||||
| Hash_Map<Lisp_Object*, Lisp_Object*>* hashMap; | |||||
| ~value() {} | |||||
| } value; | |||||
| ~Lisp_Object(); | |||||
| }; | |||||
| struct Error { | |||||
| Lisp_Object* position; | |||||
| // type has to be a keyword | |||||
| Lisp_Object* type; | |||||
| String* message; | |||||
| }; | |||||
| } | |||||
| @@ -0,0 +1,11 @@ | |||||
| echo "" | |||||
| echo "----------------------" | |||||
| echo " compiling libslime " | |||||
| echo "----------------------" | |||||
| echo "" | |||||
| clang++ --std=c++17 \ | |||||
| main.cpp -o main \ | |||||
| -I../../3rd/ \ | |||||
| -I../../src/ \ | |||||
| -I../../include/ \ | |||||
| @@ -0,0 +1,6 @@ | |||||
| #include <libslime.cpp> | |||||
| int main() { | |||||
| int res = Slime::run_all_tests(); | |||||
| return res ? 0 : 1; | |||||
| } | |||||
| @@ -0,0 +1,21 @@ | |||||
| echo "" | |||||
| echo "----------------------" | |||||
| echo " compiling libslime " | |||||
| echo "----------------------" | |||||
| echo "" | |||||
| clang++ --std=c++17 \ | |||||
| ../../src/libslime.cpp -c -o libslime.o \ | |||||
| -I../../3rd/ \ | |||||
| -I../../src/ | |||||
| echo "" | |||||
| echo "----------------------" | |||||
| echo " compiling main " | |||||
| echo "----------------------" | |||||
| echo "" | |||||
| clang++ --std=c++17 \ | |||||
| main.cpp -o main libslime.o \ | |||||
| -I../../include/ \ | |||||
| -I../../3rd/ | |||||
| @@ -0,0 +1,6 @@ | |||||
| #include <libslime.h> | |||||
| int main() { | |||||
| int res = Slime::run_all_tests(); | |||||
| return res ? 0 : 1; | |||||
| } | |||||